[PATCH STABLE] run-tests: include quotes in the HGEDITOR value when storing sys.executable

Matt Harbison matt_harbison at yahoo.com
Tue Nov 4 11:51:57 CST 2014

# HG changeset patch
# User Matt Harbison <matt_harbison at yahoo.com>
# Date 1415123160 18000
#      Tue Nov 04 12:46:00 2014 -0500
# Branch stable
# Node ID 7fa834c3504fce02c72a2648a55a1278686d4afa
# Parent  a3c2d92112948b2fa1ac3881920ac4d932cda6c8
run-tests: include quotes in the HGEDITOR value when storing sys.executable

This fixes test-install.t on Windows that broke in 2122b82b6987 when
shlex.split() was added to the debuginstall command:

    @@ -7,8 +7,11 @@
       checking installed modules (*mercurial)... (glob)
       checking templates (*mercurial?templates)... (glob)
       checking commit editor...
    +   Can't find editor 'c:\Python27\python.exe -c "(omitted)"' in PATH
    +   (specify a commit editor in your configuration file)
       checking username...
    -  no problems detected
    +  1 problems detected, please check your install!
    +  [1]

What happens is that shlex.split() on Windows turns this:

    c:\Python27\python.exe -c "import sys; sys.exit(0)"

into this:

    ['c:Python27python.exe', '-c', 'import sys; sys.exit(0)']

While technically a regression, most programs on Windows live in some flavor of
'Program Files', and therefore the environment variable needs to contain quotes
anyway to handle the space.  This wasn't handled prior to the shlex() change,
because it tested the whole environment variable to see if it was an executable,
or split on the first space and tested again.

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -649,7 +649,8 @@ class Test(unittest.TestCase):
         env["HGPORT2"] = str(self._startport + 2)
         env["HGRCPATH"] = os.path.join(self._threadtmp, '.hgrc')
         env["DAEMON_PIDS"] = os.path.join(self._threadtmp, 'daemon.pids')
-        env["HGEDITOR"] = sys.executable + ' -c "import sys; sys.exit(0)"'
+        env["HGEDITOR"] = ('"' + sys.executable + '"'
+                           + ' -c "import sys; sys.exit(0)"')
         env["HGMERGE"] = "internal:merge"
         env["HGUSER"]   = "test"
         env["HGENCODING"] = "ascii"

More information about the Mercurial-devel mailing list