From e486a02157f145ccd5853d73cf5b3514d41be9d1 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 18 Mar 2010 01:28:19 +0100 Subject: [PATCH] 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 ca40ada362e..e31fdc0d244 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 696ce1339a5..bae19b854c6 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 55fc9f29c83..ad503588df0 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@CD value % P P -- 2.11.4.GIT