##// END OF EJS Templates
run-tests: move installhg() into TestRunner
Gregory Szorc -
r21353:a42a5195 default
parent child Browse files
Show More
@@ -386,89 +386,6 b' def killdaemons(pidfile):'
386 386 return killmod.killdaemons(pidfile, tryhard=False, remove=True,
387 387 logfn=vlog)
388 388
389 def installhg(runner):
390 vlog("# Performing temporary installation of HG")
391 installerrs = os.path.join("tests", "install.err")
392 compiler = ''
393 if runner.options.compiler:
394 compiler = '--compiler ' + runner.options.compiler
395 pure = runner.options.pure and "--pure" or ""
396 py3 = ''
397 if sys.version_info[0] == 3:
398 py3 = '--c2to3'
399
400 # Run installer in hg root
401 script = os.path.realpath(sys.argv[0])
402 hgroot = os.path.dirname(os.path.dirname(script))
403 os.chdir(hgroot)
404 nohome = '--home=""'
405 if os.name == 'nt':
406 # The --home="" trick works only on OS where os.sep == '/'
407 # because of a distutils convert_path() fast-path. Avoid it at
408 # least on Windows for now, deal with .pydistutils.cfg bugs
409 # when they happen.
410 nohome = ''
411 cmd = ('%(exe)s setup.py %(py3)s %(pure)s clean --all'
412 ' build %(compiler)s --build-base="%(base)s"'
413 ' install --force --prefix="%(prefix)s" --install-lib="%(libdir)s"'
414 ' --install-scripts="%(bindir)s" %(nohome)s >%(logfile)s 2>&1'
415 % {'exe': sys.executable, 'py3': py3, 'pure': pure,
416 'compiler': compiler, 'base': os.path.join(runner.hgtmp, "build"),
417 'prefix': runner.inst, 'libdir': runner.pythondir,
418 'bindir': runner.bindir,
419 'nohome': nohome, 'logfile': installerrs})
420 vlog("# Running", cmd)
421 if os.system(cmd) == 0:
422 if not runner.options.verbose:
423 os.remove(installerrs)
424 else:
425 f = open(installerrs)
426 for line in f:
427 print line,
428 f.close()
429 sys.exit(1)
430 os.chdir(runner.testdir)
431
432 runner.usecorrectpython()
433
434 if runner.options.py3k_warnings and not runner.options.anycoverage:
435 vlog("# Updating hg command to enable Py3k Warnings switch")
436 f = open(os.path.join(runner.bindir, 'hg'), 'r')
437 lines = [line.rstrip() for line in f]
438 lines[0] += ' -3'
439 f.close()
440 f = open(os.path.join(runner.bindir, 'hg'), 'w')
441 for line in lines:
442 f.write(line + '\n')
443 f.close()
444
445 hgbat = os.path.join(runner.bindir, 'hg.bat')
446 if os.path.isfile(hgbat):
447 # hg.bat expects to be put in bin/scripts while run-tests.py
448 # installation layout put it in bin/ directly. Fix it
449 f = open(hgbat, 'rb')
450 data = f.read()
451 f.close()
452 if '"%~dp0..\python" "%~dp0hg" %*' in data:
453 data = data.replace('"%~dp0..\python" "%~dp0hg" %*',
454 '"%~dp0python" "%~dp0hg" %*')
455 f = open(hgbat, 'wb')
456 f.write(data)
457 f.close()
458 else:
459 print 'WARNING: cannot fix hg.bat reference to python.exe'
460
461 if runner.options.anycoverage:
462 custom = os.path.join(runner.testdir, 'sitecustomize.py')
463 target = os.path.join(runner.pythondir, 'sitecustomize.py')
464 vlog('# Installing coverage trigger to %s' % target)
465 shutil.copyfile(custom, target)
466 rc = os.path.join(runner.testdir, '.coveragerc')
467 vlog('# Installing coverage rc to %s' % rc)
468 os.environ['COVERAGE_PROCESS_START'] = rc
469 fn = os.path.join(runner.inst, '..', '.coverage')
470 os.environ['COVERAGE_FILE'] = fn
471
472 389 def outputtimes(options):
473 390 vlog('# Producing time report')
474 391 times.sort(key=lambda t: (t[1], t[0]), reverse=True)
@@ -1182,7 +1099,7 b' def scheduletests(runner, tests):'
1182 1099 def runtests(runner, tests):
1183 1100 try:
1184 1101 if runner.inst:
1185 installhg(runner)
1102 runner.installhg()
1186 1103 _checkhglib(runner, "Testing")
1187 1104 else:
1188 1105 runner.usecorrectpython()
@@ -1299,6 +1216,91 b' class TestRunner(object):'
1299 1216 if not findprogram(pyexename):
1300 1217 print "WARNING: Cannot find %s in search path" % pyexename
1301 1218
1219 def installhg(self):
1220 vlog("# Performing temporary installation of HG")
1221 installerrs = os.path.join("tests", "install.err")
1222 compiler = ''
1223 if self.options.compiler:
1224 compiler = '--compiler ' + self.options.compiler
1225 pure = self.options.pure and "--pure" or ""
1226 py3 = ''
1227 if sys.version_info[0] == 3:
1228 py3 = '--c2to3'
1229
1230 # Run installer in hg root
1231 script = os.path.realpath(sys.argv[0])
1232 hgroot = os.path.dirname(os.path.dirname(script))
1233 os.chdir(hgroot)
1234 nohome = '--home=""'
1235 if os.name == 'nt':
1236 # The --home="" trick works only on OS where os.sep == '/'
1237 # because of a distutils convert_path() fast-path. Avoid it at
1238 # least on Windows for now, deal with .pydistutils.cfg bugs
1239 # when they happen.
1240 nohome = ''
1241 cmd = ('%(exe)s setup.py %(py3)s %(pure)s clean --all'
1242 ' build %(compiler)s --build-base="%(base)s"'
1243 ' install --force --prefix="%(prefix)s"'
1244 ' --install-lib="%(libdir)s"'
1245 ' --install-scripts="%(bindir)s" %(nohome)s >%(logfile)s 2>&1'
1246 % {'exe': sys.executable, 'py3': py3, 'pure': pure,
1247 'compiler': compiler,
1248 'base': os.path.join(self.hgtmp, "build"),
1249 'prefix': self.inst, 'libdir': self.pythondir,
1250 'bindir': self.bindir,
1251 'nohome': nohome, 'logfile': installerrs})
1252 vlog("# Running", cmd)
1253 if os.system(cmd) == 0:
1254 if not self.options.verbose:
1255 os.remove(installerrs)
1256 else:
1257 f = open(installerrs)
1258 for line in f:
1259 print line,
1260 f.close()
1261 sys.exit(1)
1262 os.chdir(self.testdir)
1263
1264 self.usecorrectpython()
1265
1266 if self.options.py3k_warnings and not self.options.anycoverage:
1267 vlog("# Updating hg command to enable Py3k Warnings switch")
1268 f = open(os.path.join(self.bindir, 'hg'), 'r')
1269 lines = [line.rstrip() for line in f]
1270 lines[0] += ' -3'
1271 f.close()
1272 f = open(os.path.join(self.bindir, 'hg'), 'w')
1273 for line in lines:
1274 f.write(line + '\n')
1275 f.close()
1276
1277 hgbat = os.path.join(self.bindir, 'hg.bat')
1278 if os.path.isfile(hgbat):
1279 # hg.bat expects to be put in bin/scripts while run-tests.py
1280 # installation layout put it in bin/ directly. Fix it
1281 f = open(hgbat, 'rb')
1282 data = f.read()
1283 f.close()
1284 if '"%~dp0..\python" "%~dp0hg" %*' in data:
1285 data = data.replace('"%~dp0..\python" "%~dp0hg" %*',
1286 '"%~dp0python" "%~dp0hg" %*')
1287 f = open(hgbat, 'wb')
1288 f.write(data)
1289 f.close()
1290 else:
1291 print 'WARNING: cannot fix hg.bat reference to python.exe'
1292
1293 if self.options.anycoverage:
1294 custom = os.path.join(self.testdir, 'sitecustomize.py')
1295 target = os.path.join(self.pythondir, 'sitecustomize.py')
1296 vlog('# Installing coverage trigger to %s' % target)
1297 shutil.copyfile(custom, target)
1298 rc = os.path.join(self.testdir, '.coveragerc')
1299 vlog('# Installing coverage rc to %s' % rc)
1300 os.environ['COVERAGE_PROCESS_START'] = rc
1301 fn = os.path.join(self.inst, '..', '.coverage')
1302 os.environ['COVERAGE_FILE'] = fn
1303
1302 1304 def main(args, parser=None):
1303 1305 runner = TestRunner()
1304 1306
General Comments 0
You need to be logged in to leave comments. Login now