/*
 * 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);
}