# HG changeset patch # User Adrian Buehlmann # Date 2012-06-10 01:05:59 # Node ID 2774576dee4de16c11e8904fbe40e13116c82a7b # Parent 5af80d29c4411d2bb58cb4356851f0543376dcec tests/run-tests: avoid C:/ in arguments MSYS replaces C:/... in arguments with C;... as it interprets the C:/ as a colon separated POSIX path list. The colon is replaced with ; (path separator on Windows) according to http://www.mingw.org/wiki/Posix_path_conversion So we must not replace \ with / for neither $TESTTMP nor $TESTDIR, but we have to keep replacing \ with / for the Popen4 call of function hghave. If we don't do the latter, test-run-tests.t will fail with $ python run-tests.py --local test-run-tests.t --- C:\Users\adi\hgrepos\hg-main\tests\test-run-tests.t +++ C:\Users\adi\hgrepos\hg-main\tests\test-run-tests.t.err @@ -70,6 +70,7 @@ tested #else $ echo skipped + skipped #endif #if false An additional tweak in test-ssh.t is needed that globs away an encoded path, as it can't be translated back to $TESTTMP, because the backslashes in the output have been already encoded as %5C. This patch makes test-ssh.t pass in MSYS on Windows. diff --git a/tests/run-tests.py b/tests/run-tests.py --- a/tests/run-tests.py +++ b/tests/run-tests.py @@ -599,8 +599,9 @@ def tsttest(test, wd, options, replaceme def hghave(reqs): # TODO: do something smarter when all other uses of hghave is gone + tdir = TESTDIR.replace('\\', '/') proc = Popen4('%s -c "%s/hghave %s"' % - (options.shell, TESTDIR, ' '.join(reqs)), TESTDIR, 0) + (options.shell, tdir, ' '.join(reqs)), TESTDIR, 0) proc.communicate() ret = proc.wait() if wifexited(ret): @@ -909,7 +910,7 @@ def runone(options, test): # Make a tmp subdirectory to work in testtmp = os.environ["TESTTMP"] = os.environ["HOME"] = \ - os.path.join(HGTMP, os.path.basename(test)).replace('\\', '/') + os.path.join(HGTMP, os.path.basename(test)) replacements = [ (r':%s\b' % options.port, ':$HGPORT'), @@ -1229,7 +1230,7 @@ def main(): del os.environ[k] global TESTDIR, HGTMP, INST, BINDIR, PYTHONDIR, COVERAGE_FILE - TESTDIR = os.environ["TESTDIR"] = os.getcwd().replace('\\', '/') + TESTDIR = os.environ["TESTDIR"] = os.getcwd() if options.tmpdir: options.keep_tmpdir = True tmpdir = options.tmpdir diff --git a/tests/test-ssh.t b/tests/test-ssh.t --- a/tests/test-ssh.t +++ b/tests/test-ssh.t @@ -332,7 +332,7 @@ Test hg-ssh in read-only mode: $ echo "baz" > bar $ hg ci -A -m "unpushable commit" bar $ hg push --ssh "sh ../ssh.sh" - pushing to ssh://user@dummy/$TESTTMP/remote + pushing to ssh://user@dummy/*/remote (glob) searching for changes remote: Permission denied remote: abort: prechangegroup.hg-ssh hook failed