Mercurial > hg
changeset 44656:15aef805619d
tests: perform grep manually in test-doctest.py
This test has been failing on Windows since 0af56d3ee24c
introduced the `hg files` invocation. Specifically, Windows seems
to be choking on special characters in the fileset pattern. I
believe at least \n and > were causing issues.
I attempted various incantations to make the Windows command line
parser accept the fileset but couldn't get anything working.
I declared bankruptcy and just reimplemented the grepping code
in Python.
After this change, the test now passes on Windows again.
Differential Revision: https://phab.mercurial-scm.org/D8343
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 29 Mar 2020 15:29:39 -0700 |
parents | 47e6ec977555 |
children | 843418dc0b1b |
files | tests/test-doctest.py |
diffstat | 1 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-doctest.py Sun Mar 29 14:31:59 2020 -0700 +++ b/tests/test-doctest.py Sun Mar 29 15:29:39 2020 -0700 @@ -68,20 +68,26 @@ 'tests.test-url': [{'optionflags': doctest.NORMALIZE_WHITESPACE}], } -doctest_indicator = '\n\\s*>>> ' -fileset = 'set:(**.py and grep("%s"))' % doctest_indicator +fileset = 'set:(**.py)' + +cwd = os.path.dirname(os.environ["TESTDIR"]) files = subprocess.check_output( - "hg files --print0 '%s'" % fileset, - shell=True, - cwd=os.path.dirname(os.environ['TESTDIR']), + "hg files --print0 \"%s\"" % fileset, shell=True, cwd=cwd, ).split(b'\0') +if sys.version_info[0] >= 3: + cwd = os.fsencode(cwd) + mods_tested = set() for f in files: if not f: continue + with open(os.path.join(cwd, f), "rb") as fh: + if not re.search(br'\n\s*>>>', fh.read()): + continue + if ispy3: f = f.decode()