##// END OF EJS Templates
largefiles: factor out procedures to update lfdirstate for post-committing...
largefiles: factor out procedures to update lfdirstate for post-committing Before this patch, procedures to update lfdirstate for post-committing are scattered in "lfilesrepo.commit". In the case of "hg commit" with patterns for target files ("Case 2"), lfdirstate is updated BEFORE real committing. This patch factors out procedures to update lfdirstate for post-committing into "lfutil.markcommitted", and makes it callable via "markcommitted" of the context passed to "lfilesrepo.commitctx". "markcommitted" of the context is called, only when it is committed successfully. Passing original "markcommitted" of the context is meaningless in this patch, but required in subsequent one to prepare something before invocation of it.

File last commit:

r21315:56610da3 default
r23184:3100d1cb default
Show More
test-run-tests.py
87 lines | 2.3 KiB | text/x-python | PythonLexer
/ tests / test-run-tests.py
Simon Heimberg
tests: new test for line matching functions in run-tests...
r20271 """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)
"""
Simon Heimberg
tests: fix test-run-tests.py on OS X...
r20284 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
Simon Heimberg
tests: new test for line matching functions in run-tests...
r20271 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'
Gregory Szorc
run-tests: make linematch a static method of TTest...
r21315 match = run_tests.TTest.linematch(expected, output)
Simon Heimberg
run-tests: suggest to append glob when only path sep does not match...
r20273 if isinstance(match, str):
return 'special: ' + match
else:
return bool(match) # do not return match object
Simon Heimberg
tests: new test for line matching functions in run-tests...
r20271
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')
Simon Heimberg
run-tests: print more information on unnecessary glob matching...
r20274 'special: -glob'
Simon Heimberg
tests: new test for line matching functions in run-tests...
r20271
missing glob
>>> lm('/g/c/d/fg\n', '\\g\\c\\d/fg\n')
Simon Heimberg
run-tests: suggest to append glob when only path sep does not match...
r20273 'special: +glob'
Simon Heimberg
tests: new test for line matching functions in run-tests...
r20271
restore os.altsep
>>> os.altsep = _osaltsep
"""
Simon Heimberg
tests: fix test-run-tests.py on OS X...
r20284 pass
Simon Heimberg
tests: new test for line matching functions in run-tests...
r20271
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()