Alexandre Julliard : ntdll/tests: Fix a couple of tests failing on NT4.

Alexandre Julliard julliard at winehq.org
Fri Sep 19 07:15:04 CDT 2008


Module: wine
Branch: master
Commit: 42e6d94784cd403be77c6bd25b88d875a084438f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=42e6d94784cd403be77c6bd25b88d875a084438f

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Sep 19 14:03:47 2008 +0200

ntdll/tests: Fix a couple of tests failing on NT4.

---

 dlls/ntdll/tests/om.c  |   71 +++++++++++++++++++++++++++---------------------
 dlls/ntdll/tests/reg.c |    2 +-
 2 files changed, 41 insertions(+), 32 deletions(-)

diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c
index d211ea0..1999da6 100644
--- a/dlls/ntdll/tests/om.c
+++ b/dlls/ntdll/tests/om.c
@@ -285,6 +285,7 @@ static void test_directory(void)
     UNICODE_STRING str;
     OBJECT_ATTRIBUTES attr;
     HANDLE dir, dir1, h;
+    BOOL is_nt4;
 
     /* No name and/or no attributes */
     status = pNtCreateDirectoryObject(NULL, DIRECTORY_QUERY, &attr);
@@ -335,14 +336,18 @@ static void test_directory(void)
     pRtlCreateUnicodeStringFromAsciiz(&str, "\\BaseNamedObjects\\Local");
     InitializeObjectAttributes(&attr, &str, 0, 0, NULL);
     status = pNtOpenSymbolicLinkObject(&dir, SYMBOLIC_LINK_QUERY, &attr);
-    ok(status == STATUS_SUCCESS, "Failed to open SymbolicLink(%08x)\n", status);
-    pRtlFreeUnicodeString(&str);
-    InitializeObjectAttributes(&attr, &str, 0, dir, NULL);
-    pRtlCreateUnicodeStringFromAsciiz(&str, "one more level");
-    DIR_TEST_CREATE_FAILURE(&h, STATUS_OBJECT_TYPE_MISMATCH)
-    pRtlFreeUnicodeString(&str);
-    pNtClose(h);
-    pNtClose(dir);
+    is_nt4 = (status == STATUS_OBJECT_NAME_NOT_FOUND);  /* nt4 doesn't have Local\\ symlink */
+    if (!is_nt4)
+    {
+        ok(status == STATUS_SUCCESS, "Failed to open SymbolicLink(%08x)\n", status);
+        pRtlFreeUnicodeString(&str);
+        InitializeObjectAttributes(&attr, &str, 0, dir, NULL);
+        pRtlCreateUnicodeStringFromAsciiz(&str, "one more level");
+        DIR_TEST_CREATE_FAILURE(&h, STATUS_OBJECT_TYPE_MISMATCH)
+        pRtlFreeUnicodeString(&str);
+        pNtClose(h);
+        pNtClose(dir);
+    }
 
     pRtlCreateUnicodeStringFromAsciiz(&str, "\\BaseNamedObjects");
     InitializeObjectAttributes(&attr, &str, 0, 0, NULL);
@@ -393,22 +398,23 @@ static void test_directory(void)
 
     pNtClose(dir);
 
-    InitializeObjectAttributes(&attr, &str, 0, 0, NULL);
-    pRtlCreateUnicodeStringFromAsciiz(&str, "\\BaseNamedObjects\\Global\\om.c-test");
-    DIR_TEST_CREATE_SUCCESS(&dir)
-    pRtlFreeUnicodeString(&str);
-    pRtlCreateUnicodeStringFromAsciiz(&str, "\\BaseNamedObjects\\Local\\om.c-test\\one more level");
-    DIR_TEST_CREATE_SUCCESS(&h)
-    pRtlFreeUnicodeString(&str);
-    pNtClose(h);
-    InitializeObjectAttributes(&attr, &str, 0, dir, NULL);
-    pRtlCreateUnicodeStringFromAsciiz(&str, "one more level");
-    DIR_TEST_CREATE_SUCCESS(&dir)
-    pRtlFreeUnicodeString(&str);
-    pNtClose(h);
-
-    pNtClose(dir);
-
+    if (!is_nt4)
+    {
+        InitializeObjectAttributes(&attr, &str, 0, 0, NULL);
+        pRtlCreateUnicodeStringFromAsciiz(&str, "\\BaseNamedObjects\\Global\\om.c-test");
+        DIR_TEST_CREATE_SUCCESS(&dir)
+        pRtlFreeUnicodeString(&str);
+        pRtlCreateUnicodeStringFromAsciiz(&str, "\\BaseNamedObjects\\Local\\om.c-test\\one more level");
+        DIR_TEST_CREATE_SUCCESS(&h)
+        pRtlFreeUnicodeString(&str);
+        pNtClose(h);
+        InitializeObjectAttributes(&attr, &str, 0, dir, NULL);
+        pRtlCreateUnicodeStringFromAsciiz(&str, "one more level");
+        DIR_TEST_CREATE_SUCCESS(&dir)
+        pRtlFreeUnicodeString(&str);
+        pNtClose(h);
+        pNtClose(dir);
+    }
 
     /* Create other objects using RootDirectory */
 
