reactos/modules/rostests/apitests/crt/system.c
Katayama Hirofumi MZ f172503d57
[MSVCRT][CRT_APITEST] Implement _wsystem (#5032)
Implement _wsystem(), by referring system().
Improve system().
Use WaitForSingleObject in system() and _wsystem().
Check existence of COMSPEC.
Thanks ChatGPT.
2023-03-05 21:01:14 +09:00

73 lines
1.8 KiB
C

/*
* PROJECT: ReactOS CRT
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Tests for system()
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
*/
#include <apitest.h>
#include <apitest_guard.h>
START_TEST(system)
{
int ret;
CHAR szCmdExe[MAX_PATH];
GetSystemDirectoryA(szCmdExe, _countof(szCmdExe));
lstrcatA(szCmdExe, "\\cmd.exe");
SetEnvironmentVariableA("COMSPEC", NULL);
errno = 0xDEADBEEF;
ret = system(NULL);
ok_int(errno, 0xDEADBEEF);
ok_int(ret, 1);
SetEnvironmentVariableA("COMSPEC", "InvalidComSpec");
errno = 0xDEADBEEF;
ret = system(NULL);
ok_int(errno, 0xDEADBEEF);
ok_int(ret, 1);
SetEnvironmentVariableA("COMSPEC", szCmdExe);
errno = 0xDEADBEEF;
ret = system(NULL);
ok_int(errno, 0xDEADBEEF);
ok_int(ret, 1);
SetEnvironmentVariableA("COMSPEC", NULL);
errno = 0xDEADBEEF;
ret = system("echo This is a test");
ok_int(errno, 0);
ok_int(ret, 0);
SetEnvironmentVariableA("COMSPEC", "InvalidComSpec");
errno = 0xDEADBEEF;
ret = system("echo This is a test");
ok_int(errno, 0);
ok_int(ret, 0);
SetEnvironmentVariableA("COMSPEC", szCmdExe);
errno = 0xDEADBEEF;
ret = system("echo This is a test");
ok_int(errno, 0);
ok_int(ret, 0);
SetEnvironmentVariableA("COMSPEC", NULL);
errno = 0xDEADBEEF;
ret = system("InvalidCommandLine");
ok_int(errno, 0);
ok_int(ret, 1);
SetEnvironmentVariableA("COMSPEC", "InvalidComSpec");
errno = 0xDEADBEEF;
ret = system("InvalidCommandLine");
ok_int(errno, 0);
ok_int(ret, 1);
SetEnvironmentVariableA("COMSPEC", szCmdExe);
errno = 0xDEADBEEF;
ret = system("InvalidCommandLine");
ok_int(errno, 0);
ok_int(ret, 1);
}