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.
--- 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