changeset 25058:caa2043cc322

run-tests: unblock running python tests in python 3 This makes it clear we need to ban os.popen, but we'll do that in a later cleanup.
author Augie Fackler <augie@google.com>
date Tue, 14 Apr 2015 10:14:49 -0400
parents cf49cf074ec2
children 0e0f1068b878
files tests/run-tests.py
diffstat 1 files changed, 11 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/tests/run-tests.py	Mon Apr 13 18:07:40 2015 -0400
+++ b/tests/run-tests.py	Tue Apr 14 10:14:49 2015 -0400
@@ -127,7 +127,7 @@
 
     return p
 
-PYTHON = sys.executable.replace('\\', '/')
+PYTHON = sys.executable.replace('\\', '/').encode('utf-8')
 IMPL_PATH = b'PYTHONPATH'
 if 'java' in sys.platform:
     IMPL_PATH = b'JYTHONPATH'
@@ -809,11 +809,11 @@
 
     @property
     def refpath(self):
-        return os.path.join(self._testdir, '%s.out' % self.name)
+        return os.path.join(self._testdir, b'%s.out' % self.bname)
 
     def _run(self, env):
-        py3kswitch = self._py3kwarnings and ' -3' or ''
-        cmd = '%s%s "%s"' % (PYTHON, py3kswitch, self.path)
+        py3kswitch = self._py3kwarnings and b' -3' or b''
+        cmd = b'%s%s "%s"' % (PYTHON, py3kswitch, self.path)
         vlog("# Running", cmd)
         normalizenewlines = os.name == 'nt'
         result = self._runcommand(cmd, env,
@@ -971,7 +971,7 @@
                     # We've just entered a Python block. Add the header.
                     inpython = True
                     addsalt(prepos, False) # Make sure we report the exit code.
-                    script.append('%s -m heredoctest <<EOF\n' % PYTHON)
+                    script.append(b'%s -m heredoctest <<EOF\n' % PYTHON)
                 addsalt(n, True)
                 script.append(l[2:])
             elif l.startswith(b'  ... '): # python inlines
@@ -1742,7 +1742,7 @@
             self._pythondir = os.path.join(self._installdir, b"lib", b"python")
 
         osenvironb[b"BINDIR"] = self._bindir
-        os.environ["PYTHON"] = PYTHON
+        osenvironb[b"PYTHON"] = PYTHON
 
         fileb = __file__.encode('utf-8')
         runtestdir = os.path.abspath(os.path.dirname(fileb))
@@ -2097,8 +2097,11 @@
         if self._hgpath is not None:
             return self._hgpath
 
-        cmd = '%s -c "import mercurial; print (mercurial.__path__[0])"'
-        pipe = os.popen(cmd % PYTHON)
+        cmd = b'%s -c "import mercurial; print (mercurial.__path__[0])"'
+        cmd = cmd % PYTHON
+        if sys.version_info[0] > 2:
+            cmd = cmd.decode('utf-8')
+        pipe = os.popen(cmd)
         try:
             self._hgpath = pipe.read().strip()
             if sys.version_info[0] == 3: