tests/run-tests.py
changeset 18059 c135ab6413b4
parent 18058 fe5a41144982
child 18060 d2e97d86e4db
--- a/tests/run-tests.py	Tue Dec 11 15:38:42 2012 -0800
+++ b/tests/run-tests.py	Wed Dec 12 14:52:58 2012 -0800
@@ -328,7 +328,7 @@
     # Before we go any further, check for pre-requisite tools
     # stuff from coreutils (cat, rm, etc) are not tested
     for p in requiredtools:
-        if os.name == 'nt':
+        if os.name == 'nt' and not p.endswith('.exe'):
             p += '.exe'
         found = findprogram(p)
         if found:
@@ -365,18 +365,24 @@
         exename = 'python'
         if sys.platform == 'win32':
             exename = 'python.exe'
-    vlog('# Making python executable in test path use correct Python')
-    mypython = os.path.join(BINDIR, exename)
-    try:
-        os.symlink(sys.executable, mypython)
-    except AttributeError:
-        # windows fallback
-        shutil.copyfile(sys.executable, mypython)
-        shutil.copymode(sys.executable, mypython)
-    except OSError, err:
-        # child processes may race, which is harmless
-        if err.errno != errno.EEXIST:
-            raise
+    if getattr(os, 'symlink', None):
+        vlog("# Making python executable in test path a symlink to '%s'" % 
+             sys.executable)
+        mypython = os.path.join(BINDIR, exename)
+        try:
+            os.symlink(sys.executable, mypython)
+        except OSError, err:
+            # child processes may race, which is harmless
+            if err.errno != errno.EEXIST:
+                raise
+    else:
+        vlog("# Modifying search path to find %s in '%s'" % (exename, exedir))
+        path = os.environ['PATH'].split(os.pathsep)
+        while exedir in path:
+            path.remove(exedir)
+        os.environ['PATH'] = os.pathsep.join([exedir] + path)
+        if not findprogram(exename):
+            print "WARNING: Cannot find %s in search path" % exename
 
 def installhg(options):
     vlog("# Performing temporary installation of HG")