tests/run-tests.py
changeset 21343 93511a595766
parent 21342 1ad7aabba14e
child 21344 2e1aa8c1ee37
equal deleted inserted replaced
21342:1ad7aabba14e 21343:93511a595766
   458            ' build %(compiler)s --build-base="%(base)s"'
   458            ' build %(compiler)s --build-base="%(base)s"'
   459            ' install --force --prefix="%(prefix)s" --install-lib="%(libdir)s"'
   459            ' install --force --prefix="%(prefix)s" --install-lib="%(libdir)s"'
   460            ' --install-scripts="%(bindir)s" %(nohome)s >%(logfile)s 2>&1'
   460            ' --install-scripts="%(bindir)s" %(nohome)s >%(logfile)s 2>&1'
   461            % {'exe': sys.executable, 'py3': py3, 'pure': pure,
   461            % {'exe': sys.executable, 'py3': py3, 'pure': pure,
   462               'compiler': compiler, 'base': os.path.join(runner.hgtmp, "build"),
   462               'compiler': compiler, 'base': os.path.join(runner.hgtmp, "build"),
   463               'prefix': INST, 'libdir': PYTHONDIR, 'bindir': BINDIR,
   463               'prefix': runner.inst, 'libdir': PYTHONDIR, 'bindir': BINDIR,
   464               'nohome': nohome, 'logfile': installerrs})
   464               'nohome': nohome, 'logfile': installerrs})
   465     vlog("# Running", cmd)
   465     vlog("# Running", cmd)
   466     if os.system(cmd) == 0:
   466     if os.system(cmd) == 0:
   467         if not options.verbose:
   467         if not options.verbose:
   468             os.remove(installerrs)
   468             os.remove(installerrs)
   509         vlog('# Installing coverage trigger to %s' % target)
   509         vlog('# Installing coverage trigger to %s' % target)
   510         shutil.copyfile(custom, target)
   510         shutil.copyfile(custom, target)
   511         rc = os.path.join(runner.testdir, '.coveragerc')
   511         rc = os.path.join(runner.testdir, '.coveragerc')
   512         vlog('# Installing coverage rc to %s' % rc)
   512         vlog('# Installing coverage rc to %s' % rc)
   513         os.environ['COVERAGE_PROCESS_START'] = rc
   513         os.environ['COVERAGE_PROCESS_START'] = rc
   514         fn = os.path.join(INST, '..', '.coverage')
   514         fn = os.path.join(runner.inst, '..', '.coverage')
   515         os.environ['COVERAGE_FILE'] = fn
   515         os.environ['COVERAGE_FILE'] = fn
   516 
   516 
   517 def outputtimes(options):
   517 def outputtimes(options):
   518     vlog('# Producing time report')
   518     vlog('# Producing time report')
   519     times.sort(key=lambda t: (t[1], t[0]), reverse=True)
   519     times.sort(key=lambda t: (t[1], t[0]), reverse=True)
  1223     except KeyboardInterrupt:
  1223     except KeyboardInterrupt:
  1224         abort = True
  1224         abort = True
  1225 
  1225 
  1226 def runtests(runner, options, tests):
  1226 def runtests(runner, options, tests):
  1227     try:
  1227     try:
  1228         if INST:
  1228         if runner.inst:
  1229             installhg(runner, options)
  1229             installhg(runner, options)
  1230             _checkhglib("Testing")
  1230             _checkhglib("Testing")
  1231         else:
  1231         else:
  1232             usecorrectpython()
  1232             usecorrectpython()
  1233 
  1233 
  1285     Tests rely on a lot of state. This object holds it for them.
  1285     Tests rely on a lot of state. This object holds it for them.
  1286     """
  1286     """
  1287     def __init__(self):
  1287     def __init__(self):
  1288         self.testdir = None
  1288         self.testdir = None
  1289         self.hgtmp = None
  1289         self.hgtmp = None
       
  1290         self.inst = None
  1290 
  1291 
  1291 def main(args, parser=None):
  1292 def main(args, parser=None):
  1292     runner = TestRunner()
  1293     runner = TestRunner()
  1293 
  1294 
  1294     parser = parser or getparser()
  1295     parser = parser or getparser()
  1332     if 'PYTHONHASHSEED' not in os.environ:
  1333     if 'PYTHONHASHSEED' not in os.environ:
  1333         # use a random python hash seed all the time
  1334         # use a random python hash seed all the time
  1334         # we do the randomness ourself to know what seed is used
  1335         # we do the randomness ourself to know what seed is used
  1335         os.environ['PYTHONHASHSEED'] = str(random.getrandbits(32))
  1336         os.environ['PYTHONHASHSEED'] = str(random.getrandbits(32))
  1336 
  1337 
  1337     global INST, BINDIR, TMPBINDIR, PYTHONDIR, COVERAGE_FILE
  1338     global BINDIR, TMPBINDIR, PYTHONDIR, COVERAGE_FILE
  1338     runner.testdir = os.environ['TESTDIR'] = os.getcwd()
  1339     runner.testdir = os.environ['TESTDIR'] = os.getcwd()
  1339     if options.tmpdir:
  1340     if options.tmpdir:
  1340         options.keep_tmpdir = True
  1341         options.keep_tmpdir = True
  1341         tmpdir = options.tmpdir
  1342         tmpdir = options.tmpdir
  1342         if os.path.exists(tmpdir):
  1343         if os.path.exists(tmpdir):
  1360             d = os.getenv('TMP')
  1361             d = os.getenv('TMP')
  1361         tmpdir = tempfile.mkdtemp('', 'hgtests.', d)
  1362         tmpdir = tempfile.mkdtemp('', 'hgtests.', d)
  1362     runner.hgtmp = os.environ['HGTMP'] = os.path.realpath(tmpdir)
  1363     runner.hgtmp = os.environ['HGTMP'] = os.path.realpath(tmpdir)
  1363 
  1364 
  1364     if options.with_hg:
  1365     if options.with_hg:
  1365         INST = None
  1366         runner.inst = None
  1366         BINDIR = os.path.dirname(os.path.realpath(options.with_hg))
  1367         BINDIR = os.path.dirname(os.path.realpath(options.with_hg))
  1367         TMPBINDIR = os.path.join(runner.hgtmp, 'install', 'bin')
  1368         TMPBINDIR = os.path.join(runner.hgtmp, 'install', 'bin')
  1368         os.makedirs(TMPBINDIR)
  1369         os.makedirs(TMPBINDIR)
  1369 
  1370 
  1370         # This looks redundant with how Python initializes sys.path from
  1371         # This looks redundant with how Python initializes sys.path from
  1372         # "hg" specified by --with-hg is not the only Python script
  1373         # "hg" specified by --with-hg is not the only Python script
  1373         # executed in the test suite that needs to import 'mercurial'
  1374         # executed in the test suite that needs to import 'mercurial'
  1374         # ... which means it's not really redundant at all.
  1375         # ... which means it's not really redundant at all.
  1375         PYTHONDIR = BINDIR
  1376         PYTHONDIR = BINDIR
  1376     else:
  1377     else:
  1377         INST = os.path.join(runner.hgtmp, "install")
  1378         runner.inst = os.path.join(runner.hgtmp, "install")
  1378         BINDIR = os.environ["BINDIR"] = os.path.join(INST, "bin")
  1379         BINDIR = os.environ["BINDIR"] = os.path.join(runner.inst, "bin")
  1379         TMPBINDIR = BINDIR
  1380         TMPBINDIR = BINDIR
  1380         PYTHONDIR = os.path.join(INST, "lib", "python")
  1381         PYTHONDIR = os.path.join(runner.inst, "lib", "python")
  1381 
  1382 
  1382     os.environ["BINDIR"] = BINDIR
  1383     os.environ["BINDIR"] = BINDIR
  1383     os.environ["PYTHON"] = PYTHON
  1384     os.environ["PYTHON"] = PYTHON
  1384 
  1385 
  1385     path = [BINDIR] + os.environ["PATH"].split(os.pathsep)
  1386     path = [BINDIR] + os.environ["PATH"].split(os.pathsep)