[PATCH 1/2] ntdll/tests: Test NtQueryDirectoryFile with different ReturnSingleEntry and RestartScan flags. (try 3)

Grazvydas Ignotas notasas at gmail.com
Wed Jul 27 16:31:50 CDT 2011


changed since try 1: improved fail message a little.
---
 dlls/ntdll/tests/directory.c |   21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/dlls/ntdll/tests/directory.c b/dlls/ntdll/tests/directory.c
index 56840b5..40ca0ac 100644
--- a/dlls/ntdll/tests/directory.c
+++ b/dlls/ntdll/tests/directory.c
@@ -150,7 +150,7 @@ static void tally_test_file(FILE_BOTH_DIRECTORY_INFORMATION *dir_info)
     ok(testfiles[i].name != NULL, "unexpected file found\n");
 }
 
-static void test_NtQueryDirectoryFile(void)
+static void test_NtQueryDirectoryFile(BOOLEAN single_entry, BOOLEAN restart_flag)
 {
     OBJECT_ATTRIBUTES attr;
     UNICODE_STRING ntdirname;
@@ -190,7 +190,7 @@ static void test_NtQueryDirectoryFile(void)
     }
 
     pNtQueryDirectoryFile( dirh, NULL, NULL, NULL, &io, data, sizeof(data),
-                       FileBothDirectoryInformation, FALSE, NULL, FALSE );
+                       FileBothDirectoryInformation, single_entry, NULL, restart_flag );
     ok (U(io).Status == STATUS_SUCCESS, "filed to query directory; status %x\n", U(io).Status);
     data_len = io.Information;
     ok (data_len >= sizeof(FILE_BOTH_DIRECTORY_INFORMATION), "not enough data in directory\n");
@@ -204,7 +204,7 @@ static void test_NtQueryDirectoryFile(void)
 
         if (dir_info->NextEntryOffset == 0) {
             pNtQueryDirectoryFile( dirh, 0, NULL, NULL, &io, data, sizeof(data),
-                               FileBothDirectoryInformation, FALSE, NULL, FALSE );
+                               FileBothDirectoryInformation, single_entry, NULL, FALSE );
             if (U(io).Status == STATUS_NO_MORE_FILES)
                 break;
             ok (U(io).Status == STATUS_SUCCESS, "filed to query directory; status %x\n", U(io).Status);
@@ -220,13 +220,13 @@ static void test_NtQueryDirectoryFile(void)
     ok(numfiles < max_test_dir_size, "too many loops\n");
 
     for (i=0; testfiles[i].name; i++) {
-        if (strcmp(testfiles[i].name, ".") == 0 || strcmp(testfiles[i].name, "..") == 0) {
+        if ((strcmp(testfiles[i].name, ".") == 0 || strcmp(testfiles[i].name, "..") == 0) && (single_entry || !restart_flag)) {
             todo_wine
-            ok(testfiles[i].nfound == 1, "Wrong number %d of %s files found\n",
-              testfiles[i].nfound, testfiles[i].description);
+            ok(testfiles[i].nfound == 1, "Wrong number %d of %s files found (ReturnSingleEntry=%d,RestartScan=%d)\n",
+              testfiles[i].nfound, testfiles[i].description, single_entry, restart_flag);
         } else {
-            ok(testfiles[i].nfound == 1, "Wrong number %d of %s files found\n",
-              testfiles[i].nfound, testfiles[i].description);
+            ok(testfiles[i].nfound == 1, "Wrong number %d of %s files found (ReturnSingleEntry=%d,RestartScan=%d)\n",
+              testfiles[i].nfound, testfiles[i].description, single_entry, restart_flag);
         }
     }
 
@@ -299,6 +299,9 @@ START_TEST(directory)
     pRtlWow64EnableFsRedirection = (void *)GetProcAddress(hntdll,"RtlWow64EnableFsRedirection");
     pRtlWow64EnableFsRedirectionEx = (void *)GetProcAddress(hntdll,"RtlWow64EnableFsRedirectionEx");
 
-    test_NtQueryDirectoryFile();
+    test_NtQueryDirectoryFile(FALSE, TRUE);
+    test_NtQueryDirectoryFile(FALSE, FALSE);
+    test_NtQueryDirectoryFile(TRUE, TRUE);
+    test_NtQueryDirectoryFile(TRUE, FALSE);
     test_redirection();
 }
-- 
1.7.0.4




More information about the wine-patches mailing list