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.
[ original upstream message ]
--- a/tests/run-tests.py Sun May 27 18:25:04 2012 +0200
+++ b/tests/run-tests.py Sun Jun 10 03:05:59 2012 +0200
@@ -599,8 +599,9 @@
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 @@
# 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 @@
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