# HG changeset patch # User Pierre-Yves David # Date 1625260184 -7200 # Node ID 23f5ed6dbcb11b79b9509307f02ccdf4db5b0ec5 # Parent 9b1710c502305881f95fa14ab45e6d8db2b548eb run-tests: stop writing a `python3` symlink pointing to python2 Having `python3` actually pointing to `python2` is bad. So we stop doing so. In addition we need to re-introduce a `python` executable since some of the script really need to be able to say "current python" in their shbang. For example, `hghave` is one of such script. The faulty changes where introduced by c102b704edb5. Differential Revision: https://phab.mercurial-scm.org/D10943 diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/dumbhttp.py --- a/tests/dumbhttp.py Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/dumbhttp.py Fri Jul 02 23:09:44 2021 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python from __future__ import absolute_import diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/dummysmtpd.py --- a/tests/dummysmtpd.py Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/dummysmtpd.py Fri Jul 02 23:09:44 2021 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python """dummy SMTP server for use in tests""" diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/get-with-headers.py --- a/tests/get-with-headers.py Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/get-with-headers.py Fri Jul 02 23:09:44 2021 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python """This does HTTP GET requests given a host:port and path and returns a subset of the headers plus the body of the result.""" diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/hghave --- a/tests/hghave Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/hghave Fri Jul 02 23:09:44 2021 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python """Test the running system for features availability. Exit with zero if all features are there, non-zero otherwise. If a feature name is prefixed with "no-", the absence of feature is tested. diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/run-tests.py --- a/tests/run-tests.py Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/run-tests.py Fri Jul 02 23:09:44 2021 +0200 @@ -3530,9 +3530,11 @@ """Configure the environment to use the appropriate Python in tests.""" # Tests must use the same interpreter as us or bad things will happen. if sys.platform == 'win32': - pyexename = b'python.exe' + pyexe_names = [b'python', b'python.exe'] + elif sys.version_info[0] < 3: + pyexe_names = [b'python', b'python2'] else: - pyexename = b'python3' # XXX this is wrong with python2... + pyexe_names = [b'python', b'python3'] # os.symlink() is a thing with py3 on Windows, but it requires # Administrator rights. @@ -3540,7 +3542,7 @@ msg = "# Making python executable in test path a symlink to '%s'" msg %= sysexecutable vlog(msg) - for pyexename in [pyexename]: + for pyexename in pyexe_names: mypython = os.path.join(self._tmpbindir, pyexename) try: if os.readlink(mypython) == sysexecutable: @@ -3566,11 +3568,16 @@ with open(osenvironb[b'RUNTESTDIR'] + b'/python3', 'wb') as f: f.write(b'#!/bin/sh\n') f.write(b'py -3.%d "$@"\n' % sys.version_info[1]) + if os.getenv('MSYSTEM'): + with open(osenvironb[b'RUNTESTDIR'] + b'/python2', 'wb') as f: + f.write(b'#!/bin/sh\n') + f.write(b'py -2.%d "$@"\n' % sys.version_info[1]) exedir, exename = os.path.split(sysexecutable) - msg = "# Modifying search path to find %s as %s in '%s'" - msg %= (exename, pyexename, exedir) - vlog(msg) + for pyexename in pyexe_names: + msg = "# Modifying search path to find %s as %s in '%s'" + msg %= (exename, pyexename, exedir) + vlog(msg) path = os.environ['PATH'].split(os.pathsep) while exedir in path: path.remove(exedir) @@ -3598,8 +3605,9 @@ extra_paths.append(scripts_dir) os.environ['PATH'] = os.pathsep.join(extra_paths + path) - if not self._findprogram(pyexename): - print("WARNING: Cannot find %s in search path" % pyexename) + for pyexename in pyexe_names: + if not self._findprogram(pyexename): + print("WARNING: Cannot find %s in search path" % pyexename) def _installhg(self): """Install hg into the test environment. diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/test-filelog.py --- a/tests/test-filelog.py Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/test-filelog.py Fri Jul 02 23:09:44 2021 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python """ Tests the behavior of filelog w.r.t. data starting with '\1\n' """ diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/test-remotefilelog-datapack.py --- a/tests/test-remotefilelog-datapack.py Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/test-remotefilelog-datapack.py Fri Jul 02 23:09:44 2021 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python from __future__ import absolute_import, print_function import hashlib diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/test-remotefilelog-histpack.py --- a/tests/test-remotefilelog-histpack.py Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/test-remotefilelog-histpack.py Fri Jul 02 23:09:44 2021 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python from __future__ import absolute_import import hashlib diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/test-run-tests.t --- a/tests/test-run-tests.t Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/test-run-tests.t Fri Jul 02 23:09:44 2021 +0200 @@ -2036,3 +2036,34 @@ # Ran 2 tests, 0 skipped, 2 failed. python hash seed: * (glob) [1] + +Test that a proper "python" has been set up +=========================================== + +(with a small check-code work around) + $ printf "#!/usr/bi" > test-py3.tmp + $ printf "n/en" >> test-py3.tmp + $ cat << EOF >> test-py3.tmp + > v python3 + > import sys + > print('.'.join(str(x) for x in sys.version_info)) + > EOF + $ mv test-py3.tmp test-py3.py + $ chmod +x test-py3.py + +(with a small check-code work around) + $ printf "#!/usr/bi" > test-py.tmp + $ printf "n/en" >> test-py.tmp + $ cat << EOF >> test-py.tmp + > v python + > import sys + > print('.'.join(str(x) for x in sys.version_info)) + > EOF + $ mv test-py.tmp test-py.py + $ chmod +x test-py.py + + $ ./test-py3.py + 3.* (glob) + $ ./test-py.py + 2.* (glob) (no-py3 !) + 3.* (glob) (py3 !) diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/test-status-inprocess.py --- a/tests/test-status-inprocess.py Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/test-status-inprocess.py Fri Jul 02 23:09:44 2021 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python from __future__ import absolute_import, print_function import sys diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/test-stdio.py --- a/tests/test-stdio.py Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/test-stdio.py Fri Jul 02 23:09:44 2021 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python """ Tests the buffering behavior of stdio streams in `mercurial.utils.procutil`. """ diff -r 9b1710c50230 -r 23f5ed6dbcb1 tests/tinyproxy.py --- a/tests/tinyproxy.py Tue Jul 06 12:42:32 2021 +0200 +++ b/tests/tinyproxy.py Fri Jul 02 23:09:44 2021 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python from __future__ import absolute_import, print_function