cmd/tests: Fix test runner so it catches cases where an output line contains the associated expected line as prefix
Frédéric Delanoy
frederic.delanoy at gmail.com
Sat Jul 23 05:13:29 CDT 2011
Also fix tests which were marked as successful due to this bug.
---
programs/cmd/tests/batch.c | 9 ++++++++-
programs/cmd/tests/test_builtins.cmd | 8 ++++----
programs/cmd/tests/test_builtins.cmd.exp | 12 ++++++------
3 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/programs/cmd/tests/batch.c b/programs/cmd/tests/batch.c
index 2715b11..63a5e99 100644
--- a/programs/cmd/tests/batch.c
+++ b/programs/cmd/tests/batch.c
@@ -200,7 +200,11 @@ static const char *compare_line(const char *out_line, const char *out_end, const
out_ptr++;
}
- return exp_ptr == exp_end ? NULL : out_ptr;
+ return exp_ptr != exp_end
+ ? out_ptr
+ : (out_ptr != out_end)
+ ? exp_end
+ : NULL;
}
static void test_output(const char *out_data, DWORD out_size, const char *exp_data, DWORD exp_size)
@@ -227,6 +231,9 @@ static void test_output(const char *out_data, DWORD out_size, const char *exp_da
if(err == out_nl)
ok(0, "unexpected end of line %d (got '%.*s', wanted '%.*s')\n",
line, (int)(out_nl-out_ptr), out_ptr, (int)(exp_nl-exp_ptr), exp_ptr);
+ else if(err == exp_nl)
+ ok(0, "excess characters on line %d (got '%.*s', wanted '%.*s')\n",
+ line, (int)(out_nl-out_ptr), out_ptr, (int)(exp_nl-exp_ptr), exp_ptr);
else
ok(!err, "unexpected char 0x%x position %d in line %d (got '%.*s', wanted '%.*s')\n",
(err ? *err : 0), (err ? (int)(err-out_ptr) : -1), line, (int)(out_nl-out_ptr), out_ptr, (int)(exp_nl-exp_ptr), exp_ptr);
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd
index 851598b..f8eb9c8 100644
--- a/programs/cmd/tests/test_builtins.cmd
+++ b/programs/cmd/tests/test_builtins.cmd
@@ -189,10 +189,10 @@ goto :eof
:endForTestFun1
for %%i in (X) do (
for %%j in (Y) do (
- echo %%i %%j ))
+ echo %%i %%j))
for %%i in (A B) do (
for %%j in (C D) do (
- echo %%i %%j ))
+ echo %%i %%j))
for %%i in (A B) do (
for %%j in (C D) do (
call :forTestFun2 %%i %%j ))
@@ -383,7 +383,7 @@ if not exist foo (
echo ------------ Testing CALL --------------
mkdir foobar & cd foobar
rem External script
-echo echo foo %%1 > foo.cmd
+echo echo foo %%1> foo.cmd
call foo
call foo.cmd 8
del foo.cmd
@@ -415,7 +415,7 @@ call :setError 0
call for %%i in (foo bar baz) do echo %%i 2> nul
echo %ErrorLevel%
rem First look for programs in the path before trying a builtin
-echo echo non-builtin dir > dir.cmd
+echo echo non-builtin dir> dir.cmd
call dir /b
cd ..
rd /s/q foobar
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index 93c1534..3cc8228 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -18,13 +18,13 @@ at-echoed-word
@pwd@>echo "/?"@space@
"/?"
- at pwd@>echo.
+ at todo_wine@@pwd@>echo.
@pwd@>echo . at space@
.
- at pwd@>echo.word
+ at todo_wine@@pwd@>echo.word
word
@pwd@>echo .word at space@
@@ -73,7 +73,7 @@ FOOBAR = baz
bar
@todo_wine at FOOBAR= bar
@todo_wine at FOOBAR = baz2
-FOOBAR = baz
+FOOBAR = baz2
FOOBAR not defined
1
bar
@@ -87,7 +87,7 @@ bar
~dp0 should be directory containing batch file
@pwd@\
@pwd@\
-CD value @pwd@@or_broken at CD value
+CD value @pwd@@or_broken at CD value at space@
%
P
P
@@ -188,8 +188,8 @@ non-empty dir not removed
recursive rmdir succeeded
recursive rmdir succeeded
------------ Testing CALL --------------
-foo
-foo 8
+foo at space@
+ at todo_wine@foo 8
bar :testRoutine
@todo_wine at 0
@todo_wine at foo created
--
1.7.6
More information about the wine-patches
mailing list