Author: hbelusca
Date: Wed Oct 10 21:19:45 2012
New Revision: 57531
URL:
http://svn.reactos.org/svn/reactos?rev=57531&view=rev
Log:
[MSVCRT:APITEST]
Update CommandLine test.
Modified:
trunk/rostests/apitests/msvcrt/CommandLine.c
Modified: trunk/rostests/apitests/msvcrt/CommandLine.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/msvcrt/CommandLi…
==============================================================================
--- trunk/rostests/apitests/msvcrt/CommandLine.c [iso-8859-1] (original)
+++ trunk/rostests/apitests/msvcrt/CommandLine.c [iso-8859-1] Wed Oct 10 21:19:45 2012
@@ -86,26 +86,29 @@
return;
}
-
+/******************************************************************************/
+
+/* The path to the utility program run by this test. */
+static WCHAR UtilityProgramDirectory[MAX_PATH];
+
+/* The list of tests. */
typedef struct _TEST_CASE
{
LPWSTR CmdLine;
+ BOOL bEncloseProgramNameInQuotes;
} TEST_CASE, *PTEST_CASE;
static TEST_CASE TestCases[] =
{
- {L"CmdLineUtil.exe"},
- {L"CmdLineUtil.exe foo bar"},
- {L"CmdLineUtil.exe \"foo bar\""},
- {L"CmdLineUtil.exe foo \"bar John\" Doe"},
-
- {L"\"CmdLineUtil.exe\""},
- {L"\"CmdLineUtil.exe\" foo bar"},
- {L"\"CmdLineUtil.exe\" \"foo bar\""},
- {L"\"CmdLineUtil.exe\" foo \"bar John\" Doe"},
-
- {L"\"CmdLineUtil.exe\""},
- {L"\"CmdLineUtil.exe \"foo bar\"\""},
+ {L"", FALSE},
+ {L"foo bar", FALSE},
+ {L"\"foo bar\"", FALSE},
+ {L"foo \"bar John\" Doe", FALSE},
+
+ {L"", TRUE},
+ {L"foo bar", TRUE},
+ {L"\"foo bar\"", TRUE},
+ {L"foo \"bar John\" Doe", TRUE},
};
static void Test_CommandLine(IN ULONG TestNumber,
@@ -113,7 +116,8 @@
{
BOOL bRet;
- WCHAR CmdLine[MAX_PATH];
+ BOOL bWasntInQuotes = (UtilityProgramDirectory[0] != L'"');
+ WCHAR CmdLine[MAX_PATH] = L"";
STARTUPINFOW si;
PROCESS_INFORMATION pi;
@@ -121,7 +125,19 @@
ZeroMemory(&pi, sizeof(pi));
si.cb = sizeof(si);
- wcscpy(CmdLine, TestCase->CmdLine);
+
+ /* Initialize the command line. */
+ if (TestCase->bEncloseProgramNameInQuotes && bWasntInQuotes)
+ wcscpy(CmdLine, L"\"");
+
+ wcscat(CmdLine, UtilityProgramDirectory);
+
+ if (TestCase->bEncloseProgramNameInQuotes && bWasntInQuotes)
+ wcscat(CmdLine, L"\"");
+
+ wcscat(CmdLine, L" ");
+ wcscat(CmdLine, TestCase->CmdLine);
+
/*
* Launch the utility program and wait till it's terminated.
@@ -133,7 +149,7 @@
CREATE_UNICODE_ENVIRONMENT,
NULL, NULL,
&si, &pi);
- ok(bRet, "Test %lu - Failed to launch ' %S ', error = %lu.\n",
TestNumber, TestCase->CmdLine, GetLastError());
+ ok(bRet, "Test %lu - Failed to launch ' %S ', error = %lu.\n",
TestNumber, CmdLine, GetLastError());
if (bRet)
{
@@ -269,6 +285,34 @@
{
ULONG i;
+ DWORD dwError;
+ LPWSTR p = NULL;
+
+
+ /*
+ * Initialize the UtilityProgramDirectory variable.
+ */
+ GetModuleFileNameW(NULL, UtilityProgramDirectory,
COUNT_OF(UtilityProgramDirectory));
+ dwError = GetLastError();
+ ok(dwError == ERROR_SUCCESS, "ERROR: Cannot retrieve the path to the current
running process, last error %lu\n", dwError);
+ if (dwError != ERROR_SUCCESS) return;
+
+ /* Path : executable.exe or "executable.exe" or C:\path\executable.exe or
"C:\path\executable.exe" */
+ p = wcsrchr(UtilityProgramDirectory, L'\\');
+ if (p && *p != 0)
+ *++p = 0; /* Null-terminate there : C:\path\ or "C:\path\ */
+ else
+ UtilityProgramDirectory[0] = 0; /* Suppress the executable.exe name */
+
+ wcscat(UtilityProgramDirectory, L"data\\CmdLineUtil.exe");
+
+ /* Close the opened quote if needed, and add a separating space */
+ if (UtilityProgramDirectory[0] == L'"') wcscat(UtilityProgramDirectory,
L"\"");
+
+
+ /*
+ * Now launch the tests.
+ */
for (i = 0 ; i < COUNT_OF(TestCases) ; ++i)
{
Test_CommandLine(i, &TestCases[i]);