Akihiro Sagawa : ntdll/tests: Expand path name tests with path + device name.

Alexandre Julliard julliard at winehq.org
Mon Jun 21 16:14:56 CDT 2021


Module: wine
Branch: master
Commit: 64c4582a40a512181bddd8d7e02f25f343049c7f
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=64c4582a40a512181bddd8d7e02f25f343049c7f

Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date:   Sat Jun 19 18:25:33 2021 +0900

ntdll/tests: Expand path name tests with path + device name.

Signed-off-by: Akihiro Sagawa <sagawa.aki at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/tests/path.c | 44 +++++++++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 19 deletions(-)

diff --git a/dlls/ntdll/tests/path.c b/dlls/ntdll/tests/path.c
index f2588c0bd98..74ad971392c 100644
--- a/dlls/ntdll/tests/path.c
+++ b/dlls/ntdll/tests/path.c
@@ -317,6 +317,11 @@ static void test_RtlGetFullPathName_U(void)
             { "...",                         "C:\\windows\\",    NULL},
             { "./foo",                       "C:\\windows\\foo", "foo"},
             { "foo/..",                      "C:\\windows",      "windows"},
+            { "\\windows\\nul",              "\\\\.\\nul",       NULL},
+            { "C:\\nonexistent\\nul",        "\\\\.\\nul",       NULL},
+            { "C:\\con\\con",                "\\\\.\\con",       NULL},
+            { "C:NUL.",                      "\\\\.\\NUL",       NULL},
+            { "C:NUL",                       "\\\\.\\NUL",       NULL},
             { "AUX",                         "\\\\.\\AUX",       NULL},
             { "COM1",                        "\\\\.\\COM1",      NULL},
             { "?<>*\"|:",                    "C:\\windows\\?<>*\"|:", "?<>*\"|:"},
@@ -471,6 +476,9 @@ static void test_RtlDosPathNameToNtPathName_U(void)
         {L"...",            L"\\??\\C:\\windows\\",         -1},
         {L"./foo",          L"\\??\\C:\\windows\\foo",      15},
         {L"foo/..",         L"\\??\\C:\\windows",            7},
+        {L"\\windows\\nul", L"\\??\\nul",                   -1},
+        {L"C:NUL.",         L"\\??\\NUL",                   -1},
+        {L"C:NUL",          L"\\??\\NUL",                   -1},
         {L"AUX" ,           L"\\??\\AUX",                   -1},
         {L"COM1" ,          L"\\??\\COM1",                  -1},
         {L"?<>*\"|:",       L"\\??\\C:\\windows\\?<>*\"|:", 15},
@@ -551,32 +559,30 @@ static void test_RtlDosPathNameToNtPathName_U(void)
         {L"cOnOuT$",        L"\\??\\cOnOuT$",               -1, L"\\??\\C:\\windows\\cOnOuT$" /* winxp */ },
         {L"CONERR$",        L"\\??\\C:\\windows\\CONERR$",  15},
     };
+    static const WCHAR *error_paths[] = {
+        NULL, L"", L" ", L"C:\\nonexistent\\nul", L"C:\\con\\con"
+    };
 
     GetCurrentDirectoryA(sizeof(curdir), curdir);
     SetCurrentDirectoryA("C:\\windows\\");
 
-    ret = pRtlDosPathNameToNtPathName_U(NULL, &nameW, &file_part, NULL);
-    ok(!ret, "Got %d.\n", ret);
-
-    ret = pRtlDosPathNameToNtPathName_U(L"", &nameW, &file_part, NULL);
-    ok(!ret, "Got %d.\n", ret);
-
-    ret = pRtlDosPathNameToNtPathName_U(L" ", &nameW, &file_part, NULL);
-    ok(!ret, "Got %d.\n", ret);
-
-    if (pRtlDosPathNameToNtPathName_U_WithStatus)
+    for (i = 0; i < ARRAY_SIZE(error_paths); ++i)
     {
-        status = pRtlDosPathNameToNtPathName_U_WithStatus(NULL, &nameW, &file_part, NULL);
-        ok(status == STATUS_OBJECT_NAME_INVALID || status == STATUS_OBJECT_PATH_NOT_FOUND /* 2003 */,
-                "Got status %#x.\n", status);
+        winetest_push_context("%s", debugstr_w(error_paths[i]));
 
-        status = pRtlDosPathNameToNtPathName_U_WithStatus(L"", &nameW, &file_part, NULL);
-        ok(status == STATUS_OBJECT_NAME_INVALID || status == STATUS_OBJECT_PATH_NOT_FOUND /* 2003 */,
-                "Got status %#x.\n", status);
+        ret = pRtlDosPathNameToNtPathName_U(error_paths[i], &nameW, &file_part, NULL);
+        todo_wine_if(i == 3 || i == 4)
+        ok(!ret, "Got %d.\n", ret);
+
+        if (pRtlDosPathNameToNtPathName_U_WithStatus)
+        {
+            status = pRtlDosPathNameToNtPathName_U_WithStatus(error_paths[i], &nameW, &file_part, NULL);
+            todo_wine_if(i == 3 || i == 4)
+            ok(status == STATUS_OBJECT_NAME_INVALID || broken(status == STATUS_OBJECT_PATH_NOT_FOUND /* 2003 */),
+               "Got status %#x.\n", status);
+        }
 
-        status = pRtlDosPathNameToNtPathName_U_WithStatus(L" ", &nameW, &file_part, NULL);
-        ok(status == STATUS_OBJECT_NAME_INVALID || status == STATUS_OBJECT_PATH_NOT_FOUND /* 2003 */,
-                "Got status %#x.\n", status);
+        winetest_pop_context();
     }
 
     for (i = 0; i < ARRAY_SIZE(tests); ++i)




More information about the wine-cvs mailing list