shell32/tests: Fix a test_argify() check that fails on NT4 and Windows 2000.
This commit is contained in:
parent
82c1fb41aa
commit
47d4041dc1
|
@ -704,7 +704,7 @@ static int StrCmpPath(const char* s1, const char* s2)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _okChildString(const char* file, int line, const char* key, const char* expected)
|
static void _okChildString(const char* file, int line, const char* key, const char* expected, const char* bad)
|
||||||
{
|
{
|
||||||
char* result;
|
char* result;
|
||||||
result=getChildString("Arguments", key);
|
result=getChildString("Arguments", key);
|
||||||
|
@ -713,7 +713,8 @@ static void _okChildString(const char* file, int line, const char* key, const ch
|
||||||
ok_(file, line)(FALSE, "%s expected '%s', but key not found or empty\n", key, expected);
|
ok_(file, line)(FALSE, "%s expected '%s', but key not found or empty\n", key, expected);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ok_(file, line)(lstrcmpiA(result, expected) == 0,
|
ok_(file, line)(lstrcmpiA(result, expected) == 0 ||
|
||||||
|
broken(lstrcmpiA(result, bad) == 0),
|
||||||
"%s expected '%s', got '%s'\n", key, expected, result);
|
"%s expected '%s', got '%s'\n", key, expected, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -738,7 +739,8 @@ static void _okChildInt(const char* file, int line, const char* key, int expecte
|
||||||
"%s expected %d, but got %d\n", key, expected, result);
|
"%s expected %d, but got %d\n", key, expected, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define okChildString(key, expected) _okChildString(__FILE__, __LINE__, (key), (expected))
|
#define okChildString(key, expected) _okChildString(__FILE__, __LINE__, (key), (expected), (expected))
|
||||||
|
#define okChildStringBroken(key, expected, broken) _okChildString(__FILE__, __LINE__, (key), (expected), (broken))
|
||||||
#define okChildPath(key, expected) _okChildPath(__FILE__, __LINE__, (key), (expected))
|
#define okChildPath(key, expected) _okChildPath(__FILE__, __LINE__, (key), (expected))
|
||||||
#define okChildInt(key, expected) _okChildInt(__FILE__, __LINE__, (key), (expected))
|
#define okChildInt(key, expected) _okChildInt(__FILE__, __LINE__, (key), (expected))
|
||||||
|
|
||||||
|
@ -1219,6 +1221,7 @@ typedef struct
|
||||||
const char* params;
|
const char* params;
|
||||||
int todo;
|
int todo;
|
||||||
cmdline_tests_t cmd;
|
cmdline_tests_t cmd;
|
||||||
|
cmdline_tests_t broken;
|
||||||
} argify_tests_t;
|
} argify_tests_t;
|
||||||
|
|
||||||
static const argify_tests_t argify_tests[] =
|
static const argify_tests_t argify_tests[] =
|
||||||
|
@ -1324,7 +1327,9 @@ static const argify_tests_t argify_tests[] =
|
||||||
/* An unclosed quoted string gets lost! */
|
/* An unclosed quoted string gets lost! */
|
||||||
{"Params23456", "p2 \"p3\" \"p4 is lost", 0x1c3,
|
{"Params23456", "p2 \"p3\" \"p4 is lost", 0x1c3,
|
||||||
{" \"p2\" \"p3\" \"\" \"\" \"\"",
|
{" \"p2\" \"p3\" \"\" \"\" \"\"",
|
||||||
{"", "p2", "p3", "", "", "", NULL}, 0}},
|
{"", "p2", "p3", "", "", "", NULL}, 0},
|
||||||
|
{" \"p2\" \"p3\" \"p3\" \"\" \"\"",
|
||||||
|
{"", "p2", "p3", "p3", "", "", NULL}, 0}},
|
||||||
|
|
||||||
/* Backslashes have no special meaning even when preceding quotes. All
|
/* Backslashes have no special meaning even when preceding quotes. All
|
||||||
* they do is start an unquoted string.
|
* they do is start an unquoted string.
|
||||||
|
@ -1376,6 +1381,7 @@ static void test_argify(void)
|
||||||
char fileA[MAX_PATH], params[2*MAX_PATH+12];
|
char fileA[MAX_PATH], params[2*MAX_PATH+12];
|
||||||
INT_PTR rc;
|
INT_PTR rc;
|
||||||
const argify_tests_t* test;
|
const argify_tests_t* test;
|
||||||
|
const cmdline_tests_t *bad;
|
||||||
const char* cmd;
|
const char* cmd;
|
||||||
unsigned i, count;
|
unsigned i, count;
|
||||||
|
|
||||||
|
@ -1392,6 +1398,8 @@ static void test_argify(void)
|
||||||
test = argify_tests;
|
test = argify_tests;
|
||||||
while (test->params)
|
while (test->params)
|
||||||
{
|
{
|
||||||
|
bad = test->broken.cmd ? &test->broken : &test->cmd;
|
||||||
|
|
||||||
/* trace("***** verb='%s' params='%s'\n", test->verb, test->params); */
|
/* trace("***** verb='%s' params='%s'\n", test->verb, test->params); */
|
||||||
rc = shell_execute_ex(SEE_MASK_DOENVSUBST, test->verb, fileA, test->params, NULL, NULL);
|
rc = shell_execute_ex(SEE_MASK_DOENVSUBST, test->verb, fileA, test->params, NULL, NULL);
|
||||||
ok(rc > 32, "%s failed: rc=%lu\n", shell_call, rc);
|
ok(rc > 32, "%s failed: rc=%lu\n", shell_call, rc);
|
||||||
|
@ -1415,18 +1423,20 @@ static void test_argify(void)
|
||||||
if (cmd) cmd += strlen(test->verb);
|
if (cmd) cmd += strlen(test->verb);
|
||||||
if (!cmd) cmd = "(null)";
|
if (!cmd) cmd = "(null)";
|
||||||
if ((test->todo & 0x2) == 0)
|
if ((test->todo & 0x2) == 0)
|
||||||
ok(!strcmp(cmd, test->cmd.cmd), "%s: the cmdline is '%s' instead of '%s'\n", shell_call, cmd, test->cmd.cmd);
|
ok(!strcmp(cmd, test->cmd.cmd) || broken(!strcmp(cmd, bad->cmd)),
|
||||||
|
"%s: the cmdline is '%s' instead of '%s'\n", shell_call, cmd, test->cmd.cmd);
|
||||||
else todo_wine
|
else todo_wine
|
||||||
ok(!strcmp(cmd, test->cmd.cmd), "%s: the cmdline is '%s' instead of '%s'\n", shell_call, cmd, test->cmd.cmd);
|
ok(!strcmp(cmd, test->cmd.cmd) || broken(!strcmp(cmd, bad->cmd)),
|
||||||
|
"%s: the cmdline is '%s' instead of '%s'\n", shell_call, cmd, test->cmd.cmd);
|
||||||
|
|
||||||
for (i = 0; i < count - 1; i++)
|
for (i = 0; i < count - 1; i++)
|
||||||
{
|
{
|
||||||
char argname[18];
|
char argname[18];
|
||||||
sprintf(argname, "argvA%d", 4 + i);
|
sprintf(argname, "argvA%d", 4 + i);
|
||||||
if ((test->todo & (1 << (i+4))) == 0)
|
if ((test->todo & (1 << (i+4))) == 0)
|
||||||
okChildString(argname, test->cmd.args[i+1]);
|
okChildStringBroken(argname, test->cmd.args[i+1], bad->args[i+1]);
|
||||||
else todo_wine
|
else todo_wine
|
||||||
okChildString(argname, test->cmd.args[i+1]);
|
okChildStringBroken(argname, test->cmd.args[i+1], bad->args[i+1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (has_cl2a)
|
if (has_cl2a)
|
||||||
|
|
Loading…
Reference in New Issue