Mercurial > public > mercurial-scm > hg
diff tests/testlib/heredoctest.py @ 52594:b0ecab6773cf
run-tests: call heredoctest.py directly
Since we know exactly where it is, there is not need to use `python -m
heredoctest` to call it, we can just call that script.
We more the script in "testlib" to reduce the test directory clutter. We might
want to create a "tooling" directory in the future for this kind of utility.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 02 Jan 2025 16:22:14 +0100 |
parents | tests/heredoctest.py@6000f5b25c9b |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/testlib/heredoctest.py Thu Jan 02 16:22:14 2025 +0100 @@ -0,0 +1,27 @@ +import sys + + +def flush(): + sys.stdout.flush() + sys.stderr.flush() + + +globalvars = {} +lines = sys.stdin.readlines() +while lines: + l = lines.pop(0) + if l.startswith('SALT'): + print(l[:-1]) + elif l.startswith('>>> '): + snippet = l[4:] + while lines and lines[0].startswith('... '): + l = lines.pop(0) + snippet += l[4:] + c = compile(snippet, '<heredoc>', 'single') + try: + flush() + exec(c, globalvars) + flush() + except Exception as inst: + flush() + print(repr(inst))