Mercurial > hg
comparison tests/run-tests.py @ 21530:78289625e986
run-tests: make retest a named argument of TestSuite.__init__
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Fri, 25 Apr 2014 15:03:06 -0700 |
parents | 117e027390ab |
children | 7fcda22acc43 |
comparison
equal
deleted
inserted
replaced
21529:117e027390ab | 21530:78289625e986 |
---|---|
1152 | 1152 |
1153 class TestSuite(unittest.TestSuite): | 1153 class TestSuite(unittest.TestSuite): |
1154 """Custom unitest TestSuite that knows how to execute Mercurial tests.""" | 1154 """Custom unitest TestSuite that knows how to execute Mercurial tests.""" |
1155 | 1155 |
1156 def __init__(self, runner, jobs=1, whitelist=None, blacklist=None, | 1156 def __init__(self, runner, jobs=1, whitelist=None, blacklist=None, |
1157 retest=False, | |
1157 *args, **kwargs): | 1158 *args, **kwargs): |
1158 """Create a new instance that can run tests with a configuration. | 1159 """Create a new instance that can run tests with a configuration. |
1159 | 1160 |
1160 jobs specifies the number of jobs to run concurrently. Each test | 1161 jobs specifies the number of jobs to run concurrently. Each test |
1161 executes on its own thread. Tests actually spawn new processes, so | 1162 executes on its own thread. Tests actually spawn new processes, so |
1165 blacklisted, respectively. These arguments don't belong in TestSuite. | 1166 blacklisted, respectively. These arguments don't belong in TestSuite. |
1166 Instead, whitelist and blacklist should be handled by the thing that | 1167 Instead, whitelist and blacklist should be handled by the thing that |
1167 populates the TestSuite with tests. They are present to preserve | 1168 populates the TestSuite with tests. They are present to preserve |
1168 backwards compatible behavior which reports skipped tests as part | 1169 backwards compatible behavior which reports skipped tests as part |
1169 of the results. | 1170 of the results. |
1171 | |
1172 retest denotes whether to retest failed tests. This arguably belongs | |
1173 outside of TestSuite. | |
1170 """ | 1174 """ |
1171 super(TestSuite, self).__init__(*args, **kwargs) | 1175 super(TestSuite, self).__init__(*args, **kwargs) |
1172 | 1176 |
1173 self._runner = runner | 1177 self._runner = runner |
1174 self._jobs = jobs | 1178 self._jobs = jobs |
1175 self._whitelist = whitelist | 1179 self._whitelist = whitelist |
1176 self._blacklist = blacklist | 1180 self._blacklist = blacklist |
1181 self._retest = retest | |
1177 | 1182 |
1178 def run(self, result): | 1183 def run(self, result): |
1179 options = self._runner.options | 1184 options = self._runner.options |
1180 | 1185 |
1181 # We have a number of filters that need to be applied. We do this | 1186 # We have a number of filters that need to be applied. We do this |
1190 if not (self._whitelist and test.name in self._whitelist): | 1195 if not (self._whitelist and test.name in self._whitelist): |
1191 if self._blacklist and test.name in self._blacklist: | 1196 if self._blacklist and test.name in self._blacklist: |
1192 result.addSkip(test, 'blacklisted') | 1197 result.addSkip(test, 'blacklisted') |
1193 continue | 1198 continue |
1194 | 1199 |
1195 if options.retest and not os.path.exists(test.errpath): | 1200 if self._retest and not os.path.exists(test.errpath): |
1196 result.addIgnore(test, 'not retesting') | 1201 result.addIgnore(test, 'not retesting') |
1197 continue | 1202 continue |
1198 | 1203 |
1199 if options.keywords: | 1204 if options.keywords: |
1200 f = open(test.path) | 1205 f = open(test.path) |
1500 warned = False | 1505 warned = False |
1501 | 1506 |
1502 suite = TestSuite(self, jobs=self.options.jobs, | 1507 suite = TestSuite(self, jobs=self.options.jobs, |
1503 whitelist=self.options.whitelisted, | 1508 whitelist=self.options.whitelisted, |
1504 blacklist=self.options.blacklist, | 1509 blacklist=self.options.blacklist, |
1510 retest=self.options.retest, | |
1505 tests=tests) | 1511 tests=tests) |
1506 verbosity = 1 | 1512 verbosity = 1 |
1507 if self.options.verbose: | 1513 if self.options.verbose: |
1508 verbosity = 2 | 1514 verbosity = 2 |
1509 runner = TextTestRunner(self, verbosity=verbosity) | 1515 runner = TextTestRunner(self, verbosity=verbosity) |