run-tests: suggest to append glob when only path sep does not match
When the line does not match because of \ instead of / (on windows), append
(glob) in the expected output.
This allows to rename test-bla.t.err to test-bla.t for getting a correct
output. This worked for other failures like missing (esc), but not here.
Output example (only +- lines of diff):
Before:
- path/with/local/sep
+ path\\with\\local/sep
Now:
- path/with/local/sep
+ path/with/local/sep (glob)
--- a/tests/run-tests.py Thu Jan 16 12:06:49 2014 +0100
+++ b/tests/run-tests.py Thu Jan 16 12:08:29 2014 +0100
@@ -638,6 +638,8 @@
return rematch(el[:-6], l)
if el.endswith(" (glob)\n"):
return globmatch(el[:-8], l)
+ if os.altsep and l.replace('\\', '/') == el:
+ return '+glob'
return False
def tsttest(test, wd, options, replacements, env):
@@ -791,7 +793,12 @@
if pos in expected and expected[pos]:
el = expected[pos].pop(0)
- if linematch(el, lout):
+ r = linematch(el, lout)
+ if isinstance(r, str):
+ if r == '+glob':
+ lout = el[:-1] + ' (glob)\n'
+ r = False
+ if r:
postout.append(" " + el)
else:
if needescape(lout):
--- a/tests/test-run-tests.py Thu Jan 16 12:06:49 2014 +0100
+++ b/tests/test-run-tests.py Thu Jan 16 12:08:29 2014 +0100
@@ -27,7 +27,10 @@
assert not re.search(r'[^ \w\\/\r\n()*?]', expected + output), \
'single backslash or unknown char'
match = run_tests.linematch(expected, output)
- return bool(match)
+ if isinstance(match, str):
+ return 'special: ' + match
+ else:
+ return bool(match) # do not return match object
def wintests():
r"""test matching like running on windows
@@ -48,7 +51,7 @@
missing glob
>>> lm('/g/c/d/fg\n', '\\g\\c\\d/fg\n')
- False
+ 'special: +glob'
restore os.altsep
>>> os.altsep = _osaltsep