559 print '# Tested unexpected mercurial: %s' % hgpkg |
559 print '# Tested unexpected mercurial: %s' % hgpkg |
560 print "# Ran %d tests, %d skipped, %d failed." % ( |
560 print "# Ran %d tests, %d skipped, %d failed." % ( |
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 |
575 |
575 |
576 if options.timeout > 0: |
576 if options.timeout > 0: |
637 print '# Tested unexpected mercurial: %s' % hgpkg |
637 print '# Tested unexpected mercurial: %s' % hgpkg |
638 print "# Ran %d tests, %d skipped, %d failed." % ( |
638 print "# Ran %d tests, %d skipped, %d failed." % ( |
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!" |
646 |
646 |
647 if failed: |
647 if failed: |
648 sys.exit(1) |
648 sys.exit(1) |
649 |
649 |
650 (options, args) = parse_args() |
650 def main(): |
651 if not options.child: |
651 (options, args) = parse_args() |
652 os.umask(022) |
652 if not options.child: |
653 |
653 os.umask(022) |
654 check_required_tools() |
654 |
655 |
655 check_required_tools() |
656 # Reset some environment variables to well-known values so that |
656 |
657 # the tests produce repeatable output. |
657 # Reset some environment variables to well-known values so that |
658 os.environ['LANG'] = os.environ['LC_ALL'] = 'C' |
658 # the tests produce repeatable output. |
659 os.environ['TZ'] = 'GMT' |
659 os.environ['LANG'] = os.environ['LC_ALL'] = 'C' |
660 os.environ["EMAIL"] = "Foo Bar <foo.bar@example.com>" |
660 os.environ['TZ'] = 'GMT' |
661 os.environ['CDPATH'] = '' |
661 os.environ["EMAIL"] = "Foo Bar <foo.bar@example.com>" |
662 |
662 os.environ['CDPATH'] = '' |
663 TESTDIR = os.environ["TESTDIR"] = os.getcwd() |
663 |
664 HGTMP = os.environ['HGTMP'] = os.path.realpath(tempfile.mkdtemp('', 'hgtests.', |
664 global TESTDIR, HGTMP, INST, BINDIR, PYTHONDIR, COVERAGE_FILE |
665 options.tmpdir)) |
665 TESTDIR = os.environ["TESTDIR"] = os.getcwd() |
666 DAEMON_PIDS = None |
666 HGTMP = os.environ['HGTMP'] = os.path.realpath(tempfile.mkdtemp('', 'hgtests.', |
667 HGRCPATH = None |
667 options.tmpdir)) |
668 |
668 DAEMON_PIDS = None |
669 os.environ["HGEDITOR"] = sys.executable + ' -c "import sys; sys.exit(0)"' |
669 HGRCPATH = None |
670 os.environ["HGMERGE"] = "internal:merge" |
670 |
671 os.environ["HGUSER"] = "test" |
671 os.environ["HGEDITOR"] = sys.executable + ' -c "import sys; sys.exit(0)"' |
672 os.environ["HGENCODING"] = "ascii" |
672 os.environ["HGMERGE"] = "internal:merge" |
673 os.environ["HGENCODINGMODE"] = "strict" |
673 os.environ["HGUSER"] = "test" |
674 os.environ["HGPORT"] = str(options.port) |
674 os.environ["HGENCODING"] = "ascii" |
675 os.environ["HGPORT1"] = str(options.port + 1) |
675 os.environ["HGENCODINGMODE"] = "strict" |
676 os.environ["HGPORT2"] = str(options.port + 2) |
676 os.environ["HGPORT"] = str(options.port) |
677 |
677 os.environ["HGPORT1"] = str(options.port + 1) |
678 if options.with_hg: |
678 os.environ["HGPORT2"] = str(options.port + 2) |
679 INST = options.with_hg |
679 |
680 else: |
680 if options.with_hg: |
681 INST = os.path.join(HGTMP, "install") |
681 INST = options.with_hg |
682 BINDIR = os.environ["BINDIR"] = os.path.join(INST, "bin") |
|
683 PYTHONDIR = os.path.join(INST, "lib", "python") |
|
684 COVERAGE_FILE = os.path.join(TESTDIR, ".coverage") |
|
685 |
|
686 expecthg = os.path.join(HGTMP, 'install', 'lib', 'python', 'mercurial') |
|
687 hgpkg = None |
|
688 |
|
689 if len(args) == 0: |
|
690 args = os.listdir(".") |
|
691 args.sort() |
|
692 |
|
693 tests = [] |
|
694 for test in args: |
|
695 if (test.startswith("test-") and '~' not in test and |
|
696 ('.' not in test or test.endswith('.py') or |
|
697 test.endswith('.bat'))): |
|
698 tests.append(test) |
|
699 |
|
700 vlog("# Using TESTDIR", TESTDIR) |
|
701 vlog("# Using HGTMP", HGTMP) |
|
702 |
|
703 try: |
|
704 if len(tests) > 1 and options.jobs > 1: |
|
705 run_children(tests) |
|
706 else: |
682 else: |
707 run_tests(tests) |
683 INST = os.path.join(HGTMP, "install") |
708 finally: |
684 BINDIR = os.environ["BINDIR"] = os.path.join(INST, "bin") |
709 cleanup_exit() |
685 PYTHONDIR = os.path.join(INST, "lib", "python") |
|
686 COVERAGE_FILE = os.path.join(TESTDIR, ".coverage") |
|
687 |
|
688 expecthg = os.path.join(HGTMP, 'install', 'lib', 'python', 'mercurial') |
|
689 hgpkg = None |
|
690 |
|
691 if len(args) == 0: |
|
692 args = os.listdir(".") |
|
693 args.sort() |
|
694 |
|
695 tests = [] |
|
696 for test in args: |
|
697 if (test.startswith("test-") and '~' not in test and |
|
698 ('.' not in test or test.endswith('.py') or |
|
699 test.endswith('.bat'))): |
|
700 tests.append(test) |
|
701 |
|
702 vlog("# Using TESTDIR", TESTDIR) |
|
703 vlog("# Using HGTMP", HGTMP) |
|
704 |
|
705 try: |
|
706 if len(tests) > 1 and options.jobs > 1: |
|
707 run_children(options, expecthg, tests) |
|
708 else: |
|
709 run_tests(options, expecthg, tests) |
|
710 finally: |
|
711 cleanup_exit(options) |
|
712 |
|
713 main() |