Module: wine Branch: master Commit: 68bfb39767b9f12e48c6d8254210997e0d78ad91 URL: http://source.winehq.org/git/wine.git/?a=commit;h=68bfb39767b9f12e48c6d82542...
Author: Misha Koshelev mk144210@bcm.edu Date: Thu May 17 00:42:13 2007 -0500
msi/tests: Add test for empty MsiGetProductInfo parameters not referencing default registry values.
---
dlls/msi/tests/msi.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 62 insertions(+), 0 deletions(-)
diff --git a/dlls/msi/tests/msi.c b/dlls/msi/tests/msi.c index 3b98d53..81a5b73 100644 --- a/dlls/msi/tests/msi.c +++ b/dlls/msi/tests/msi.c @@ -81,6 +81,9 @@ static void test_null(void) { MSIHANDLE hpkg; UINT r; + HKEY hkey; + DWORD dwType, cbData; + LPBYTE lpData = NULL;
r = pMsiOpenPackageExW(NULL, 0, &hpkg); ok( r == ERROR_INVALID_PARAMETER,"wrong error\n"); @@ -102,6 +105,65 @@ static void test_null(void)
r = MsiConfigureFeatureA("{00000000-0000-0000-0000-000000000000}", "foo", INSTALLSTATE_DEFAULT); ok( r == ERROR_UNKNOWN_PRODUCT, "wrong error %d\n", r); + + /* make sure empty string to MsiGetProductInfo is not a handle to default registry value, saving and restoring the + * necessary registry values */ + + /* empty product string */ + r = RegOpenKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", &hkey); + ok( r == ERROR_SUCCESS, "wrong error %d\n", r); + + r = RegQueryValueExA(hkey, NULL, 0, &dwType, lpData, &cbData); + ok ( r == ERROR_SUCCESS || r == ERROR_FILE_NOT_FOUND, "wrong error %d\n", r); + if ( r == ERROR_SUCCESS ) + { + lpData = HeapAlloc(GetProcessHeap(), 0, cbData); + if (!lpData) + skip("Out of memory\n"); + else + { + r = RegQueryValueExA(hkey, NULL, 0, &dwType, lpData, &cbData); + ok ( r == ERROR_SUCCESS, "wrong error %d\n", r); + } + } + + r = RegSetValueA(hkey, NULL, REG_SZ, "test", strlen("test")); + ok( r == ERROR_SUCCESS, "wrong error %d\n", r); + + r = MsiGetProductInfoA("", "", NULL, NULL); + todo_wine ok ( r == ERROR_INVALID_PARAMETER, "wrong error %d\n", r); + + if (lpData) + { + r = RegSetValueExA(hkey, NULL, 0, dwType, lpData, cbData); + ok ( r == ERROR_SUCCESS, "wrong error %d\n", r); + + HeapFree(GetProcessHeap(), 0, lpData); + } + else + { + r = RegDeleteValueA(hkey, NULL); + ok ( r == ERROR_SUCCESS, "wrong error %d\n", r); + } + + r = RegCloseKey(hkey); + ok( r == ERROR_SUCCESS, "wrong error %d\n", r); + + /* empty attribute */ + r = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{F1C3AF50-8B56-4A69-A00C-00773FE42F30}", &hkey); + ok( r == ERROR_SUCCESS, "wrong error %d\n", r); + + r = RegSetValueA(hkey, NULL, REG_SZ, "test", strlen("test")); + ok( r == ERROR_SUCCESS, "wrong error %d\n", r); + + r = MsiGetProductInfoA("{F1C3AF50-8B56-4A69-A00C-00773FE42F30}", "", NULL, NULL); + todo_wine ok ( r == ERROR_UNKNOWN_PROPERTY, "wrong error %d\n", r); + + r = RegCloseKey(hkey); + ok( r == ERROR_SUCCESS, "wrong error %d\n", r); + + r = RegDeleteKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{F1C3AF50-8B56-4A69-A00C-00773FE42F30}"); + ok( r == ERROR_SUCCESS, "wrong error %d\n", r); }
static void test_getcomponentpath(void)