[PATCH v2 1/2] msi/tests: Test for ErrorControl-flag
Andreas Maier
andy1.m at gmx.de
Fri Jun 3 12:03:57 CDT 2016
This test expands a already existing test.
A Service is installed with the special ErrorControl-flag
0x8000 (msidbServiceInstallErrorControlVital).
The flag should be filtered out be msi. The test checks,
if the service is created without this flag.
Besides it fixes a bug in test_delete_services.
TestService was not deleted after testing.
Signed-off-by: Andreas Maier <andy1.m at gmx.de>
---
dlls/msi/tests/action.c | 58 ++++++++++++++++++++++++++++++++++++-------------
1 file changed, 43 insertions(+), 15 deletions(-)
diff --git a/dlls/msi/tests/action.c b/dlls/msi/tests/action.c
index 243e61b..c281d3b 100644
--- a/dlls/msi/tests/action.c
+++ b/dlls/msi/tests/action.c
@@ -234,7 +234,7 @@ static const char service_install2_dat[] =
"LoadOrderGroup\tDependencies\tStartName\tPassword\tArguments\tComponent_\tDescription\n"
"s72\ts255\tL255\ti4\ti4\ti4\tS255\tS255\tS255\tS255\tS255\ts72\tL255\n"
"ServiceInstall\tServiceInstall\n"
- "TestService\tTestService\tTestService\t2\t3\t0\t\t\tTestService\t\t\tservice_comp\t\n"
+ "TestService\tTestService\tTestService\t2\t3\t32768\t\t\tTestService\t\t\tservice_comp\t\n"
"TestService4\tTestService4\tTestService4\t2\t3\t0\t\t\tTestService4\t\t\tservice_comp3\t\n";
static const char service_control_dat[] =
@@ -5427,6 +5427,30 @@ static void test_start_stop_services(void)
DeleteFileA(msifile);
}
+static void delete_TestService(void)
+{
+ BOOL ret;
+ SC_HANDLE manager, service;
+
+ manager = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+ ok(manager != NULL, "can't open service manager\n");
+ if (!manager)
+ return;
+
+ service = OpenServiceA(manager, "TestService", GENERIC_ALL);
+ ok(service != NULL, "TestService doesn't exist\n");
+
+ if (service)
+ {
+ ret = DeleteService( service );
+ ok( ret, "failed to delete service %u\n", GetLastError() );
+
+ CloseServiceHandle(service);
+ }
+ CloseServiceHandle(manager);
+
+}
+
static void test_delete_services(void)
{
UINT r;
@@ -5492,6 +5516,7 @@ static void test_delete_services(void)
ok(delete_pf("msitest", FALSE), "Directory not created\n");
error:
+ delete_TestService();
delete_test_files();
DeleteFileA(msifile);
}
@@ -5500,7 +5525,9 @@ static void test_install_services(void)
{
UINT r;
SC_HANDLE manager, service;
- BOOL ret;
+ LONG res;
+ HKEY hKey;
+ DWORD err_control, err_controlsize, err_controltype;
if (is_process_limited())
{
@@ -5533,6 +5560,19 @@ static void test_install_services(void)
ok(service == NULL, "TestService4 installed\n");
CloseServiceHandle(manager);
+ res = RegOpenKeyA(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\TestService", &hKey);
+ ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
+
+ if (res == ERROR_SUCCESS)
+ {
+ err_control = 0xBEEF;
+ err_controltype = REG_DWORD;
+ err_controlsize = sizeof(err_control);
+ res = RegQueryValueExA(hKey, "ErrorControl", NULL, &err_controltype, (LPBYTE)&err_control, &err_controlsize);
+ ok(err_control == 0, "TestService.ErrorControl wrong, expected 0, got %u\n", err_control);
+ RegCloseKey(hKey);
+ }
+
r = MsiInstallProductA(msifile, "REMOVE=ALL");
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
@@ -5550,20 +5590,8 @@ static void test_install_services(void)
ok(delete_pf("msitest\\service2.exe", TRUE), "File not installed\n");
ok(delete_pf("msitest", FALSE), "Directory not created\n");
- manager = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);
- ok(manager != NULL, "can't open service manager\n");
- if (!manager) goto error;
-
- service = OpenServiceA(manager, "TestService", GENERIC_ALL);
- ok(service != NULL, "TestService doesn't exist\n");
-
- ret = DeleteService( service );
- ok( ret, "failed to delete service %u\n", GetLastError() );
-
- CloseServiceHandle(service);
- CloseServiceHandle(manager);
-
error:
+ delete_TestService();
delete_test_files();
DeleteFileA(msifile);
}
--
2.8.1
More information about the wine-patches
mailing list