Author: hbelusca
Date: Sat Apr 5 23:58:54 2014
New Revision: 62640
URL:
http://svn.reactos.org/svn/reactos?rev=62640&view=rev
Log:
[NTDLL_APITEST]
Add/refine RtlDoesFileExists* and RtlDosSearchPath_U APIs tests.
CORE-6373 #comment Tests for RtlDoesFileExists* and RtlDosSearchPath_U APIs added in
revision 62640.
Modified:
trunk/rostests/apitests/ntdll/RtlDoesFileExists.c
trunk/rostests/apitests/ntdll/RtlDosSearchPath_U.c
Modified: trunk/rostests/apitests/ntdll/RtlDoesFileExists.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/RtlDoesFil…
==============================================================================
--- trunk/rostests/apitests/ntdll/RtlDoesFileExists.c [iso-8859-1] (original)
+++ trunk/rostests/apitests/ntdll/RtlDoesFileExists.c [iso-8859-1] Sat Apr 5 23:58:54
2014
@@ -139,11 +139,27 @@
{ L"C:\\/\\%ls", TRUE },
{ L"C:\\%ls\\", TRUE },
{ L"C:\\%ls\\ThisFolderExists", TRUE },
+ { L"C:\\%ls\\ThisFolderExists ", TRUE },
+ { L"C:\\%ls\\ThisFolderExists ", TRUE },
+ { L"C:\\%ls\\ThisFolderExists ", TRUE },
+ { L"C:\\%ls\\ThisFolderExists:", FALSE },
+ { L"C:\\%ls\\ThisFolderExists\t", FALSE },
+ { L"C:\\%ls\\ThisFolderExists\n", FALSE },
+ { L"C:\\%ls\\ThisFolderExists\r", FALSE },
+ { L" C:\\%ls\\ThisFolderExists", FALSE },
+ { L"C:\\%ls\\ ThisFolderExists", FALSE },
+ { L"C:\\%ls \\ThisFolderExists", FALSE },
{ L"C:\\%ls\\ThisDoesntExist", FALSE },
{ L"C:\\\\%ls\\\\ThisFolderExists", TRUE },
{ L"C:\\%ls\\ThisFolderExists\\ThisFileExists", TRUE },
{ L"c:\\%ls\\thisfolderexists\\thisfileexists", TRUE },
{ L"C:\\%ls\\THISFOLDEREXISTS\\THISFILEEXISTS", TRUE },
+ { L"C:\\%ls\\ThisFolderExists\\SomeProgram.exe",TRUE },
+ { L"C:\\%ls\\ThisFolderExists\\SomeProgram", FALSE },
+ { L"C:\\%ls\\ThisFolderExists\\With", FALSE },
+ { L"C:\\%ls\\ThisFolderExists\\With Space", TRUE },
+ { L"C:\\%ls\\ThisFolderExists\\Without", TRUE },
+ { L"C:\\%ls\\ThisFolderExists\\Without Space", FALSE },
{ L"C:\\%ls abc", FALSE },
{ L"\"C:\\%ls\" abc", FALSE },
{ L"\"C:\\\"", FALSE },
@@ -251,6 +267,21 @@
CloseHandle(Handle);
}
+ swprintf(FileName, L"C:\\%ls\\ThisFolderExists\\SomeProgram.exe",
CustomPath);
+ Handle = CreateFileW(FileName, 0, 0, NULL, CREATE_NEW, 0, NULL);
+ ok(Handle != INVALID_HANDLE_VALUE, "CreateFile failed, results might not be
accurate\n");
+ if (Handle != INVALID_HANDLE_VALUE) CloseHandle(Handle);
+
+ swprintf(FileName, L"C:\\%ls\\ThisFolderExists\\With Space", CustomPath);
+ Handle = CreateFileW(FileName, 0, 0, NULL, CREATE_NEW, 0, NULL);
+ ok(Handle != INVALID_HANDLE_VALUE, "CreateFile failed, results might not be
accurate\n");
+ if (Handle != INVALID_HANDLE_VALUE) CloseHandle(Handle);
+
+ swprintf(FileName, L"C:\\%ls\\ThisFolderExists\\Without", CustomPath);
+ Handle = CreateFileW(FileName, 0, 0, NULL, CREATE_NEW, 0, NULL);
+ ok(Handle != INVALID_HANDLE_VALUE, "CreateFile failed, results might not be
accurate\n");
+ if (Handle != INVALID_HANDLE_VALUE) CloseHandle(Handle);
+
for (i = 0; i < sizeof(Tests) / sizeof(Tests[0]); i++)
{
swprintf(FileName, Tests[i].FileName, CustomPath);
@@ -301,13 +332,23 @@
}
}
+ swprintf(FileName, L"C:\\%ls\\ThisFolderExists\\Without", CustomPath);
+ Success = DeleteFileW(FileName);
+ ok(Success, "DeleteFile failed (%lu), test might leave stale file\n",
GetLastError());
+ swprintf(FileName, L"C:\\%ls\\ThisFolderExists\\With Space", CustomPath);
+ Success = DeleteFileW(FileName);
+ ok(Success, "DeleteFile failed (%lu), test might leave stale file\n",
GetLastError());
+ swprintf(FileName, L"C:\\%ls\\ThisFolderExists\\SomeProgram.exe",
CustomPath);
+ Success = DeleteFileW(FileName);
+ ok(Success, "DeleteFile failed (%lu), test might leave stale file\n",
GetLastError());
+
swprintf(FileName, L"C:\\%ls\\ThisFolderExists\\ThisFileExists",
CustomPath);
Success = DeleteFileW(FileName);
- ok(Success, "DeleteFile failed, test might leave stale file\n");
+ ok(Success, "DeleteFile failed (%lu), test might leave stale file\n",
GetLastError());
swprintf(FileName, L"C:\\%ls\\ThisFolderExists", CustomPath);
Success = RemoveDirectoryW(FileName);
- ok(Success, "RemoveDirectory failed, test might leave stale directory\n");
+ ok(Success, "RemoveDirectory failed (%lu), test might leave stale
directory\n", GetLastError());
swprintf(FileName, L"C:\\%ls", CustomPath);
Success = RemoveDirectoryW(FileName);
- ok(Success, "RemoveDirectory failed, test might leave stale directory\n");
+ ok(Success, "RemoveDirectory failed (%lu), test might leave stale
directory\n", GetLastError());
}
Modified: trunk/rostests/apitests/ntdll/RtlDosSearchPath_U.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/RtlDosSear…
==============================================================================
--- trunk/rostests/apitests/ntdll/RtlDosSearchPath_U.c [iso-8859-1] (original)
+++ trunk/rostests/apitests/ntdll/RtlDosSearchPath_U.c [iso-8859-1] Sat Apr 5 23:58:54
2014
@@ -24,6 +24,8 @@
);
*/
+#define PrintablePointer(p) ((p) == InvalidPointer ? NULL : (p))
+
static
BOOLEAN
CheckStringBuffer(
@@ -92,6 +94,218 @@
return TRUE;
}
+static
+VOID
+RunTestCases(
+ PCWSTR CustomPath)
+{
+ struct
+ {
+ PCWSTR SearchPath;
+ PCWSTR FileName;
+ PCWSTR Extension;
+ PCWSTR ResultPath;
+ PCWSTR ResultFileName;
+ } Tests[] =
+ {
+ { L"", L"", NULL,
NULL, NULL },
+ { L"C:\\%ls\\Folder1", L"File1", NULL,
L"C:\\%ls\\Folder1\\", L"File1" },
+ /* No path: current directory */
+ { L"", L"File1", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"File1" },
+ /* Full path as FileName */
+ { L"", L"C:\\", NULL,
L"C:\\", NULL },
+ { L"", L"C:\\%ls\\Folder1", NULL,
L"C:\\%ls\\", L"Folder1" },
+ /* No FileName */
+ { L"C:\\", L"", NULL,
L"C:\\", NULL },
+ { L"C:\\%ls\\Folder1", L"", NULL,
L"C:\\%ls\\Folder1\\", NULL },
+ /* Full path as FileName */
+ { L"", L"C:\\%ls\\Folder1\\SomeProgram.exe", NULL,
L"C:\\%ls\\Folder1\\", L"SomeProgram.exe" },
+ { L"", L"C:\\%ls\\Folder1\\SomeProgram.exe",
L".exe", L"C:\\%ls\\Folder1\\", L"SomeProgram.exe"
},
+ { L"", L"C:\\%ls\\Folder1\\SomeProgram", NULL,
NULL, NULL },
+ // 10
+ { L"", L"C:\\%ls\\Folder1\\SomeProgram",
L".exe", NULL, NULL },
+ /* Both SearchPath and FileName */
+ { L"C:\\%ls\\Folder1\\", L"SomeProgram.exe", NULL,
L"C:\\%ls\\Folder1\\", L"SomeProgram.exe" },
+ { L"C:\\%ls\\Folder1\\", L"SomeProgram.exe",
L".exe", L"C:\\%ls\\Folder1\\", L"SomeProgram.exe"
},
+ { L"C:\\%ls\\Folder1\\", L"SomeProgram", NULL,
NULL, NULL },
+ { L"C:\\%ls\\Folder1\\", L"SomeProgram",
L".exe", L"C:\\%ls\\Folder1\\", L"SomeProgram.exe"
},
+ { L"C:\\%ls\\Folder1", L"SomeProgram.exe", NULL,
L"C:\\%ls\\Folder1\\", L"SomeProgram.exe" },
+ { L"C:\\%ls\\Folder1", L"SomeProgram.exe",
L".exe", L"C:\\%ls\\Folder1\\", L"SomeProgram.exe"
},
+ { L"C:\\%ls\\Folder1", L"SomeProgram", NULL,
NULL, NULL },
+ { L"C:\\%ls\\Folder1", L"SomeProgram",
L".exe", L"C:\\%ls\\Folder1\\", L"SomeProgram.exe"
},
+ /* Full path to file in SearchPath doesn't work */
+ { L"C:\\%ls\\Folder1\\SomeProgram.exe", L"", NULL,
NULL, NULL },
+ // 20
+ { L"C:\\%ls\\Folder1\\SomeProgram.exe", L"",
L".exe", NULL, NULL },
+ { L"C:\\%ls\\Folder1\\SomeProgram", L"", NULL,
NULL, NULL },
+ { L"C:\\%ls\\Folder1\\SomeProgram", L"",
L".exe", NULL, NULL },
+ /* */
+ { L"C:\\%ls\\Folder1", L"File1", NULL,
L"C:\\%ls\\Folder1\\", L"File1" },
+ { L"C:\\%ls\\CurrentDirectory", L"File1", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"File1" },
+ { L"C:\\%ls\\Folder1 ", L"File1", NULL,
NULL, NULL },
+ { L"C:\\%ls\\CurrentDirectory ",L"File1", NULL,
NULL, NULL },
+ { L" C:\\%ls\\Folder1", L"File1", NULL,
NULL, NULL },
+ { L" C:\\%ls\\CurrentDirectory",L"File1", NULL,
NULL, NULL },
+ { L" C:\\%ls\\Folder1 ", L"File1", NULL,
NULL, NULL },
+ // 30
+ { L" C:\\%ls\\CurrentDirectory ",L"File1", NULL,
NULL, NULL },
+ /* Multiple search paths */
+ { L"C:\\%ls\\Folder1;C:\\%ls\\CurrentDirectory",
+ L"File1", NULL,
L"C:\\%ls\\Folder1\\", L"File1" },
+ { L"C:\\%ls\\CurrentDirectory;C:\\%ls\\Folder1",
+ L"File1", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"File1" },
+ { L"C:\\%ls\\CurrentDirectory ; C:\\%ls\\Folder1",
+ L"File1", NULL, NULL,
NULL },
+ { L"C:\\%ls\\CurrentDirectory ;C:\\%ls\\Folder1",
+ L"File1", NULL,
L"C:\\%ls\\Folder1\\", L"File1" },
+ { L"C:\\%ls\\CurrentDirectory; C:\\%ls\\Folder1",
+ L"File1", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"File1" },
+ { L";C:\\%ls\\Folder1", L"File1", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"File1" },
+ { L";C:\\%ls\\Folder1;", L"File1", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"File1" },
+ { L";C:\\%ls\\Folder1;", L"File1", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"File1" },
+ { L"C:\\%ls\\Folder1", L"OnlyInCurr", NULL,
NULL, NULL },
+ // 40
+ { L"", L"OnlyInCurr", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"OnlyInCurr" },
+ { L"", L"OnlyInCurr ", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"OnlyInCurr" },
+ { L"", L" OnlyInCurr", NULL,
NULL, NULL },
+ { L" ", L"OnlyInCurr", NULL,
NULL, NULL },
+ { L";", L"OnlyInCurr", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"OnlyInCurr" },
+ { L"; ", L"OnlyInCurr", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"OnlyInCurr" },
+ { L" ;", L"OnlyInCurr", NULL,
NULL, NULL },
+ { L" ; ", L"OnlyInCurr", NULL,
NULL, NULL },
+ { L";C:\\%ls\\Folder1", L"OnlyInCurr", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"OnlyInCurr" },
+ { L"C:\\%ls\\Folder1;", L"OnlyInCurr", NULL,
NULL, NULL },
+ // 50
+ { L"C:\\%ls\\Folder1;;", L"OnlyInCurr", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"OnlyInCurr" },
+ { L";C:\\%ls\\Folder1;", L"OnlyInCurr", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"OnlyInCurr" },
+ { L"C:\\%ls\\Folder1;C:\\%ls\\Folder2",
+ L"OnlyInCurr", NULL, NULL,
NULL },
+ { L";C:\\%ls\\Folder1;C:\\%ls\\Folder2",
+ L"OnlyInCurr", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"OnlyInCurr" },
+ { L"C:\\%ls\\Folder1;;C:\\%ls\\Folder2",
+ L"OnlyInCurr", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"OnlyInCurr" },
+ { L"C:\\%ls\\Folder1;C:\\%ls\\Folder2;",
+ L"OnlyInCurr", NULL, NULL,
NULL },
+ { L"C:\\%ls\\Folder1;C:\\%ls\\Folder2;;",
+ L"OnlyInCurr", NULL,
L"C:\\%ls\\CurrentDirectory\\", L"OnlyInCurr" },
+ /* Spaces in FileName! */
+ { L"", L"C:\\%ls\\Folder1\\SomeProgram With Spaces",
+ L".exe", NULL,
NULL },
+ { L"", L"C:\\%ls\\Folder1\\SomeProgram With Spaces.exe",
+ L".exe", NULL,
NULL },
+ { L"", L"C:\\%ls\\Folder1\\Program",
L".exe", NULL, NULL },
+ // 60
+ { L"", L"C:\\%ls\\Folder1\\Program.exe",
L".exe", L"C:\\%ls\\Folder1\\", L"Program.exe" },
+ { L"", L"C:\\%ls\\Folder1\\Program With",
L".exe", NULL, NULL },
+ { L"", L"C:\\%ls\\Folder1\\Program With.exe",
L".exe", L"C:\\%ls\\Folder1\\", L"Program With.exe"
},
+ { L"", L"C:\\%ls\\Folder1\\Program With
Spaces",L".exe", NULL, NULL },
+ { L"", L"C:\\%ls\\Folder1\\Program With Spaces.exe",
+ L".exe",
L"C:\\%ls\\Folder1\\", L"Program With Spaces.exe" },
+ /* Same tests with path in SearchPath - now extensions are appended */
+ { L"C:\\%ls\\Folder1", L"SomeProgram With Spaces",
+ L".exe", NULL,
NULL },
+ { L"C:\\%ls\\Folder1", L"SomeProgram With Spaces.exe",
+ L".exe", NULL,
NULL },
+ { L"C:\\%ls\\Folder1", L"Program",
L".exe", L"C:\\%ls\\Folder1\\", L"Program.exe" },
+ { L"C:\\%ls\\Folder1", L"Program.exe",
L".exe", L"C:\\%ls\\Folder1\\", L"Program.exe" },
+ { L"C:\\%ls\\Folder1", L"Program With",
L".exe", L"C:\\%ls\\Folder1\\", L"Program With.exe"
},
+ // 70
+ { L"C:\\%ls\\Folder1", L"Program With.exe",
L".exe", L"C:\\%ls\\Folder1\\", L"Program With.exe"
},
+ { L"C:\\%ls\\Folder1", L"Program With Spaces",
L".exe", L"C:\\%ls\\Folder1\\", L"Program With
Spaces.exe" },
+ { L"C:\\%ls\\Folder1", L"Program With Spaces.exe",
+ L".exe",
L"C:\\%ls\\Folder1\\", L"Program With Spaces.exe" },
+ };
+
+ ULONG i;
+ ULONG Length;
+ PWSTR PartName;
+ WCHAR SearchPath[MAX_PATH];
+ WCHAR FileName[MAX_PATH];
+ WCHAR ResultPath[MAX_PATH];
+ WCHAR Buffer[MAX_PATH];
+ BOOLEAN Okay;
+
+ for (i = 0; i < sizeof(Tests) / sizeof(Tests[0]); i++)
+ {
+ swprintf(SearchPath, Tests[i].SearchPath, CustomPath, CustomPath, CustomPath,
CustomPath);
+ swprintf(FileName, Tests[i].FileName, CustomPath, CustomPath, CustomPath,
CustomPath);
+ RtlFillMemory(Buffer, sizeof(Buffer), 0x55);
+ PartName = InvalidPointer;
+
+ StartSeh()
+ Length = RtlDosSearchPath_U(SearchPath,
+ FileName,
+ Tests[i].Extension,
+ sizeof(Buffer),
+ Buffer,
+ &PartName);
+ EndSeh(STATUS_SUCCESS);
+
+ if (Tests[i].ResultPath)
+ {
+ swprintf(ResultPath, Tests[i].ResultPath, CustomPath, CustomPath, CustomPath,
CustomPath);
+ if (Tests[i].ResultFileName)
+ {
+ ok(PartName == &Buffer[wcslen(ResultPath)],
+ "PartName = %p (%ls), expected %p\n",
+ PartName, PrintablePointer(PartName),
&Buffer[wcslen(ResultPath)]);
+ wcscat(ResultPath, Tests[i].ResultFileName);
+ }
+ else
+ {
+ ok(PartName == NULL,
+ "PartName = %p (%ls), expected NULL\n",
+ PartName, PrintablePointer(PartName));
+ }
+ Okay = CheckStringBuffer(Buffer, Length, sizeof(Buffer), ResultPath);
+ ok(Okay == TRUE, "CheckStringBuffer failed. Got '%ls', expected
'%ls'\n", Buffer, ResultPath);
+ }
+ else
+ {
+ Okay = CheckBuffer(Buffer, sizeof(Buffer), 0x55);
+ ok(Okay == TRUE, "CheckBuffer failed\n");
+ ok(Length == 0, "Length = %lu\n", Length);
+ ok(PartName == InvalidPointer,
+ "PartName = %p (%ls), expected %p\n",
+ PartName, PrintablePointer(PartName), InvalidPointer);
+ }
+ }
+}
+
+#define MAKE_DIRECTORY(path) \
+do { \
+ swprintf(FileName, path, CustomPath); \
+ Success = CreateDirectoryW(FileName, NULL); \
+ ok(Success, "CreateDirectory failed, results might not be accurate\n"); \
+} while (0)
+
+#define MAKE_FILE(path) \
+do { \
+ swprintf(FileName, path, CustomPath); \
+ Handle = CreateFileW(FileName, 0, 0, NULL, CREATE_NEW, 0, NULL); \
+ ok(Handle != INVALID_HANDLE_VALUE, \
+ "CreateFile failed, results might not be accurate\n"); \
+ if (Handle != INVALID_HANDLE_VALUE) CloseHandle(Handle); \
+} while (0)
+
+#define DELETE_DIRECTORY(path) \
+do { \
+ swprintf(FileName, path, CustomPath); \
+ Success = RemoveDirectoryW(FileName); \
+ ok(Success, \
+ "RemoveDirectory failed (%lu), test might leave stale directory\n", \
+ GetLastError()); \
+} while (0)
+
+#define DELETE_FILE(path) \
+do { \
+ swprintf(FileName, path, CustomPath); \
+ Success = DeleteFileW(FileName); \
+ ok(Success, \
+ "DeleteFile failed (%lu), test might leave stale file\n", \
+ GetLastError()); \
+} while (0)
+
START_TEST(RtlDosSearchPath_U)
{
ULONG Length = 0;
@@ -112,22 +326,30 @@
}
Success = CreateDirectoryW(FileName, NULL);
ok(Success, "CreateDirectory failed, results might not be accurate\n");
- swprintf(FileName, L"C:\\%ls\\ThisFolderExists", CustomPath);
- Success = CreateDirectoryW(FileName, NULL);
- ok(Success, "CreateDirectory failed, results might not be accurate\n");
- swprintf(FileName, L"C:\\%ls\\ThisFolderExists\\ThisFileExists",
CustomPath);
- Handle = CreateFileW(FileName, 0, 0, NULL, CREATE_NEW, 0, NULL);
- ok(Handle != INVALID_HANDLE_VALUE, "CreateFile failed, results might not be
accurate\n");
- if (Handle != INVALID_HANDLE_VALUE)
- CloseHandle(Handle);
+
+ MAKE_DIRECTORY(L"C:\\%ls\\Folder1");
+ MAKE_DIRECTORY(L"C:\\%ls\\Folder2");
+ MAKE_DIRECTORY(L"C:\\%ls\\CurrentDirectory");
+ Success = SetCurrentDirectoryW(FileName);
+ ok(Success, "SetCurrentDirectory failed\n");
+ MAKE_FILE(L"C:\\%ls\\Folder1\\File1");
+ MAKE_FILE(L"C:\\%ls\\Folder1\\SomeProgram.exe");
+ MAKE_FILE(L"C:\\%ls\\Folder1\\SomeProgram2.exe");
+ MAKE_FILE(L"C:\\%ls\\Folder1\\SomeProgram2.exe.exe");
+ MAKE_FILE(L"C:\\%ls\\Folder1\\SomeProgram3.exe.exe");
+ MAKE_FILE(L"C:\\%ls\\Folder1\\Program.exe");
+ MAKE_FILE(L"C:\\%ls\\Folder1\\Program With.exe");
+ MAKE_FILE(L"C:\\%ls\\Folder1\\Program With Spaces.exe");
+ MAKE_FILE(L"C:\\%ls\\CurrentDirectory\\File1");
+ MAKE_FILE(L"C:\\%ls\\CurrentDirectory\\OnlyInCurr");
/* NULL parameters */
- StartSeh() RtlDosSearchPath_U(NULL, NULL, NULL, 0, NULL, NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
- StartSeh() Length = RtlDosSearchPath_U(NULL, L"", NULL, 0, NULL, NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
- StartSeh() Length = RtlDosSearchPath_U(NULL, L"", NULL, 0, Buffer, NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
- StartSeh() Length = RtlDosSearchPath_U(NULL, L"", NULL, 1, Buffer, NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
- StartSeh() Length = RtlDosSearchPath_U(NULL, L"", NULL, 2, Buffer, NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
- StartSeh() Length = RtlDosSearchPath_U(L"", NULL, NULL, 0, NULL, NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
+ StartSeh() RtlDosSearchPath_U(NULL, NULL, NULL, 0, NULL , NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
+ StartSeh() RtlDosSearchPath_U(NULL, L"" , NULL, 0, NULL , NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
+ StartSeh() RtlDosSearchPath_U(NULL, L"" , NULL, 0, Buffer, NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
+ StartSeh() RtlDosSearchPath_U(NULL, L"" , NULL, 1, Buffer, NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
+ StartSeh() RtlDosSearchPath_U(NULL, L"" , NULL, 2, Buffer, NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
+ StartSeh() RtlDosSearchPath_U(L"" , NULL, NULL, 0, NULL , NULL);
EndSeh(STATUS_ACCESS_VIOLATION);
/* Empty strings - first one that doesn't crash */
StartSeh()
@@ -161,52 +383,26 @@
Okay = CheckBuffer(Buffer, sizeof(Buffer), 0x55);
ok(Okay, "CheckBuffer failed\n");
- /* Empty path string searches in current directory */
- swprintf(FileName, L"C:\\%ls\\ThisFolderExists", CustomPath);
- Success = SetCurrentDirectoryW(FileName);
- ok(Success, "SetCurrentDirectory failed\n");
- PartName = InvalidPointer;
- RtlFillMemory(Buffer, sizeof(Buffer), 0x55);
- StartSeh()
- Length = RtlDosSearchPath_U(L"", L"ThisFileExists", NULL,
sizeof(Buffer), Buffer, &PartName);
- ok(Length == wcslen(FileName) * sizeof(WCHAR) +
sizeof(L"\\ThisFileExists") - sizeof(UNICODE_NULL), "Length %lu\n",
Length);
- EndSeh(STATUS_SUCCESS);
- ok(PartName == &Buffer[wcslen(FileName) + 1], "PartName = %p\n",
PartName);
- wcscat(FileName, L"\\ThisFileExists");
- Okay = CheckStringBuffer(Buffer, Length, sizeof(Buffer), FileName);
- ok(Okay, "CheckStringBuffer failed\n");
-
- /* Absolute path in FileName is also okay */
- PartName = InvalidPointer;
- RtlFillMemory(Buffer, sizeof(Buffer), 0x55);
- StartSeh()
- Length = RtlDosSearchPath_U(L"", L"C:\\", NULL,
sizeof(Buffer), Buffer, &PartName);
- ok(Length == sizeof(L"C:\\") - sizeof(UNICODE_NULL), "Length
%lu\n", Length);
- EndSeh(STATUS_SUCCESS);
- ok(PartName == NULL, "PartName = %p\n", PartName);
- Okay = CheckStringBuffer(Buffer, Length, sizeof(Buffer), L"C:\\");
- ok(Okay, "CheckStringBuffer failed\n");
-
- /* Empty FileName also works */
- PartName = InvalidPointer;
- RtlFillMemory(Buffer, sizeof(Buffer), 0x55);
- StartSeh()
- Length = RtlDosSearchPath_U(L"C:\\", L"", NULL,
sizeof(Buffer), Buffer, &PartName);
- ok(Length == sizeof(L"C:\\") - sizeof(UNICODE_NULL), "Length
%lu\n", Length);
- EndSeh(STATUS_SUCCESS);
- ok(PartName == NULL, "PartName = %p\n", PartName);
- Okay = CheckStringBuffer(Buffer, Length, sizeof(Buffer), L"C:\\");
- ok(Okay, "CheckStringBuffer failed\n");
-
- /* Clean up test folder */
+ /* Now test the actual functionality */
+ RunTestCases(CustomPath);
+
+ /*
+ * Clean up test folder - We can't delete it
+ * if our current directory is inside.
+ */
SetCurrentDirectoryW(L"C:\\");
- swprintf(FileName, L"C:\\%ls\\ThisFolderExists\\ThisFileExists",
CustomPath);
- Success = DeleteFileW(FileName);
- ok(Success, "DeleteFile failed, test might leave stale file\n");
- swprintf(FileName, L"C:\\%ls\\ThisFolderExists", CustomPath);
- Success = RemoveDirectoryW(FileName);
- ok(Success, "RemoveDirectory failed (%lu), test might leave stale
directory\n", GetLastError());
- swprintf(FileName, L"C:\\%ls", CustomPath);
- Success = RemoveDirectoryW(FileName);
- ok(Success, "RemoveDirectory failed (%lu), test might leave stale
directory\n", GetLastError());
+ DELETE_FILE(L"C:\\%ls\\CurrentDirectory\\OnlyInCurr");
+ DELETE_FILE(L"C:\\%ls\\CurrentDirectory\\File1");
+ DELETE_FILE(L"C:\\%ls\\Folder1\\Program With Spaces.exe");
+ DELETE_FILE(L"C:\\%ls\\Folder1\\Program With.exe");
+ DELETE_FILE(L"C:\\%ls\\Folder1\\Program.exe");
+ DELETE_FILE(L"C:\\%ls\\Folder1\\SomeProgram3.exe.exe");
+ DELETE_FILE(L"C:\\%ls\\Folder1\\SomeProgram2.exe.exe");
+ DELETE_FILE(L"C:\\%ls\\Folder1\\SomeProgram2.exe");
+ DELETE_FILE(L"C:\\%ls\\Folder1\\SomeProgram.exe");
+ DELETE_FILE(L"C:\\%ls\\Folder1\\File1");
+ DELETE_DIRECTORY(L"C:\\%ls\\CurrentDirectory");
+ DELETE_DIRECTORY(L"C:\\%ls\\Folder2");
+ DELETE_DIRECTORY(L"C:\\%ls\\Folder1");
+ DELETE_DIRECTORY(L"C:\\%ls");
}