Mercurial > hg
view tests/test-run-tests.py @ 23936:30b016ef4bd8 stable
check-code.py: avoid warning against "reverting subrepo ..." lines
Before this patch, "reverting subrepo subrepo/path" lines in *.t test
files require "(glob)", because such lines are recognized as
"reverting path/to/managed/file" by "check-code.py".
On the other hand, "(glob)" for such "reverting ..." line is
recognized as useless by "runt-tests.py", because subrepo paths shown
in such lines are always normalized by "util.pconvert". And this
causes "no result code from test" warning.
As a preparation for discarding "(glob)" from such lines in subsequent
patch, this patch avoids warning against them, by adding negative
lookahead assertion "(?!subrepo )" to the regexp.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Thu, 22 Jan 2015 00:10:26 +0900 |
parents | 56610da39b48 |
children | 625dd917f04f |
line wrap: on
line source
"""test line matching with some failing examples and some which warn run-test.t only checks positive matches and can not see warnings (both by design) """ import os, re # this is hack to make sure no escape characters are inserted into the output if 'TERM' in os.environ: del os.environ['TERM'] import doctest run_tests = __import__('run-tests') def lm(expected, output): r"""check if output matches expected does it generally work? >>> lm('H*e (glob)\n', 'Here\n') True fail on bad test data >>> try: lm('a\n','a') ... except AssertionError, ex: print ex missing newline >>> try: lm('single backslash\n', 'single \backslash\n') ... except AssertionError, ex: print ex single backslash or unknown char """ assert expected.endswith('\n') and output.endswith('\n'), 'missing newline' assert not re.search(r'[^ \w\\/\r\n()*?]', expected + output), \ 'single backslash or unknown char' match = run_tests.TTest.linematch(expected, output) 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 enable windows matching on any os >>> _osaltsep = os.altsep >>> os.altsep = True valid match on windows >>> lm('g/a*/d (glob)\n', 'g\\abc/d\n') True direct matching, glob unnecessary >>> lm('g/b (glob)\n', 'g/b\n') 'special: -glob' missing glob >>> lm('/g/c/d/fg\n', '\\g\\c\\d/fg\n') 'special: +glob' restore os.altsep >>> os.altsep = _osaltsep """ pass def otherostests(): r"""test matching like running on non-windows os disable windows matching on any os >>> _osaltsep = os.altsep >>> os.altsep = False backslash does not match slash >>> lm('h/a* (glob)\n', 'h\\ab\n') False direct matching glob can not be recognized >>> lm('h/b (glob)\n', 'h/b\n') True missing glob can not not be recognized >>> lm('/h/c/df/g/\n', '\\h/c\\df/g\\\n') False restore os.altsep >>> os.altsep = _osaltsep """ pass if __name__ == '__main__': doctest.testmod()