Mercurial > hg > mercurial-source
comparison tests/run-tests.py @ 21360:becce297ae0c
run-tests: move runtests() into TestRunner
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 20 Apr 2014 00:06:30 -0700 |
parents | 7982475da46a |
children | 0fdf92500012 |
comparison
equal
deleted
inserted
replaced
21359:7982475da46a | 21360:becce297ae0c |
---|---|
1032 running += 1 | 1032 running += 1 |
1033 count += 1 | 1033 count += 1 |
1034 except KeyboardInterrupt: | 1034 except KeyboardInterrupt: |
1035 abort = True | 1035 abort = True |
1036 | 1036 |
1037 def runtests(runner, tests): | |
1038 try: | |
1039 if runner.inst: | |
1040 runner.installhg() | |
1041 runner.checkhglib("Testing") | |
1042 else: | |
1043 runner.usecorrectpython() | |
1044 | |
1045 if runner.options.restart: | |
1046 orig = list(tests) | |
1047 while tests: | |
1048 if os.path.exists(tests[0] + ".err"): | |
1049 break | |
1050 tests.pop(0) | |
1051 if not tests: | |
1052 print "running all tests" | |
1053 tests = orig | |
1054 | |
1055 scheduletests(runner, tests) | |
1056 | |
1057 failed = len(runner.results['!']) | |
1058 warned = len(runner.results['~']) | |
1059 tested = len(runner.results['.']) + failed + warned | |
1060 skipped = len(runner.results['s']) | |
1061 ignored = len(runner.results['i']) | |
1062 | |
1063 print | |
1064 if not runner.options.noskips: | |
1065 for s in runner.results['s']: | |
1066 print "Skipped %s: %s" % s | |
1067 for s in runner.results['~']: | |
1068 print "Warned %s: %s" % s | |
1069 for s in runner.results['!']: | |
1070 print "Failed %s: %s" % s | |
1071 runner.checkhglib("Tested") | |
1072 print "# Ran %d tests, %d skipped, %d warned, %d failed." % ( | |
1073 tested, skipped + ignored, warned, failed) | |
1074 if runner.results['!']: | |
1075 print 'python hash seed:', os.environ['PYTHONHASHSEED'] | |
1076 if runner.options.time: | |
1077 runner.outputtimes() | |
1078 | |
1079 if runner.options.anycoverage: | |
1080 runner.outputcoverage() | |
1081 except KeyboardInterrupt: | |
1082 failed = True | |
1083 print "\ninterrupted!" | |
1084 | |
1085 if failed: | |
1086 return 1 | |
1087 if warned: | |
1088 return 80 | |
1089 | |
1090 class TestRunner(object): | 1037 class TestRunner(object): |
1091 """Holds context for executing tests. | 1038 """Holds context for executing tests. |
1092 | 1039 |
1093 Tests rely on a lot of state. This object holds it for them. | 1040 Tests rely on a lot of state. This object holds it for them. |
1094 """ | 1041 """ |
1114 '~': [], | 1061 '~': [], |
1115 's': [], | 1062 's': [], |
1116 'i': [], | 1063 'i': [], |
1117 } | 1064 } |
1118 self._createdfiles = [] | 1065 self._createdfiles = [] |
1066 | |
1067 def runtests(self, tests): | |
1068 try: | |
1069 if self.inst: | |
1070 self.installhg() | |
1071 self.checkhglib("Testing") | |
1072 else: | |
1073 self.usecorrectpython() | |
1074 | |
1075 if self.options.restart: | |
1076 orig = list(tests) | |
1077 while tests: | |
1078 if os.path.exists(tests[0] + ".err"): | |
1079 break | |
1080 tests.pop(0) | |
1081 if not tests: | |
1082 print "running all tests" | |
1083 tests = orig | |
1084 | |
1085 scheduletests(self, tests) | |
1086 | |
1087 failed = len(self.results['!']) | |
1088 warned = len(self.results['~']) | |
1089 tested = len(self.results['.']) + failed + warned | |
1090 skipped = len(self.results['s']) | |
1091 ignored = len(self.results['i']) | |
1092 | |
1093 print | |
1094 if not self.options.noskips: | |
1095 for s in self.results['s']: | |
1096 print "Skipped %s: %s" % s | |
1097 for s in self.results['~']: | |
1098 print "Warned %s: %s" % s | |
1099 for s in self.results['!']: | |
1100 print "Failed %s: %s" % s | |
1101 self.checkhglib("Tested") | |
1102 print "# Ran %d tests, %d skipped, %d warned, %d failed." % ( | |
1103 tested, skipped + ignored, warned, failed) | |
1104 if self.results['!']: | |
1105 print 'python hash seed:', os.environ['PYTHONHASHSEED'] | |
1106 if self.options.time: | |
1107 self.outputtimes() | |
1108 | |
1109 if self.options.anycoverage: | |
1110 self.outputcoverage() | |
1111 except KeyboardInterrupt: | |
1112 failed = True | |
1113 print "\ninterrupted!" | |
1114 | |
1115 if failed: | |
1116 return 1 | |
1117 if warned: | |
1118 return 80 | |
1119 | 1119 |
1120 def gettest(self, test, count): | 1120 def gettest(self, test, count): |
1121 """Obtain a Test by looking at its filename. | 1121 """Obtain a Test by looking at its filename. |
1122 | 1122 |
1123 Returns a Test instance. The Test may not be runnable if it doesn't | 1123 Returns a Test instance. The Test may not be runnable if it doesn't |
1431 vlog("# Using HGTMP", runner.hgtmp) | 1431 vlog("# Using HGTMP", runner.hgtmp) |
1432 vlog("# Using PATH", os.environ["PATH"]) | 1432 vlog("# Using PATH", os.environ["PATH"]) |
1433 vlog("# Using", IMPL_PATH, os.environ[IMPL_PATH]) | 1433 vlog("# Using", IMPL_PATH, os.environ[IMPL_PATH]) |
1434 | 1434 |
1435 try: | 1435 try: |
1436 return runtests(runner, tests) or 0 | 1436 return runner.runtests(tests) or 0 |
1437 finally: | 1437 finally: |
1438 time.sleep(.1) | 1438 time.sleep(.1) |
1439 runner.cleanup() | 1439 runner.cleanup() |
1440 | 1440 |
1441 if __name__ == '__main__': | 1441 if __name__ == '__main__': |