mirror of
https://github.com/facebook/sapling.git
synced 2024-10-12 01:39:21 +03:00
1499191e20
Summary:
The added method takes an environment (`props`), and a program written in
the template language, execute the program, and pass output to `ui.write`.
The API is similar to the upstream [1]. But it avoids `ctx` intentionally.
Since the "environment" should be more flexible than having to have a `ctx`.
[1]: aa32940279
Reviewed By: mitrandir77
Differential Revision: D8221079
fbshipit-source-id: 94ee5c563f943330ef91966a4883c5733cc8dac9
87 lines
2.5 KiB
Python
87 lines
2.5 KiB
Python
# 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
|
|
|
|
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: <exc.name>: b'<msg>' -> <name>: <msg>
|
|
# <exc.name>: <others> -> <name>: <others>
|
|
got2 = re.sub(
|
|
r"""^mercurial\.\w+\.(\w+): (['"])(.*?)\2""", r"\1: \3", got2, re.MULTILINE
|
|
)
|
|
got2 = re.sub(r"^mercurial\.\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("mercurial.changegroup")
|
|
testmod("mercurial.changelog")
|
|
testmod("mercurial.cmdutil")
|
|
testmod("mercurial.color")
|
|
testmod("mercurial.config")
|
|
testmod("mercurial.context")
|
|
testmod("mercurial.dagparser", optionflags=doctest.NORMALIZE_WHITESPACE)
|
|
testmod("mercurial.dispatch")
|
|
testmod("mercurial.drawdag")
|
|
testmod("mercurial.encoding")
|
|
testmod("mercurial.fancyopts")
|
|
testmod("mercurial.formatter")
|
|
testmod("mercurial.hg")
|
|
testmod("mercurial.hgweb.hgwebdir_mod")
|
|
testmod("mercurial.match")
|
|
testmod("mercurial.mdiff")
|
|
testmod("mercurial.minirst")
|
|
testmod("mercurial.patch")
|
|
testmod("mercurial.pathutil")
|
|
testmod("mercurial.parser")
|
|
testmod("mercurial.pycompat")
|
|
testmod("mercurial.revsetlang")
|
|
testmod("mercurial.smartset")
|
|
testmod("mercurial.store")
|
|
testmod("mercurial.subrepo")
|
|
testmod("mercurial.templatefilters")
|
|
testmod("mercurial.templater")
|
|
testmod("mercurial.ui")
|
|
testmod("mercurial.url")
|
|
testmod("mercurial.util")
|
|
testmod("mercurial.util", testtarget="platform")
|
|
testmod("hgext.convert.convcmd")
|
|
testmod("hgext.convert.cvsps")
|
|
testmod("hgext.convert.filemap")
|
|
testmod("hgext.convert.p4")
|
|
testmod("hgext.convert.subversion")
|
|
testmod("hgext.mq")
|