Since the test no longer uses a random directory name, the directory is more likely to exist already. So use it even if it already exists. Also on some Windows versions (e.g. Windos 2008) GetLongPathName() does not return the long name if the path does not exist. So do the conversion before appending the new directory name.
Signed-off-by: Francois Gouget fgouget@codeweavers.com ---
This fixes shell32:shlexec on Windows 7 and Windows 2008.
dlls/shell32/tests/shlexec.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/shell32/tests/shlexec.c b/dlls/shell32/tests/shlexec.c index b49297bb41f..8ee662321d1 100644 --- a/dlls/shell32/tests/shlexec.c +++ b/dlls/shell32/tests/shlexec.c @@ -2693,16 +2693,17 @@ static void init_test(void) strcpy(tmpdir, "c:\"); else GetTempPathA(sizeof(tmpdir), tmpdir); + GetLongPathNameA(tmpdir, tmpdir, sizeof(tmpdir));
/* In case of a failure it is necessary to show the path that was passed to * ShellExecute(). That means the paths must not be randomized so as not to * prevent the TestBot from detecting new failures. */ strcat(tmpdir, "wtShlexecDir"); - GetLongPathNameA(tmpdir, tmpdir, sizeof(tmpdir)); DeleteFileA( tmpdir ); rc = CreateDirectoryA( tmpdir, NULL ); - ok( rc, "failed to create %s err %u\n", tmpdir, GetLastError() ); + ok( rc || GetLastError() == ERROR_ALREADY_EXISTS, + "failed to create %s err %u\n", tmpdir, GetLastError() ); /* Set %TMPDIR% for the tests */ SetEnvironmentVariableA("TMPDIR", tmpdir);
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=68239
Your paranoid android.
=== w1064v1809_ar (32 bit report) ===
shell32: shlexec.c:2214: Test failed: ShellExecuteEx(mask="0x808040", file="C:\Users\winetest\Documents\shell32_test.exe", params="shlexec "C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\wtShlexecFile" Exec") WaitForSingleObject(hProcess) returned 258 shlexec.c:2214: Test failed: ShellExecuteEx(mask="0x808040", file="C:\Users\winetest\Documents\shell32_test.exe", params="shlexec "C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\wtShlexecFile" Exec") child returned 259 shlexec.c:2214: Test failed: ShellExecuteEx(mask="0x808040", file="C:\Users\winetest\Documents\shell32_test.exe", params="shlexec "C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\wtShlexecFile" Exec") WaitForSingleObject returned 258 shlexec.c:2214: Test failed: ShellExecuteEx(mask="0x808040", file="C:\Users\winetest\Documents\shell32_test.exe", params="shlexec "C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\wtShlexecFile" Exec") ShlexecVar expected 'Present', but key not found or empty shlexec.c:2217: Test failed: ShellExecuteEx(mask="0x808040", file="C:\Users\winetest\Documents\shell32_test.exe", params="shlexec "C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\wtShlexecFile" Exec") argvA3 expected 'Exec', but key not found or empty
=== w1064v1809_ar (testbot log) ===
The task timed out
=== w1064v1809_he (32 bit report) ===
shell32: shlexec.c:1641: Test failed: ShellExecute(verb="QuotedUpperL", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.shlexec") WaitForSingleObject returned 258 shlexec.c:1663: Test failed: ShellExecute(verb="QuotedUpperL", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.shlexec") argvA3 expected 'QuotedUpperL', but key not found or empty shlexec.c:1665: Test failed: ShellExecute(verb="QuotedUpperL", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.shlexec") argvA4 expected 'C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.shlexec', but key not found or empty shlexec.c:1663: Test failed: ShellExecute(verb="averb", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sha") argvA3 expected 'averb', got 'QuotedUpperL' shlexec.c:1665: Test failed: ShellExecute(verb="averb", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sha") argvA4 expected 'C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sha', got 'C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.shlexec' shlexec.c:2466: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail="", ddeexec="[open("%1")]", app="shlexec", topic="dde" ddeExec expected '[open("C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde")]', got '' shlexec.c:2466: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail=""%1"", ddeexec="[open("%1")]", app="shlexec", topic="dde" ddeExec expected '[open("C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde")]', got '' shlexec.c:2466: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail="%1", ddeexec="[open(%1)]", app="shlexec", topic="dde" ddeExec expected '[open(C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde)]', got '' shlexec.c:2430: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail="", ddeexec="[open("%1")]", app="shlexec", topic="dde", ifexec="[ifexec("%1")]" WaitForSingleObject(hProcess) returned 258 shlexec.c:2430: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail="", ddeexec="[open("%1")]", app="shlexec", topic="dde", ifexec="[ifexec("%1")]" child returned 259 shlexec.c:2466: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail="", ddeexec="[open("%1")]", app="shlexec", topic="dde", ifexec="[ifexec("%1")]" ddeExec expected '[ifexec("C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde")]', got '' shlexec.c:2430: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail="", ddeexec="[open("%1")]", app="shlexec" WaitForSingleObject(hProcess) returned 258 shlexec.c:2466: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail="", ddeexec="[open("%1")]", app="shlexec" ddeExec expected '[open("C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde")]', got '' shlexec.c:2466: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail="", ddeexec="[open("%1")]", topic="dde" ddeExec expected '[open("C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde")]', got ''
=== w1064v1809_he (testbot log) ===
The task timed out
=== w1064v1809_ja (32 bit report) ===
shell32: shlexec.c:1586: Test failed: ShellExecuteEx(mask="0x8240", verb="Params23456789", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.shlexec", params="one"quote "p four" one"quote p7") WaitForSingleObject(hProcess) returned 258 shlexec.c:1586: Test failed: ShellExecuteEx(mask="0x8240", verb="Params23456789", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.shlexec", params="two""quotes "p three" two""quotes p5") WaitForSingleObject(hProcess) returned 258 shlexec.c:1586: Test failed: ShellExecuteEx(mask="0x8240", verb="Params23456789", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.shlexec", params="two""quotes "p three" two""quotes p5") child returned 259 shlexec.c:1894: Test failed: ShellExecute(file="shlproto://foo/bar") WaitForSingleObject returned 258 shlexec.c:1931: Test failed: ShellExecute(verb="", file="shlproto://foo/bar.exe") WaitForSingleObject returned 258 shlexec.c:1934: Test failed: ShellExecute(file="shlproto://foo/bar.exe") argvA3 expected 'URL', but key not found or empty shlexec.c:1935: Test failed: ShellExecute(file="shlproto://foo/bar.exe") argvA4 expected 'shlproto://foo/bar.exe', but key not found or empty
=== w1064v1809_ja (testbot log) ===
The task timed out
=== w1064v1809_zh_CN (32 bit report) ===
shell32: shlexec.c:1641: Test failed: ShellExecute(verb="", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir%nasty% $file.shlexec") WaitForSingleObject returned 258 shlexec.c:1641: Test failed: ShellExecute(file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.noassoc") Got different return value with empty string: 31 42 shlexec.c:2466: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail="", ddeexec="[open("%1")]", app="shlexec", topic="dde" ddeExec expected '[open("C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde")]', got '' shlexec.c:2466: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail=""%1"", ddeexec="[open("%1")]", app="shlexec", topic="dde" ddeExec expected '[open("C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde")]', got '' shlexec.c:2466: Test failed: ShellExecuteEx(mask="0x8540", file="C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde") Assoc class="shlexec.sde", verb="Open", rawcmd="0", cmdtail="%1", ddeexec="[open(%1)]", app="shlexec", topic="dde" ddeExec expected '[open(C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\test file.sde)]', got ''
=== w1064v1809_zh_CN (testbot log) ===
The task timed out
On Thu, 26 Mar 2020, Marvin wrote: [...]
=== w1064v1809_ar (32 bit report) === === w1064v1809_he (32 bit report) === === w1064v1809_ja (32 bit report) ===
[...]
shell32: shlexec.c:2214: Test failed: ShellExecuteEx(mask="0x808040", file="C:\Users\winetest\Documents\shell32_test.exe", params="shlexec "C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\wtShlexecFile" Exec") WaitForSingleObject(hProcess) returned 258 shlexec.c:2214: Test failed: ShellExecuteEx(mask="0x808040", file="C:\Users\winetest\Documents\shell32_test.exe", params="shlexec "C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\wtShlexecFile" Exec") child returned 259 shlexec.c:2214: Test failed: ShellExecuteEx(mask="0x808040", file="C:\Users\winetest\Documents\shell32_test.exe", params="shlexec "C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\wtShlexecFile" Exec") WaitForSingleObject returned 258 shlexec.c:2214: Test failed: ShellExecuteEx(mask="0x808040", file="C:\Users\winetest\Documents\shell32_test.exe", params="shlexec "C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\wtShlexecFile" Exec") ShlexecVar expected 'Present', but key not found or empty shlexec.c:2217: Test failed: ShellExecuteEx(mask="0x808040", file="C:\Users\winetest\Documents\shell32_test.exe", params="shlexec "C:\Users\winetest\AppData\Local\Temp\wtShlexecDir\wtShlexecFile" Exec") argvA3 expected 'Exec', but key not found or empty
[...]
The task timed out
These are not actually new. The issue is that the WineTest runs time out most of the time so that no WineTest result has been added to the set of reference results since the paths became stable.
Normally that would mean no WineTest result at all which would avoid false positives, but here these configurations still have some old WineTest results from before the paths changed, hence the false positives.