Mercurial > public > mercurial-scm > hg-stable
diff tests/run-tests.py @ 12375:02990e22150b
tests: require regexes in unified tests to be marked with " (re)"
Consider this test:
$ hg glog --template '{rev}:{node|short} "{desc}"\n'
@ 2:20c4f79fd7ac "3"
|
| o 1:38f24201dcab "2"
|/
o 0:2a18120dc1c9 "1"
Because each line beginning with "|" can be compiled as a regular
expression (equivalent to ".*|"), they will match any output.
Similarly:
$ echo foo
The blank output line can be compiled as a regular expression and will
also match any output.
With this patch, none of the above output lines will be matched as
regular expressions. A line must end in " (re)" in order to be matched
as one.
Lines are still matched literally first, so the following will pass:
$ echo 'foo (re)'
foo (re)
author | Brodie Rao <brodie@bitheap.org> |
---|---|
date | Wed, 22 Sep 2010 16:06:00 -0500 |
parents | 4e7dd28db0dd |
children | 97ffc68f71d3 |
line wrap: on
line diff
--- a/tests/run-tests.py Wed Sep 22 16:05:59 2010 -0500 +++ b/tests/run-tests.py Wed Sep 22 16:06:00 2010 -0500 @@ -503,9 +503,6 @@ def rematch(el, l): try: - # hack to deal with graphlog, which looks like bogus regexes - if el.startswith('|'): - el = '\\' + el # ensure that the regex matches to the end of the string return re.match(el + r'\Z', l) except re.error: @@ -531,10 +528,10 @@ if el == l: # perfect match (fast) postout.append(" " + l) - elif el and el[2:] and rematch(el, l): # fallback regex match - postout.append(" " + el) - else: # mismatch - let diff deal with it - postout.append(" " + l) + elif el and el.endswith(" (re)\n") and rematch(el[:-6] + '\n', l): + postout.append(" " + el) # fallback regex match + else: + postout.append(" " + l) # let diff deal with it if pos in after: postout += after.pop(pos)