Show More
@@ -388,40 +388,6 b' def killdaemons(pidfile):' | |||
|
388 | 388 | return killmod.killdaemons(pidfile, tryhard=False, remove=True, |
|
389 | 389 | logfn=vlog) |
|
390 | 390 | |
|
391 | def usecorrectpython(runner): | |
|
392 | # some tests run python interpreter. they must use same | |
|
393 | # interpreter we use or bad things will happen. | |
|
394 | pyexename = sys.platform == 'win32' and 'python.exe' or 'python' | |
|
395 | if getattr(os, 'symlink', None): | |
|
396 | vlog("# Making python executable in test path a symlink to '%s'" % | |
|
397 | sys.executable) | |
|
398 | mypython = os.path.join(runner.tmpbindir, pyexename) | |
|
399 | try: | |
|
400 | if os.readlink(mypython) == sys.executable: | |
|
401 | return | |
|
402 | os.unlink(mypython) | |
|
403 | except OSError, err: | |
|
404 | if err.errno != errno.ENOENT: | |
|
405 | raise | |
|
406 | if findprogram(pyexename) != sys.executable: | |
|
407 | try: | |
|
408 | os.symlink(sys.executable, mypython) | |
|
409 | createdfiles.append(mypython) | |
|
410 | except OSError, err: | |
|
411 | # child processes may race, which is harmless | |
|
412 | if err.errno != errno.EEXIST: | |
|
413 | raise | |
|
414 | else: | |
|
415 | exedir, exename = os.path.split(sys.executable) | |
|
416 | vlog("# Modifying search path to find %s as %s in '%s'" % | |
|
417 | (exename, pyexename, exedir)) | |
|
418 | path = os.environ['PATH'].split(os.pathsep) | |
|
419 | while exedir in path: | |
|
420 | path.remove(exedir) | |
|
421 | os.environ['PATH'] = os.pathsep.join([exedir] + path) | |
|
422 | if not findprogram(pyexename): | |
|
423 | print "WARNING: Cannot find %s in search path" % pyexename | |
|
424 | ||
|
425 | 391 | def installhg(runner): |
|
426 | 392 | vlog("# Performing temporary installation of HG") |
|
427 | 393 | installerrs = os.path.join("tests", "install.err") |
@@ -465,7 +431,7 b' def installhg(runner):' | |||
|
465 | 431 | sys.exit(1) |
|
466 | 432 | os.chdir(runner.testdir) |
|
467 | 433 | |
|
468 |
usecorrectpython( |
|
|
434 | runner.usecorrectpython() | |
|
469 | 435 | |
|
470 | 436 | if runner.options.py3k_warnings and not runner.options.anycoverage: |
|
471 | 437 | vlog("# Updating hg command to enable Py3k Warnings switch") |
@@ -1221,7 +1187,7 b' def runtests(runner, tests):' | |||
|
1221 | 1187 | installhg(runner) |
|
1222 | 1188 | _checkhglib(runner, "Testing") |
|
1223 | 1189 | else: |
|
1224 |
usecorrectpython( |
|
|
1190 | runner.usecorrectpython() | |
|
1225 | 1191 | |
|
1226 | 1192 | if runner.options.restart: |
|
1227 | 1193 | orig = list(tests) |
@@ -1300,6 +1266,40 b' class TestRunner(object):' | |||
|
1300 | 1266 | except OSError: |
|
1301 | 1267 | pass |
|
1302 | 1268 | |
|
1269 | def usecorrectpython(self): | |
|
1270 | # Some tests run the Python interpreter. They must use the | |
|
1271 | # same interpreter or bad things will happen. | |
|
1272 | pyexename = sys.platform == 'win32' and 'python.exe' or 'python' | |
|
1273 | if getattr(os, 'symlink', None): | |
|
1274 | vlog("# Making python executable in test path a symlink to '%s'" % | |
|
1275 | sys.executable) | |
|
1276 | mypython = os.path.join(self.tmpbindir, pyexename) | |
|
1277 | try: | |
|
1278 | if os.readlink(mypython) == sys.executable: | |
|
1279 | return | |
|
1280 | os.unlink(mypython) | |
|
1281 | except OSError, err: | |
|
1282 | if err.errno != errno.ENOENT: | |
|
1283 | raise | |
|
1284 | if findprogram(pyexename) != sys.executable: | |
|
1285 | try: | |
|
1286 | os.symlink(sys.executable, mypython) | |
|
1287 | createdfiles.append(mypython) | |
|
1288 | except OSError, err: | |
|
1289 | # child processes may race, which is harmless | |
|
1290 | if err.errno != errno.EEXIST: | |
|
1291 | raise | |
|
1292 | else: | |
|
1293 | exedir, exename = os.path.split(sys.executable) | |
|
1294 | vlog("# Modifying search path to find %s as %s in '%s'" % | |
|
1295 | (exename, pyexename, exedir)) | |
|
1296 | path = os.environ['PATH'].split(os.pathsep) | |
|
1297 | while exedir in path: | |
|
1298 | path.remove(exedir) | |
|
1299 | os.environ['PATH'] = os.pathsep.join([exedir] + path) | |
|
1300 | if not findprogram(pyexename): | |
|
1301 | print "WARNING: Cannot find %s in search path" % pyexename | |
|
1302 | ||
|
1303 | 1303 | def main(args, parser=None): |
|
1304 | 1304 | runner = TestRunner() |
|
1305 | 1305 |
General Comments 0
You need to be logged in to leave comments.
Login now