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