Nicolas Le Cam wrote: > 2009/2/24 Paul Vriens <[email protected]>: >> Hi, >> >> This makes sure that if we have a dll that's only provided via .NET it can >> still >> be found. Now both our extraction (and the generation of the subtest list) >> and >> the real test will find the dll. >> >> The downside (and hence this is a bit hackish) is that we extend the PATH >> for >> every test. For now it's only gdiplus that needs this btw as that dll can >> also >> exist without .NET (if I'm correct) and these tests directly import gdiplus. >> >> Changelog >> Extend PATH if we have dll's that only come with .NET >> >> -- >> Cheers, >> >> Paul. >> >> >> >From 3cf6c1e876ac032aab988efa0751b26b9643cf93 Mon Sep 17 00:00:00 2001 >> From: Paul Vriens <[email protected]> >> Date: Tue, 24 Feb 2009 14:05:26 +0100 >> Subject: [PATCH] Extend PATH if we have dll's that only come with .NET >> >> --- >> programs/winetest/main.c | 28 +++++++++++++++++++++++++++- >> 1 files changed, 27 insertions(+), 1 deletions(-) >> >> diff --git a/programs/winetest/main.c b/programs/winetest/main.c >> index 74a4307..ee390ec 100644 >> --- a/programs/winetest/main.c >> +++ b/programs/winetest/main.c >> @@ -542,7 +542,33 @@ extract_test_proc (HMODULE hModule, LPCTSTR lpszType, >> if (!dll && pLoadLibraryShim) >> { >> MultiByteToWideChar(CP_ACP, 0, dllname, -1, dllnameW, MAX_PATH); >> - if (FAILED( pLoadLibraryShim(dllnameW, NULL, NULL, &dll) )) dll = >> 0; >> + if (FAILED( pLoadLibraryShim(dllnameW, NULL, NULL, &dll) )) >> + dll = 0; >> + else >> + { >> + char *newpath; >> + char dllpath[MAX_PATH]; >> + DWORD needed, pathlen = 0; >> + >> + /* Extend the path so get_subtests() and the test itself can >> find >> + * the dll (gdiplus for example). >> + */ >> + GetModuleFileNameA(dll, dllpath, MAX_PATH); >> + *strrchr(dllpath, '\\') = '\0'; >> + >> + needed = GetEnvironmentVariableA("PATH", NULL, 0); >> + >> + /* current path + ';' + dllpath + '\0' */ >> + pathlen = needed + 1 + strlen(dllpath) + 1; >> + newpath = xmalloc(pathlen); >> + GetEnvironmentVariable("PATH", newpath, pathlen); >> + >> + strcat(newpath, ";"); >> + strcat(newpath, dllpath); >> + SetEnvironmentVariableA("PATH", newpath); >> + >> + free(newpath); >> + } >> } >> if (!dll) { >> xprintf (" %s=dll is missing\n", dllname); >> -- >> 1.6.0.6 >> >> >> >> >> >> > > What about extending wine_test struct with a path variable that will > be set and restored around the CreateProcess call in run_ex if not > null ? >
That will provide us at least with a per-test PATH change if needed. Let me think about that one a bit more (maybe AJ already has another/better idea, how to solve this) as that requires some bigger changes. -- Cheers, Paul.
