From patchwork Mon Mar 30 01:30:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D8343: tests: perform grep manually in test-doctest.py From: phabricator X-Patchwork-Id: 45942 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Mon, 30 Mar 2020 01:30:44 +0000 indygreg created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY 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. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D8343 AFFECTED FILES tests/test-doctest.py CHANGE DETAILS To: indygreg, #hg-reviewers Cc: mercurial-devel diff --git a/tests/test-doctest.py b/tests/test-doctest.py --- a/tests/test-doctest.py +++ b/tests/test-doctest.py @@ -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()