diff -r a5dabff2e764 -r b3bee8727631 tests/run-tests.py --- a/tests/run-tests.py Sat Mar 22 08:44:07 2014 +0000 +++ b/tests/run-tests.py Sat Apr 12 18:13:57 2014 +0100 @@ -133,7 +133,7 @@ f.close() return entries -def parseargs(): +def getparser(): parser = optparse.OptionParser("%prog [options] [tests]") # keep these sorted @@ -210,7 +210,11 @@ for option, (envvar, default) in defaults.items(): defaults[option] = type(default)(os.environ.get(envvar, default)) parser.set_defaults(**defaults) - (options, args) = parser.parse_args() + + return parser + +def parseargs(args, parser): + (options, args) = parser.parse_args(args) # jython is always pure if 'java' in sys.platform or '__pypy__' in sys.modules: @@ -935,7 +939,7 @@ else: return ignore("doesn't match keyword") - if not lctest.startswith("test-"): + if not os.path.basename(lctest).startswith("test-"): return skip("not a test file") for ext, func, out in testtypes: if lctest.endswith(ext): @@ -1176,8 +1180,9 @@ testtypes = [('.py', pytest, '.out'), ('.t', tsttest, '')] -def main(): - (options, args) = parseargs() +def main(args, parser=None): + parser = parser or getparser() + (options, args) = parseargs(args, parser) os.umask(022) checktools() @@ -1192,8 +1197,8 @@ args = os.listdir(".") tests = [t for t in args - if t.startswith("test-") - and (t.endswith(".py") or t.endswith(".t"))] + if os.path.basename(t).startswith("test-") + and (t.endswith(".py") or t.endswith(".t"))] if options.random: random.shuffle(tests) @@ -1228,7 +1233,8 @@ # Meaning of tmpdir has changed since 1.3: we used to create # HGTMP inside tmpdir; now HGTMP is tmpdir. So fail if # tmpdir already exists. - sys.exit("error: temp dir %r already exists" % tmpdir) + print "error: temp dir %r already exists" % tmpdir + return 1 # Automatically removing tmpdir sounds convenient, but could # really annoy anyone in the habit of using "--tmpdir=/tmp" @@ -1293,10 +1299,10 @@ vlog("# Using", IMPL_PATH, os.environ[IMPL_PATH]) try: - sys.exit(runtests(options, tests) or 0) + return runtests(options, tests) or 0 finally: time.sleep(.1) cleanup(options) if __name__ == '__main__': - main() + sys.exit(main(sys.argv[1:]))