@@ -462,9 +468,6 @@ static void test_directory(void)
 #define SYMLNK_TEST_CREATE_SUCCESS(h) \
     status = pNtCreateSymbolicLinkObject(h, SYMBOLIC_LINK_QUERY, &attr, &target); \
     ok(status == STATUS_SUCCESS, "Failed to create SymbolicLink(%08x)\n", status);
-#define SYMLNK_TEST_OPEN_SUCCESS(h) \
-    status = pNtOpenSymbolicLinkObject(h, SYMBOLIC_LINK_QUERY, &attr); \
-    ok(status == STATUS_SUCCESS, "Failed to open SymbolicLink(%08x)\n", status);
 
 static void test_symboliclink(void)
 {
@@ -518,18 +521,24 @@ static void test_symboliclink(void)
 
 
     /* Compaund test */
-    pRtlCreateUnicodeStringFromAsciiz(&str, "\\BaseNamedObjects");
-    DIR_TEST_OPEN_SUCCESS(&dir)
+    pRtlCreateUnicodeStringFromAsciiz(&str, "\\BaseNamedObjects\\Local");
+    status = pNtOpenDirectoryObject(&dir, DIRECTORY_QUERY, &attr);
+    if (status == STATUS_OBJECT_NAME_NOT_FOUND)  /* nt4 doesn't have Local\\ */
+    {
+        pRtlCreateUnicodeStringFromAsciiz(&str, "\\BaseNamedObjects");
+        status = pNtOpenDirectoryObject(&dir, DIRECTORY_QUERY, &attr);
+    }
+    ok(status == STATUS_SUCCESS, "Failed to open Directory(%08x)\n", status);
     pRtlFreeUnicodeString(&str);
 
     InitializeObjectAttributes(&attr, &str, 0, dir, NULL);
-    pRtlCreateUnicodeStringFromAsciiz(&str, "Local\\test-link");
+    pRtlCreateUnicodeStringFromAsciiz(&str, "test-link");
     pRtlCreateUnicodeStringFromAsciiz(&target, "\\DosDevices");
     SYMLNK_TEST_CREATE_SUCCESS(&link)
     pRtlFreeUnicodeString(&str);
     pRtlFreeUnicodeString(&target);
 
-    pRtlCreateUnicodeStringFromAsciiz(&str, "Local\\test-link\\PIPE");
+    pRtlCreateUnicodeStringFromAsciiz(&str, "test-link\\PIPE");
     status = pNtOpenFile(&h, GENERIC_READ, &attr, &iosb, FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN);
     todo_wine ok(status == STATUS_SUCCESS, "Failed to open NamedPipe(%08x)\n", status);
     pRtlFreeUnicodeString(&str);
diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c
index 94f2a0b..70864b6 100644
--- a/dlls/ntdll/tests/reg.c
+++ b/dlls/ntdll/tests/reg.c
@@ -575,7 +575,7 @@ static void test_RtlpNtQueryValueKey(void)
 
 START_TEST(reg)
 {
-    static const WCHAR winetest[] = {'\\','W','i','n','e','T','e','s','t','\\',0};
+    static const WCHAR winetest[] = {'\\','W','i','n','e','T','e','s','t',0};
     if(!InitFunctionPtrs())
         return;
     pRtlFormatCurrentUserKeyPath(&winetestpath);




More information about the wine-cvs mailing list