Module: wine Branch: master Commit: 6ec0e71e173c44938c3e818122edd2c83e3b4098 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6ec0e71e173c44938c3e818122...
Author: Aric Stewart aric@codeweavers.com Date: Wed Oct 15 09:30:21 2008 -0500
kernel32/tests: Add a test for CreateProcess with an AppName set.
---
dlls/kernel32/tests/process.c | 25 ++++++++++++++++++++++++- 1 files changed, 24 insertions(+), 1 deletions(-)
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c index f7ca2f8..7f716d6 100644 --- a/dlls/kernel32/tests/process.c +++ b/dlls/kernel32/tests/process.c @@ -731,6 +731,7 @@ static void test_Startup(void) static void test_CommandLine(void) { char buffer[MAX_PATH], fullpath[MAX_PATH], *lpFilePart, *p; + char buffer2[MAX_PATH]; PROCESS_INFORMATION info; STARTUPINFOA startup; DWORD len; @@ -830,7 +831,29 @@ static void test_CommandLine(void) okChildString("Arguments", "argvA0", buffer); release_memory(); assert(DeleteFileA(resfile) != 0); - + + /* Using AppName */ + get_file_name(resfile); + len = GetFullPathNameA(selfname, MAX_PATH, fullpath, &lpFilePart); + assert ( lpFilePart != 0); + *(lpFilePart -1 ) = 0; + p = strrchr(fullpath, '\'); + assert (p); + /* Use exename to avoid buffer containing things like 'C:' */ + sprintf(buffer, "..%s/%s", p, exename); + sprintf(buffer2, "dummy tests/process.c %s "a\"b\\" c\" d", resfile); + SetLastError(0xdeadbeef); + ret = CreateProcessA(buffer, buffer2, NULL, NULL, FALSE, 0L, NULL, NULL, &startup, &info); + ok(ret, "CreateProcess (%s) failed : %d\n", buffer, GetLastError()); + /* wait for child to terminate */ + ok(WaitForSingleObject(info.hProcess, 30000) == WAIT_OBJECT_0, "Child process termination\n"); + /* child process has changed result file, so let profile functions know about it */ + WritePrivateProfileStringA(NULL, NULL, NULL, resfile); + sprintf(buffer, "tests/process.c %s", resfile); + okChildString("Arguments", "argvA0", "dummy"); + okChildString("Arguments", "CommandLineA", buffer2); + release_memory(); + assert(DeleteFileA(resfile) != 0); }
static void test_Directory(void)