[1/2] setupapi/tests: Skip SetupGetInfInformation tests if the user doesn't have admin rights.

Hans Leidekker hans at codeweavers.com
Tue Dec 20 05:08:34 CST 2016


Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 dlls/setupapi/tests/query.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/dlls/setupapi/tests/query.c b/dlls/setupapi/tests/query.c
index 17c24bf..6b6d1bd 100644
--- a/dlls/setupapi/tests/query.c
+++ b/dlls/setupapi/tests/query.c
@@ -99,13 +99,16 @@ static const char inf_data6[] =
     "[CopyAlways.Windir.Files]\n"
     "WindowsCodecs.dll\n";
 
-static void create_inf_file(LPSTR filename, const char *data, DWORD size)
+static BOOL create_inf_file(LPSTR filename, const char *data, DWORD size)
 {
+    BOOL ret;
     DWORD dwNumberOfBytesWritten;
     HANDLE hf = CreateFileA(filename, GENERIC_WRITE, 0, NULL,
                             CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-    WriteFile(hf, data, size, &dwNumberOfBytesWritten, NULL);
+    if (hf == INVALID_HANDLE_VALUE) return FALSE;
+    ret = WriteFile(hf, data, size, &dwNumberOfBytesWritten, NULL);
     CloseHandle(hf);
+    return ret;
 }
 
 static BOOL check_info_filename(PSP_INF_INFORMATION info, LPSTR test)
@@ -258,7 +261,13 @@ static void test_SetupGetInfInformation(void)
     lstrcpyA(inf_two, WIN_DIR);
     lstrcatA(inf_two, "\\system32\\");
     lstrcatA(inf_two, "test.inf");
-    create_inf_file(inf_two, inf_data1, sizeof(inf_data1) - 1);
+    ret = create_inf_file(inf_two, inf_data1, sizeof(inf_data1) - 1);
+    if (!ret && GetLastError() == ERROR_ACCESS_DENIED)
+    {
+        skip("need admin rights\n");
+        goto done;
+    }
+    ok(ret, "can't create inf file %u\n", GetLastError());
 
     HeapFree(GetProcessHeap(), 0, info);
     info = alloc_inf_info("test.inf", INFINFO_DEFAULT_SEARCH, &size);
@@ -291,8 +300,8 @@ static void test_SetupGetInfInformation(void)
     ok(ret == TRUE, "Expected SetupGetInfInformation to succeed\n");
     ok(check_info_filename(info, revfile), "Expected returned filename to be equal\n");
 
+done:
     HeapFree(GetProcessHeap(), 0, info);
-
     DeleteFileA(inf_filename);
     DeleteFileA(inf_one);
     DeleteFileA(inf_two);
-- 
2.1.4




More information about the wine-patches mailing list