[NTDLL_APITEST] -Create a copy of the test in testdata and add along three empty files: ntdll_apitest.exe.local, shell32.dll and test.dll. Make the test start the subprocess from testdata to avoid any kind of interference of the .local to all the other tests. The empty dlls are needed there because there is no way to rename the files while adding them to the cab file like we do with NAME_ON_CD and creating them at runtime is not reliable as caching can cause random failures.

svn path=/trunk/; revision=73554
This commit is contained in:
Giannis Adamopoulos
2017-01-15 11:51:06 +00:00
parent 8fc83b30af
commit e4ffdbb8a7
5 changed files with 33 additions and 36 deletions
+5
View File
@@ -64,3 +64,8 @@ if(NOT MSVC)
endif()
add_rostests_file(TARGET ntdll_apitest)
add_rostests_file(TARGET ntdll_apitest SUBDIR testdata)
# These are empty files
add_rostests_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/ntdll_apitest.exe.local" SUBDIR testdata)
add_rostests_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/shell32.dll" SUBDIR testdata)
add_rostests_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/test.dll" SUBDIR testdata)
@@ -41,7 +41,6 @@ struct test_data Tests[] =
/* But redirecting gdiplus from a different directory doesn't work */
{__LINE__, STATUS_SXS_KEY_NOT_FOUND, L"c:\\GDIPLUS.DLL", NULL},
{__LINE__, STATUS_SXS_KEY_NOT_FOUND, L"c:\\comctl32.DLL", NULL},
#if 0
/* Redirection based on .local */
{__LINE__, STATUS_SUCCESS, L"test", EXPECT_IN_SAME_DIR},
{__LINE__, STATUS_SUCCESS, L"test.dll", EXPECT_IN_SAME_DIR},
@@ -50,7 +49,6 @@ struct test_data Tests[] =
{__LINE__, STATUS_SUCCESS, L"shell32", EXPECT_IN_SAME_DIR},
{__LINE__, STATUS_SUCCESS, L"shell32.dll", EXPECT_IN_SAME_DIR},
{__LINE__, STATUS_SUCCESS, L"c:\\shell32.dll", EXPECT_IN_SAME_DIR}
#endif
};
void TestRedirection(void)
@@ -125,39 +123,33 @@ void TestRedirection(void)
START_TEST(RtlDosApplyFileIsolationRedirection_Ustr)
{
#if 0
WCHAR TestPath[MAX_PATH];
WCHAR* separator;
STARTUPINFOW si = { sizeof(si) };
PROCESS_INFORMATION pi;
BOOL created;
HANDLE file;
int argc;
char **test_argv;
argc = winetest_get_mainargs( &test_argv );
if (argc >= 3)
{
TestRedirection();
}
else
{
WCHAR TestPath[MAX_PATH];
WCHAR* separator;
STARTUPINFOW si = { sizeof(si) };
PROCESS_INFORMATION pi;
BOOL created;
/* Create .local files */
GetModuleFileNameW(NULL, TestPath, MAX_PATH);
wcscat(TestPath, L".local");
file = CreateFileW(TestPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_FLAG_NO_BUFFERING , NULL);
CloseHandle(file);
separator = wcsrchr(TestPath, L'\\');
separator++;
wcscpy(separator, L"test.dll");
file = CreateFileW(TestPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_FLAG_NO_BUFFERING , NULL);
CloseHandle(file);
wcscpy(separator, L"shell32.dll");
file = CreateFileW(TestPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_FLAG_NO_BUFFERING , NULL);
CloseHandle(file);
*separator = 0;
#endif
TestRedirection();
#if 0
/*Cleanup*/
wcscpy(separator, L"test.dll");
DeleteFileW(TestPath);
wcscpy(separator, L"shell32.dll");
DeleteFileW(TestPath);
GetModuleFileNameW(NULL, TestPath, MAX_PATH);
wcscat(TestPath, L".local");
DeleteFileW(TestPath);
#endif
GetModuleFileNameW(NULL, TestPath, MAX_PATH);
separator = wcsrchr(TestPath, L'\\');
separator++;
wcscpy(separator, L"testdata\\ntdll_apitest.exe RtlDosApplyFileIsolationRedirection_Ustr DoTest");
created = CreateProcessW(NULL, TestPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
ok(created, "Expected CreateProcess to succeed\n");
if (created)
{
winetest_wait_child_process(pi.hProcess);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
}
}
View File
View File