run-tests: make it possible to combine (esc) with (glob) and (re)
authorMads Kiilerich <mads@kiilerich.com>
Sun, 14 Oct 2012 18:30:42 +0200
changeset 17778 80fe64581f3a
parent 17777 af7c6bc48d8d
child 17779 f38e2873b48d
run-tests: make it possible to combine (esc) with (glob) and (re) This makes it possible to combine the annotations ... if done in the right order.
tests/run-tests.py
tests/test-run-tests.t
--- a/tests/run-tests.py	Mon Oct 15 02:33:12 2012 +0200
+++ b/tests/run-tests.py	Sun Oct 14 18:30:42 2012 +0200
@@ -526,14 +526,14 @@
 def linematch(el, l):
     if el == l: # perfect match (fast)
         return True
-    if (el and
-        (el.endswith(" (re)\n") and rematch(el[:-6], l) or
-         el.endswith(" (glob)\n") and globmatch(el[:-8], l) or
-         el.endswith(" (esc)\n") and
-             (el[:-7].decode('string-escape') + '\n' == l or
-              os.name == 'nt' and
-              el[:-7].decode('string-escape') + '\n' == l))):
-        return True
+    if el:
+        if el.endswith(" (esc)\n"):
+            el = el[:-7].decode('string-escape') + '\n'
+        if el == l or os.name == 'nt' and el[:-1] + '\r\n' == l:
+            return True
+        if (el.endswith(" (re)\n") and rematch(el[:-6], l) or
+            el.endswith(" (glob)\n") and globmatch(el[:-8], l)):
+            return True
     return False
 
 def tsttest(test, wd, options, replacements):
--- a/tests/test-run-tests.t	Mon Oct 15 02:33:12 2012 +0200
+++ b/tests/test-run-tests.t	Sun Oct 14 18:30:42 2012 +0200
@@ -62,6 +62,18 @@
   crcrlf\r (esc)
 #endif
 
+Combining esc with other markups - and handling lines ending with \r instead of \n:
+
+  $ printf 'foo/bar\r'
+  foo/bar\r (no-eol) (glob) (esc)
+#if windows
+  $ printf 'foo\\bar\r'
+  foo/bar\r (no-eol) (glob) (esc)
+#endif
+  $ printf 'foo/bar\rfoo/bar\r'
+  foo.bar\r \(no-eol\) (re) (esc)
+  foo.bar\r \(no-eol\) (re)
+
 testing hghave
 
   $ "$TESTDIR/hghave" true