diff --git a/tests/helpers-testrepo.sh b/tests/helpers-testrepo.sh --- a/tests/helpers-testrepo.sh +++ b/tests/helpers-testrepo.sh @@ -1,19 +1,27 @@ -# The test-repo is a live hg repository which may have evolution -# markers created, e.g. when a ~/.hgrc enabled evolution. +# Invoke the system hg installation (rather than the local hg version being +# tested). # -# Tests are run using a custom HGRCPATH, which do not -# enable evolution markers by default. +# We want to use the hg version being tested when interacting with the test +# repository, and the system hg when interacting with the mercurial source code +# repository. # -# If test-repo includes evolution markers, and we do not -# enable evolution markers, hg will occasionally complain -# when it notices them, which disrupts tests resulting in -# sporadic failures. -# -# Since we aren't performing any write operations on the -# test-repo, there's no harm in telling hg that we support -# evolution markers, which is what the following lines -# for the hgrc file do: -cat >> $HGRCPATH << EOF -[experimental] -evolution=createmarkers -EOF +# The mercurial source repository was typically orignally cloned with the +# system mercurial installation, and may require extensions or settings from +# the system installation. +syshg () { + ( + syshgenv + exec hg "$@" + ) +} + +# Revert the environment so that running "hg" runs the system hg +# rather than the test hg installation. +syshgenv () { + PATH="$ORIG_PATH" + PYTHONPATH="$ORIG_PYTHONPATH" + JYTHONPATH="$ORIG_JYTHONPATH" + unset HGRCPATH + HGPLAIN=1 + export HGPLAIN +} diff --git a/tests/test-check-code.t b/tests/test-check-code.t --- a/tests/test-check-code.t +++ b/tests/test-check-code.t @@ -7,7 +7,7 @@ New errors are not allowed. Warnings are strongly discouraged. (The writing "no-che?k-code" is for not skipping this file when checking.) - $ hg locate -X contrib/python-zstandard -X hgext/fsmonitor/pywatchman | + $ syshg locate -X contrib/python-zstandard -X hgext/fsmonitor/pywatchman | > sed 's-\\-/-g' | "$check_code" --warnings --per-file=0 - || false Skipping i18n/polib.py it has no-che?k-code (glob) Skipping mercurial/httpclient/__init__.py it has no-che?k-code (glob) @@ -33,7 +33,7 @@ New errors are not allowed. Warnings are Prevent adding new files in the root directory accidentally. - $ hg files 'glob:*' + $ syshg files 'glob:*' .editorconfig .hgignore .hgsigs diff --git a/tests/test-check-commit.t b/tests/test-check-commit.t --- a/tests/test-check-commit.t +++ b/tests/test-check-commit.t @@ -8,8 +8,8 @@ Go back in the hg repo $ cd $TESTDIR/.. - $ for node in `hg log --rev 'not public() and ::. and not desc("# no-check-commit")' --template '{node|short}\n'`; do - > hg export --git $node | contrib/check-commit > ${TESTTMP}/check-commit.out + $ for node in `syshg log --rev 'not public() and ::. and not desc("# no-check-commit")' --template '{node|short}\n'`; do + > syshg export --git $node | contrib/check-commit > ${TESTTMP}/check-commit.out > if [ $? -ne 0 ]; then > echo "Revision $node does not comply with rules" > echo '------------------------------------------------------' diff --git a/tests/test-check-config.t b/tests/test-check-config.t --- a/tests/test-check-config.t +++ b/tests/test-check-config.t @@ -31,7 +31,7 @@ Sanity check check-config.py New errors are not allowed. Warnings are strongly discouraged. - $ hg files "set:(**.py or **.txt) - tests/**" | sed 's|\\|/|g' | + $ syshg files "set:(**.py or **.txt) - tests/**" | sed 's|\\|/|g' | > $PYTHON contrib/check-config.py limit = ui.configwith(fraction, 'profiling', 'showmin', 0.05) diff --git a/tests/test-check-execute.t b/tests/test-check-execute.t --- a/tests/test-check-execute.t +++ b/tests/test-check-execute.t @@ -5,20 +5,20 @@ look for python scripts without the execute bit - $ hg files 'set:**.py and not exec() and grep(r"^#!.*?python")' + $ syshg files 'set:**.py and not exec() and grep(r"^#!.*?python")' [1] look for python scripts with execute bit but not shebang - $ hg files 'set:**.py and exec() and not grep(r"^#!.*?python")' + $ syshg files 'set:**.py and exec() and not grep(r"^#!.*?python")' [1] look for shell scripts with execute bit but not shebang - $ hg files 'set:**.sh and exec() and not grep(r"^#!.*(ba)?sh")' + $ syshg files 'set:**.sh and exec() and not grep(r"^#!.*(ba)?sh")' [1] look for non scripts with no shebang - $ hg files 'set:exec() and not **.sh and not **.py and not grep(r"^#!")' + $ syshg files 'set:exec() and not **.sh and not **.py and not grep(r"^#!")' [1] diff --git a/tests/test-check-help.t b/tests/test-check-help.t --- a/tests/test-check-help.t +++ b/tests/test-check-help.t @@ -23,6 +23,7 @@ Check if ":hg:`help TOPIC`" is valid: (use "xargs -n1 -t" to see which help commands are executed) - $ hg files 'glob:{hgdemandimport,hgext,mercurial}/**/*.py' | sed 's|\\|/|g' \ + $ syshg files 'glob:{hgdemandimport,hgext,mercurial}/**/*.py' \ + > | sed 's|\\|/|g' \ > | xargs $PYTHON "$TESTTMP/scanhelptopics.py" \ > | xargs -n1 hg help > /dev/null diff --git a/tests/test-check-module-imports.t b/tests/test-check-module-imports.t --- a/tests/test-check-module-imports.t +++ b/tests/test-check-module-imports.t @@ -14,7 +14,7 @@ these may expose other cycles. Known-bad files are excluded by -X as some of them would produce unstable outputs, which should be fixed later. - $ hg locate 'set:**.py or grep(r"^#!.*?python")' \ + $ syshg locate 'set:**.py or grep(r"^#!.*?python")' \ > 'tests/**.t' \ > -X contrib/debugshell.py \ > -X contrib/python-zstandard/ \ diff --git a/tests/test-check-py3-compat.t b/tests/test-check-py3-compat.t --- a/tests/test-check-py3-compat.t +++ b/tests/test-check-py3-compat.t @@ -3,7 +3,7 @@ $ . "$TESTDIR/helpers-testrepo.sh" $ cd "$TESTDIR"/.. - $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs $PYTHON contrib/check-py3-compat.py + $ syshg files 'set:(**.py)' | sed 's|\\|/|g' | xargs $PYTHON contrib/check-py3-compat.py contrib/python-zstandard/setup.py not using absolute_import contrib/python-zstandard/setup_zstd.py not using absolute_import contrib/python-zstandard/tests/common.py not using absolute_import @@ -22,7 +22,7 @@ tests/test-demandimport.py not using absolute_import #if py3exe - $ hg files 'set:(**.py) - grep(pygments)' -X hgext/fsmonitor/pywatchman \ + $ syshg files 'set:(**.py) - grep(pygments)' -X hgext/fsmonitor/pywatchman \ > | sed 's|\\|/|g' | xargs $PYTHON3 contrib/check-py3-compat.py \ > | sed 's/[0-9][0-9]*)$/*)/' hgext/convert/transport.py: error importing: <*Error> No module named 'svn.client' (error at transport.py:*) (glob) @@ -38,7 +38,7 @@ #endif #if py3exe py3pygments - $ hg files 'set:(**.py) and grep(pygments)' | sed 's|\\|/|g' \ + $ syshg files 'set:(**.py) and grep(pygments)' | sed 's|\\|/|g' \ > | xargs $PYTHON3 contrib/check-py3-compat.py \ > | sed 's/[0-9][0-9]*)$/*)/' #endif diff --git a/tests/test-check-pyflakes.t b/tests/test-check-pyflakes.t --- a/tests/test-check-pyflakes.t +++ b/tests/test-check-pyflakes.t @@ -6,7 +6,8 @@ run pyflakes on all tracked files ending in .py or without a file ending (skipping binary file random-seed) - $ hg locate 'set:**.py or grep("^#!.*python")' -X hgext/fsmonitor/pywatchman \ + $ syshg locate 'set:**.py or grep("^#!.*python")' \ + > -X hgext/fsmonitor/pywatchman \ > -X mercurial/pycompat.py -X contrib/python-zstandard \ > 2>/dev/null \ > | xargs pyflakes 2>/dev/null | "$TESTDIR/filterpyflakes.py" diff --git a/tests/test-check-shbang.t b/tests/test-check-shbang.t --- a/tests/test-check-shbang.t +++ b/tests/test-check-shbang.t @@ -5,11 +5,11 @@ look for python scripts that do not use /usr/bin/env - $ hg files 'set:grep(r"^#!.*?python") and not grep(r"^#!/usr/bi{1}n/env python") - **/*.t' + $ syshg files 'set:grep(r"^#!.*?python") and not grep(r"^#!/usr/bi{1}n/env python") - **/*.t' [1] In tests, enforce $PYTHON and *not* /usr/bin/env python or similar: - $ hg files 'set:grep(r"#!.*?python") and **/*.t' \ + $ syshg files 'set:grep(r"#!.*?python") and **/*.t' \ > -X tests/test-check-execute.t \ > -X tests/test-check-module-imports.t \ > -X tests/test-check-pyflakes.t \ @@ -21,5 +21,5 @@ contain Python but don't end in .py - pl look for shell scripts that do not use /bin/sh - $ hg files 'set:grep(r"^#!.*/bi{1}n/sh") and not grep(r"^#!/bi{1}n/sh")' + $ syshg files 'set:grep(r"^#!.*/bi{1}n/sh") and not grep(r"^#!/bi{1}n/sh")' [1] diff --git a/tests/test-contrib-perf.t b/tests/test-contrib-perf.t --- a/tests/test-contrib-perf.t +++ b/tests/test-contrib-perf.t @@ -170,6 +170,6 @@ Check perf.py for historical portability $ cd "$TESTDIR/.." - $ (hg files -r 1.2 glob:mercurial/*.c glob:mercurial/*.py; - > hg files -r tip glob:mercurial/*.c glob:mercurial/*.py) | + $ (syshg files -r 1.2 glob:mercurial/*.c glob:mercurial/*.py; + > syshg files -r tip glob:mercurial/*.c glob:mercurial/*.py) | > "$TESTDIR"/check-perf-code.py contrib/perf.py diff --git a/tests/test-debian-packages.t b/tests/test-debian-packages.t --- a/tests/test-debian-packages.t +++ b/tests/test-debian-packages.t @@ -1,6 +1,7 @@ #require test-repo slow debhelper $ . "$TESTDIR/helpers-testrepo.sh" + $ syshgenv Ensure debuild doesn't run the testsuite, as that could get silly. $ DEB_BUILD_OPTIONS=nocheck diff --git a/tests/test-docker-packaging.t b/tests/test-docker-packaging.t --- a/tests/test-docker-packaging.t +++ b/tests/test-docker-packaging.t @@ -1,6 +1,7 @@ #require test-repo slow docker $ . "$TESTDIR/helpers-testrepo.sh" + $ syshgenv Ensure debuild doesn't run the testsuite, as that could get silly. $ DEB_BUILD_OPTIONS=nocheck diff --git a/tests/test-hghave.t b/tests/test-hghave.t --- a/tests/test-hghave.t +++ b/tests/test-hghave.t @@ -1,3 +1,5 @@ + $ . "$TESTDIR/helpers-testrepo.sh" + Testing that hghave does not crash when checking features $ hghave --test-features 2>/dev/null @@ -18,7 +20,10 @@ Testing hghave extensibility for third p > $ echo foo > foo > EOF - $ run-tests.py $HGTEST_RUN_TESTS_PURE test-hghaveaddon.t + $ ( \ + > syshgenv; \ + > $TESTDIR/run-tests.py $HGTEST_RUN_TESTS_PURE test-hghaveaddon.t \ + > ) . # Ran 1 tests, 0 skipped, 0 failed. diff --git a/tests/test-imports-checker.t b/tests/test-imports-checker.t --- a/tests/test-imports-checker.t +++ b/tests/test-imports-checker.t @@ -1,6 +1,7 @@ #require test-repo $ . "$TESTDIR/helpers-testrepo.sh" + $ syshgenv $ import_checker="$TESTDIR"/../contrib/import-checker.py Run the doctests from the import checker, and make sure diff --git a/tests/test-install.t b/tests/test-install.t --- a/tests/test-install.t +++ b/tests/test-install.t @@ -159,7 +159,7 @@ path variables are expanded (~ is the sa > print(' %s' % f) > EOF - $ $PYTHON wixxml.py help + $ (syshgenv; $PYTHON wixxml.py help ) Not installed: help/common.txt help/hg-ssh.8.txt @@ -168,7 +168,7 @@ path variables are expanded (~ is the sa help/hgrc.5.txt Not tracked: - $ $PYTHON wixxml.py templates + $ ( syshgenv; $PYTHON wixxml.py templates ) Not installed: Not tracked: diff --git a/tests/test-mac-packages.t b/tests/test-mac-packages.t --- a/tests/test-mac-packages.t +++ b/tests/test-mac-packages.t @@ -1,6 +1,7 @@ #require test-repo slow osx osxpackaging $ . "$TESTDIR/helpers-testrepo.sh" + $ syshgenv $ OUTPUTDIR="`pwd`" $ export OUTPUTDIR