# HG changeset patch # User Sean Farley # Date 1512082134 28800 # Node ID 80b8188a6eb1e2535e829bb76b3b2b3bc8dd295f # Parent c64b73b9783f24249d7eae77446a6e2d717f7022 tests: add doctest test so we don't regress with those diff -r c64b73b9783f -r 80b8188a6eb1 tests/test-doctest.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-doctest.py Thu Nov 30 14:48:54 2017 -0800 @@ -0,0 +1,49 @@ +# this is hack to make sure no escape characters are inserted into the output + +from __future__ import absolute_import + +import doctest +import os +import re +import sys + +ispy3 = (sys.version_info[0] >= 3) + +# add hggit/ to sys.path +sys.path.insert(0, os.path.join(os.environ["TESTDIR"], "..")) + +if 'TERM' in os.environ: + del os.environ['TERM'] + +class py3docchecker(doctest.OutputChecker): + def check_output(self, want, got, optionflags): + want2 = re.sub(r'''\bu(['"])(.*?)\1''', r'\1\2\1', want) # py2: u'' + got2 = re.sub(r'''\bb(['"])(.*?)\1''', r'\1\2\1', got) # py3: b'' + # py3: : b'' -> : + # : -> : + got2 = re.sub(r'''^hggit\.\w+\.(\w+): (['"])(.*?)\2''', r'\1: \3', + got2, re.MULTILINE) + got2 = re.sub(r'^hggit\.\w+\.(\w+): ', r'\1: ', got2, re.MULTILINE) + return any(doctest.OutputChecker.check_output(self, w, g, optionflags) + for w, g in [(want, got), (want2, got2)]) + +def testmod(name, optionflags=0, testtarget=None): + __import__(name) + mod = sys.modules[name] + if testtarget is not None: + mod = getattr(mod, testtarget) + + # minimal copy of doctest.testmod() + finder = doctest.DocTestFinder() + checker = None + if ispy3: + checker = py3docchecker() + runner = doctest.DocTestRunner(checker=checker, optionflags=optionflags) + for test in finder.find(mod, name): + runner.run(test) + runner.summarize() + +testmod('hggit.compat') +testmod('hggit.hg2git') +testmod('hggit.util') +testmod('hggit.git_handler')