##// END OF EJS Templates
run-tests: factor out main(); reduce use of globals a bit.
Greg Ward -
r8094:60a9e3cf default
parent child Browse files
Show More
@@ -183,7 +183,7 b' def check_required_tools():'
183 else:
183 else:
184 print "WARNING: Did not find prerequisite tool: "+p
184 print "WARNING: Did not find prerequisite tool: "+p
185
185
186 def cleanup_exit():
186 def cleanup_exit(options):
187 if not options.keep_tmpdir:
187 if not options.keep_tmpdir:
188 if verbose:
188 if verbose:
189 print "# Cleaning up HGTMP", HGTMP
189 print "# Cleaning up HGTMP", HGTMP
@@ -206,7 +206,7 b' def use_correct_python():'
206 shutil.copyfile(sys.executable, my_python)
206 shutil.copyfile(sys.executable, my_python)
207 shutil.copymode(sys.executable, my_python)
207 shutil.copymode(sys.executable, my_python)
208
208
209 def install_hg():
209 def install_hg(options):
210 global python
210 global python
211 vlog("# Performing temporary installation of HG")
211 vlog("# Performing temporary installation of HG")
212 installerrs = os.path.join("tests", "install.err")
212 installerrs = os.path.join("tests", "install.err")
@@ -281,7 +281,7 b' def _hgpath():'
281 hgpath.close()
281 hgpath.close()
282 return path
282 return path
283
283
284 def output_coverage():
284 def output_coverage(options):
285 vlog("# Producing coverage report")
285 vlog("# Producing coverage report")
286 omit = [BINDIR, TESTDIR, PYTHONDIR]
286 omit = [BINDIR, TESTDIR, PYTHONDIR]
287 if not options.cover_stdlib:
287 if not options.cover_stdlib:
@@ -339,7 +339,7 b' def run(cmd):'
339 % options.timeout)
339 % options.timeout)
340 return ret, splitnewlines(output)
340 return ret, splitnewlines(output)
341
341
342 def run_one(test, skips, fails):
342 def run_one(options, test, skips, fails):
343 '''tristate output:
343 '''tristate output:
344 None -> skipped
344 None -> skipped
345 True -> passed
345 True -> passed
@@ -496,7 +496,7 b' def run_one(test, skips, fails):'
496 return None
496 return None
497 return ret == 0
497 return ret == 0
498
498
499 def run_children(tests):
499 def run_children(options, expecthg, tests):
500 if not options.with_hg:
500 if not options.with_hg:
501 install_hg()
501 install_hg()
502 if hgpkg != expecthg:
502 if hgpkg != expecthg:
@@ -561,14 +561,14 b' def run_children(tests):'
561 tested, skipped, failed)
561 tested, skipped, failed)
562 sys.exit(failures != 0)
562 sys.exit(failures != 0)
563
563
564 def run_tests(tests):
564 def run_tests(options, expecthg, tests):
565 global DAEMON_PIDS, HGRCPATH
565 global DAEMON_PIDS, HGRCPATH
566 DAEMON_PIDS = os.environ["DAEMON_PIDS"] = os.path.join(HGTMP, 'daemon.pids')
566 DAEMON_PIDS = os.environ["DAEMON_PIDS"] = os.path.join(HGTMP, 'daemon.pids')
567 HGRCPATH = os.environ["HGRCPATH"] = os.path.join(HGTMP, '.hgrc')
567 HGRCPATH = os.environ["HGRCPATH"] = os.path.join(HGTMP, '.hgrc')
568
568
569 try:
569 try:
570 if not options.with_hg:
570 if not options.with_hg:
571 install_hg()
571 install_hg(options)
572
572
573 if hgpkg != expecthg:
573 if hgpkg != expecthg:
574 print '# Testing unexpected mercurial: %s' % hgpkg
574 print '# Testing unexpected mercurial: %s' % hgpkg
@@ -602,7 +602,7 b' def run_tests(tests):'
602 if options.retest and not os.path.exists(test + ".err"):
602 if options.retest and not os.path.exists(test + ".err"):
603 skipped += 1
603 skipped += 1
604 continue
604 continue
605 ret = run_one(test, skips, fails)
605 ret = run_one(options, test, skips, fails)
606 if ret is None:
606 if ret is None:
607 skipped += 1
607 skipped += 1
608 elif not ret:
608 elif not ret:
@@ -639,7 +639,7 b' def run_tests(tests):'
639 tested, skipped, failed)
639 tested, skipped, failed)
640
640
641 if coverage:
641 if coverage:
642 output_coverage()
642 output_coverage(options)
643 except KeyboardInterrupt:
643 except KeyboardInterrupt:
644 failed = True
644 failed = True
645 print "\ninterrupted!"
645 print "\ninterrupted!"
@@ -647,6 +647,7 b' def run_tests(tests):'
647 if failed:
647 if failed:
648 sys.exit(1)
648 sys.exit(1)
649
649
650 def main():
650 (options, args) = parse_args()
651 (options, args) = parse_args()
651 if not options.child:
652 if not options.child:
652 os.umask(022)
653 os.umask(022)
@@ -660,6 +661,7 b" os.environ['TZ'] = 'GMT'"
660 os.environ["EMAIL"] = "Foo Bar <foo.bar@example.com>"
661 os.environ["EMAIL"] = "Foo Bar <foo.bar@example.com>"
661 os.environ['CDPATH'] = ''
662 os.environ['CDPATH'] = ''
662
663
664 global TESTDIR, HGTMP, INST, BINDIR, PYTHONDIR, COVERAGE_FILE
663 TESTDIR = os.environ["TESTDIR"] = os.getcwd()
665 TESTDIR = os.environ["TESTDIR"] = os.getcwd()
664 HGTMP = os.environ['HGTMP'] = os.path.realpath(tempfile.mkdtemp('', 'hgtests.',
666 HGTMP = os.environ['HGTMP'] = os.path.realpath(tempfile.mkdtemp('', 'hgtests.',
665 options.tmpdir))
667 options.tmpdir))
@@ -702,8 +704,10 b' vlog("# Using HGTMP", HGTMP)'
702
704
703 try:
705 try:
704 if len(tests) > 1 and options.jobs > 1:
706 if len(tests) > 1 and options.jobs > 1:
705 run_children(tests)
707 run_children(options, expecthg, tests)
706 else:
708 else:
707 run_tests(tests)
709 run_tests(options, expecthg, tests)
708 finally:
710 finally:
709 cleanup_exit()
711 cleanup_exit(options)
712
713 main()
General Comments 0
You need to be logged in to leave comments. Login now