diff --git a/tests/run-tests.py b/tests/run-tests.py index be496e3489b947b1a2392f1c9e72510f52ee086f_dGVzdHMvcnVuLXRlc3RzLnB5..eb611ecb435c51d68523878cc066bc16df2801ae_dGVzdHMvcnVuLXRlc3RzLnB5 100755 --- a/tests/run-tests.py +++ b/tests/run-tests.py @@ -359,6 +359,21 @@ return os.path.realpath(os.path.expanduser(path)) +def which(exe): + if PYTHON3: + # shutil.which only accept bytes from 3.8 + cmd = _bytes2sys(exe) + real_exec = shutil.which(cmd) + return _sys2bytes(real_exec) + else: + # let us do the os work + for p in osenvironb[b'PATH'].split(os.pathsep): + f = os.path.join(p, exe) + if os.path.isfile(f): + return f + return None + + def parselistfiles(files, listtype, warn=True): entries = dict() for filename in files: @@ -1829,8 +1844,6 @@ if self._debug: script.append(b'set -x\n') - if self._hgcommand != b'hg': - script.append(b'alias hg="%s"\n' % self._hgcommand) if os.getenv('MSYSTEM'): script.append(b'alias pwd="pwd -W"\n') @@ -3436,6 +3449,7 @@ if self.options.rhg: assert self._installdir self._installrhg() + self._use_correct_mercurial() log( 'running %d tests using %d parallel processes' @@ -3628,6 +3642,25 @@ if not self._findprogram(pyexename): print("WARNING: Cannot find %s in search path" % pyexename) + def _use_correct_mercurial(self): + target_exec = os.path.join(self._custom_bin_dir, b'hg') + if self._hgcommand != b'hg': + # shutil.which only accept bytes from 3.8 + real_exec = which(self._hgcommand) + if real_exec is None: + raise ValueError('could not find exec path for "%s"', real_exec) + if real_exec == target_exec: + # do not overwrite something with itself + return + if WINDOWS: + with open(target_exec, 'wb') as f: + f.write(b'#!/bin/sh\n') + escaped_exec = shellquote(_bytes2sys(real_exec)) + f.write(b'%s "$@"\n' % _sys2bytes(escaped_exec)) + else: + os.symlink(real_exec, target_exec) + self._createdfiles.append(target_exec) + def _installhg(self): """Install hg into the test environment. diff --git a/tests/test-bundle2-exchange.t b/tests/test-bundle2-exchange.t index be496e3489b947b1a2392f1c9e72510f52ee086f_dGVzdHMvdGVzdC1idW5kbGUyLWV4Y2hhbmdlLnQ=..eb611ecb435c51d68523878cc066bc16df2801ae_dGVzdHMvdGVzdC1idW5kbGUyLWV4Y2hhbmdlLnQ= 100644 --- a/tests/test-bundle2-exchange.t +++ b/tests/test-bundle2-exchange.t @@ -751,6 +751,7 @@ $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6 pushing to ssh://user@dummy/other searching for changes + remote: Fail early! (no-py3 chg !) remote: adding changesets remote: adding manifests remote: adding file changes @@ -754,7 +755,8 @@ remote: adding changesets remote: adding manifests remote: adding file changes - remote: Fail early! + remote: Fail early! (py3 !) + remote: Fail early! (no-py3 no-chg !) remote: transaction abort! remote: Cleaning up the mess... remote: rollback completed diff --git a/tests/test-run-tests.t b/tests/test-run-tests.t index be496e3489b947b1a2392f1c9e72510f52ee086f_dGVzdHMvdGVzdC1ydW4tdGVzdHMudA==..eb611ecb435c51d68523878cc066bc16df2801ae_dGVzdHMvdGVzdC1ydW4tdGVzdHMudA== 100644 --- a/tests/test-run-tests.t +++ b/tests/test-run-tests.t @@ -648,10 +648,9 @@ $ rt --debug 2>&1 | grep -v pwd running 2 tests using 1 parallel processes - + alias hg=hg.exe (windows !) + echo *SALT* 0 0 (glob) *SALT* 0 0 (glob) + echo babar babar + echo *SALT* 10 0 (glob) *SALT* 10 0 (glob) @@ -652,10 +651,9 @@ + echo *SALT* 0 0 (glob) *SALT* 0 0 (glob) + echo babar babar + echo *SALT* 10 0 (glob) *SALT* 10 0 (glob) - .+ alias hg=hg.exe (windows !) *+ echo *SALT* 0 0 (glob) *SALT* 0 0 (glob) + echo babar diff --git a/tests/test-ssh-bundle1.t b/tests/test-ssh-bundle1.t index be496e3489b947b1a2392f1c9e72510f52ee086f_dGVzdHMvdGVzdC1zc2gtYnVuZGxlMS50..eb611ecb435c51d68523878cc066bc16df2801ae_dGVzdHMvdGVzdC1zc2gtYnVuZGxlMS50 100644 --- a/tests/test-ssh-bundle1.t +++ b/tests/test-ssh-bundle1.t @@ -304,5 +304,6 @@ remote: adding changesets remote: adding manifests remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files + remote: added 1 changesets with 1 changes to 1 files (py3 !) + remote: added 1 changesets with 1 changes to 1 files (no-py3 no-chg !) remote: KABOOM @@ -308,4 +309,5 @@ remote: KABOOM + remote: added 1 changesets with 1 changes to 1 files (no-py3 chg !) $ hg -R ../remote heads changeset: 5:1383141674ec tag: tip @@ -474,5 +476,6 @@ remote: adding changesets remote: adding manifests remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files + remote: added 1 changesets with 1 changes to 1 files (py3 !) + remote: added 1 changesets with 1 changes to 1 files (no-py3 no-chg !) remote: KABOOM @@ -478,4 +481,5 @@ remote: KABOOM + remote: added 1 changesets with 1 changes to 1 files (no-py3 chg !) local stdout debug output diff --git a/tests/test-ssh.t b/tests/test-ssh.t index be496e3489b947b1a2392f1c9e72510f52ee086f_dGVzdHMvdGVzdC1zc2gudA==..eb611ecb435c51d68523878cc066bc16df2801ae_dGVzdHMvdGVzdC1zc2gudA== 100644 --- a/tests/test-ssh.t +++ b/tests/test-ssh.t @@ -301,6 +301,7 @@ remote: adding changesets remote: adding manifests remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files + remote: added 1 changesets with 1 changes to 1 files (py3 !) + remote: added 1 changesets with 1 changes to 1 files (no-py3 no-chg !) remote: KABOOM remote: KABOOM IN PROCESS @@ -305,5 +306,6 @@ remote: KABOOM remote: KABOOM IN PROCESS + remote: added 1 changesets with 1 changes to 1 files (no-py3 chg !) $ hg -R ../remote heads changeset: 5:1383141674ec tag: tip @@ -527,6 +529,7 @@ remote: adding changesets remote: adding manifests remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files + remote: added 1 changesets with 1 changes to 1 files (py3 !) + remote: added 1 changesets with 1 changes to 1 files (no-py3 no-chg !) remote: KABOOM remote: KABOOM IN PROCESS @@ -531,5 +534,6 @@ remote: KABOOM remote: KABOOM IN PROCESS + remote: added 1 changesets with 1 changes to 1 files (no-py3 chg !) local stdout debug output diff --git a/tests/test-transaction-rollback-on-sigpipe.t b/tests/test-transaction-rollback-on-sigpipe.t index be496e3489b947b1a2392f1c9e72510f52ee086f_dGVzdHMvdGVzdC10cmFuc2FjdGlvbi1yb2xsYmFjay1vbi1zaWdwaXBlLnQ=..eb611ecb435c51d68523878cc066bc16df2801ae_dGVzdHMvdGVzdC10cmFuc2FjdGlvbi1yb2xsYmFjay1vbi1zaWdwaXBlLnQ= 100644 --- a/tests/test-transaction-rollback-on-sigpipe.t +++ b/tests/test-transaction-rollback-on-sigpipe.t @@ -35,9 +35,12 @@ $ hg push -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --remotecmd "$remotecmd" pushing to ssh://user@dummy/$TESTTMP/remote searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes + remote: adding changesets (py3 !) + remote: adding manifests (py3 !) + remote: adding file changes (py3 !) + remote: adding changesets (no-py3 no-chg !) + remote: adding manifests (no-py3 no-chg !) + remote: adding file changes (no-py3 no-chg !) abort: stream ended unexpectedly (got 0 bytes, expected 4) [255] $ cat $SIGPIPE_REMOTE_DEBUG_FILE