# HG changeset patch # User Stephen Darnell # Date 1146063247 -7200 # Node ID 4334be196f8db44effc59167fb57cb4bbbc1d065 # Parent 4990b62fd0a6faecef06a04ce357ff3853cedf1b Tidyups for run-tests.py inc. try/finally cleanup and allow tests to be specified on command line diff -r 4990b62fd0a6 -r 4334be196f8d tests/run-tests.py --- a/tests/run-tests.py Wed Apr 26 07:31:04 2006 +0200 +++ b/tests/run-tests.py Wed Apr 26 16:54:07 2006 +0200 @@ -40,66 +40,47 @@ return name return None -# Before we go any further, check for pre-requisite tools -# stuff from coreutils (cat, rm, etc) are not tested -for p in required_tools: - if os.name == 'nt': - p += '.exe' - found = find_program(p) - if found: - vlog("# Found prerequisite", p, "at", found) - else: - print "WARNING: Did not find prerequisite tool: "+p - -# Reset some environment variables to well-known values -os.environ['LANG'] = os.environ['LC_ALL'] = 'C' -os.environ['TZ'] = 'GMT' - -os.environ["HGEDITOR"] = sys.executable + ' -c "import sys; sys.exit(0)"' -os.environ["HGMERGE"] = sys.executable + ' -c "import sys; sys.exit(0)"' -os.environ["HGUSER"] = "test" -os.environ["HGRCPATH"] = "" - -TESTDIR = os.environ["TESTDIR"] = os.getcwd() -HGTMP = os.environ["HGTMP"] = tempfile.mkdtemp("", "hgtests.") +def check_required_tools(): + # Before we go any further, check for pre-requisite tools + # stuff from coreutils (cat, rm, etc) are not tested + for p in required_tools: + if os.name == 'nt': + p += '.exe' + found = find_program(p) + if found: + vlog("# Found prerequisite", p, "at", found) + else: + print "WARNING: Did not find prerequisite tool: "+p def cleanup_exit(): if verbose: print "# Cleaning up HGTMP", HGTMP shutil.rmtree(HGTMP, True) -vlog("# Using TESTDIR", TESTDIR) -vlog("# Using HGTMP", HGTMP) - -os.umask(022) - -vlog("# Performing temporary installation of HG") -INST = os.path.join(HGTMP, "install") -BINDIR = os.path.join(INST, "bin") -PYTHONDIR = os.path.join(INST, "lib", "python") -installerrs = os.path.join("tests", "install.err") +def install_hg(): + vlog("# Performing temporary installation of HG") + INST = os.path.join(HGTMP, "install") + BINDIR = os.path.join(INST, "bin") + PYTHONDIR = os.path.join(INST, "lib", "python") + installerrs = os.path.join("tests", "install.err") -os.chdir("..") # Get back to hg root -cmd = '%s setup.py install --home="%s" --install-lib="%s" >%s 2>&1' % \ - (sys.executable, INST, PYTHONDIR, installerrs) -vlog("# Running", cmd) -if os.system(cmd) == 0: - if not verbose: - os.remove(installerrs) -else: - f = open(installerrs) - for line in f: - print line, - f.close() - cleanup_exit() - sys.exit(1) -os.chdir(TESTDIR) + os.chdir("..") # Get back to hg root + cmd = '%s setup.py install --home="%s" --install-lib="%s" >%s 2>&1' % \ + (sys.executable, INST, PYTHONDIR, installerrs) + vlog("# Running", cmd) + if os.system(cmd) == 0: + if not verbose: + os.remove(installerrs) + else: + f = open(installerrs) + for line in f: + print line, + f.close() + sys.exit(1) + os.chdir(TESTDIR) -os.environ["PATH"] = "%s%s%s" % (BINDIR, os.pathsep, os.environ["PATH"]) -os.environ["PYTHONPATH"] = PYTHONDIR - -tests = 0 -failed = 0 + os.environ["PATH"] = "%s%s%s" % (BINDIR, os.pathsep, os.environ["PATH"]) + os.environ["PYTHONPATH"] = PYTHONDIR def run(cmd, split_lines=True): """Run command in a sub-process, capturing the output (stdout and stderr). @@ -176,17 +157,45 @@ shutil.rmtree(tmpd, True) return ret == 0 -for test in os.listdir("."): - if test.startswith("test-"): - if '~' in test or re.search(r'\.(out|err)$', test): - continue - if not run_one(test): - failed += 1 - tests += 1 + +os.umask(022) + +check_required_tools() + +# Reset some environment variables to well-known values so that +# the tests produce repeatable output. +os.environ['LANG'] = os.environ['LC_ALL'] = 'C' +os.environ['TZ'] = 'GMT' + +os.environ["HGEDITOR"] = sys.executable + ' -c "import sys; sys.exit(0)"' +os.environ["HGMERGE"] = sys.executable + ' -c "import sys; sys.exit(0)"' +os.environ["HGUSER"] = "test" +os.environ["HGRCPATH"] = "" + +TESTDIR = os.environ["TESTDIR"] = os.getcwd() +HGTMP = os.environ["HGTMP"] = tempfile.mkdtemp("", "hgtests.") +vlog("# Using TESTDIR", TESTDIR) +vlog("# Using HGTMP", HGTMP) -print "# Ran %d tests, %d failed." % (tests, failed) +try: + install_hg() + + tests = 0 + failed = 0 -cleanup_exit() + if len(args) == 0: + args = os.listdir(".") + for test in args: + if test.startswith("test-"): + if '~' in test or re.search(r'\.(out|err)$', test): + continue + if not run_one(test): + failed += 1 + tests += 1 + + print "\n# Ran %d tests, %d failed." % (tests, failed) +finally: + cleanup_exit() if failed: sys.exit(1)