Jacek Caban : cmd: Added @or_broken@ handling to test templates and use it to fix tests on win2k.
Alexandre Julliard
julliard at winehq.org
Thu Mar 18 11:19:31 CDT 2010
Module: wine
Branch: master
Commit: e486a02157f145ccd5853d73cf5b3514d41be9d1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e486a02157f145ccd5853d73cf5b3514d41be9d1
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Mar 18 01:28:19 2010 +0100
cmd: Added @or_broken@ handling to test templates and use it to fix tests on win2k.
---
programs/cmd/tests/batch.c | 39 ++++++++++++++++++++++++-----
programs/cmd/tests/test_builtins.cmd | 1 +
programs/cmd/tests/test_builtins.cmd.exp | 1 +
3 files changed, 34 insertions(+), 7 deletions(-)
diff --git a/programs/cmd/tests/batch.c b/programs/cmd/tests/batch.c
index ca40ada..e31fdc0 100644
--- a/programs/cmd/tests/batch.c
+++ b/programs/cmd/tests/batch.c
@@ -101,9 +101,11 @@ static const char *compare_line(const char *out_line, const char *out_end, const
const char *exp_end)
{
const char *out_ptr = out_line, *exp_ptr = exp_line;
+ const char *err = NULL;
static const char pwd_cmd[] = {'@','p','w','d','@'};
static const char todo_space_cmd[] = {'@','t','o','d','o','_','s','p','a','c','e','@'};
+ static const char or_broken_cmd[] = {'@','o','r','_','b','r','o','k','e','n','@'};
while(exp_ptr < exp_end) {
if(*exp_ptr == '@') {
@@ -111,11 +113,13 @@ static const char *compare_line(const char *out_line, const char *out_end, const
&& !memcmp(exp_ptr, pwd_cmd, sizeof(pwd_cmd))) {
exp_ptr += sizeof(pwd_cmd);
if(out_end-out_ptr < workdir_len
- || (CompareStringA(LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE, out_ptr, workdir_len,
- workdir, workdir_len) != CSTR_EQUAL))
- return out_ptr;
- out_ptr += workdir_len;
- continue;
+ || (CompareStringA(LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE, out_ptr, workdir_len,
+ workdir, workdir_len) != CSTR_EQUAL)) {
+ err = out_ptr;
+ }else {
+ out_ptr += workdir_len;
+ continue;
+ }
}else if(exp_ptr+sizeof(todo_space_cmd) <= exp_end
&& !memcmp(exp_ptr, todo_space_cmd, sizeof(todo_space_cmd))) {
exp_ptr += sizeof(todo_space_cmd);
@@ -123,10 +127,31 @@ static const char *compare_line(const char *out_line, const char *out_end, const
if(out_ptr < out_end && *out_ptr == ' ')
out_ptr++;
continue;
+ }else if(exp_ptr+sizeof(or_broken_cmd) <= exp_end
+ && !memcmp(exp_ptr, or_broken_cmd, sizeof(or_broken_cmd))) {
+ exp_ptr = exp_end;
+ continue;
}
+ }else if(out_ptr == out_end || *out_ptr != *exp_ptr) {
+ err = out_ptr;
}
- if(out_ptr == out_end || *out_ptr != *exp_ptr++)
- return out_ptr;
+
+ if(err) {
+ if(!broken(1))
+ return err;
+
+ while(exp_ptr+sizeof(or_broken_cmd) <= exp_end && memcmp(exp_ptr, or_broken_cmd, sizeof(or_broken_cmd)))
+ exp_ptr++;
+ if(!exp_ptr)
+ return err;
+
+ exp_ptr += sizeof(or_broken_cmd);
+ out_ptr = out_line;
+ err = NULL;
+ continue;
+ }
+
+ exp_ptr++;
out_ptr++;
}
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd
index 696ce13..bae19b8 100644
--- a/programs/cmd/tests/test_builtins.cmd
+++ b/programs/cmd/tests/test_builtins.cmd
@@ -23,6 +23,7 @@ cd dummydir
echo %~dp0
cd ..
rmdir dummydir
+echo CD value %CD%
echo %%
echo P%
echo %P
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index 55fc9f2..ad50358 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -16,6 +16,7 @@ bar
~dp0 should be directory containing batch file
@pwd@\
@pwd@\
+CD value @pwd@@or_broken at CD value
%
P
P
More information about the wine-cvs
mailing list