2362 Instead, whitelist and blacklist should be handled by the thing that |
2361 Instead, whitelist and blacklist should be handled by the thing that |
2363 populates the TestSuite with tests. They are present to preserve |
2362 populates the TestSuite with tests. They are present to preserve |
2364 backwards compatible behavior which reports skipped tests as part |
2363 backwards compatible behavior which reports skipped tests as part |
2365 of the results. |
2364 of the results. |
2366 |
2365 |
2367 retest denotes whether to retest failed tests. This arguably belongs |
|
2368 outside of TestSuite. |
|
2369 |
|
2370 keywords denotes key words that will be used to filter which tests |
2366 keywords denotes key words that will be used to filter which tests |
2371 to execute. This arguably belongs outside of TestSuite. |
2367 to execute. This arguably belongs outside of TestSuite. |
2372 |
2368 |
2373 loop denotes whether to loop over tests forever. |
2369 loop denotes whether to loop over tests forever. |
2374 """ |
2370 """ |
2375 super(TestSuite, self).__init__(*args, **kwargs) |
2371 super(TestSuite, self).__init__(*args, **kwargs) |
2376 |
2372 |
2377 self._jobs = jobs |
2373 self._jobs = jobs |
2378 self._whitelist = whitelist |
2374 self._whitelist = whitelist |
2379 self._blacklist = blacklist |
2375 self._blacklist = blacklist |
2380 self._retest = retest |
|
2381 self._keywords = keywords |
2376 self._keywords = keywords |
2382 self._loop = loop |
2377 self._loop = loop |
2383 self._runs_per_test = runs_per_test |
2378 self._runs_per_test = runs_per_test |
2384 self._loadtest = loadtest |
2379 self._loadtest = loadtest |
2385 self._showchannels = showchannels |
2380 self._showchannels = showchannels |
2403 continue |
2398 continue |
2404 |
2399 |
2405 if not (self._whitelist and test.bname in self._whitelist): |
2400 if not (self._whitelist and test.bname in self._whitelist): |
2406 if self._blacklist and test.bname in self._blacklist: |
2401 if self._blacklist and test.bname in self._blacklist: |
2407 result.addSkip(test, 'blacklisted') |
2402 result.addSkip(test, 'blacklisted') |
2408 continue |
|
2409 |
|
2410 if self._retest and not os.path.exists(test.errpath): |
|
2411 result.addIgnore(test, 'not retesting') |
|
2412 continue |
2403 continue |
2413 |
2404 |
2414 if self._keywords: |
2405 if self._keywords: |
2415 with open(test.path, 'rb') as f: |
2406 with open(test.path, 'rb') as f: |
2416 t = f.read().lower() + test.bname.lower() |
2407 t = f.read().lower() + test.bname.lower() |
3251 tests += [{'path': t, 'case': c} for c in sorted(cases)] |
3242 tests += [{'path': t, 'case': c} for c in sorted(cases)] |
3252 else: |
3243 else: |
3253 tests.append({'path': t}) |
3244 tests.append({'path': t}) |
3254 else: |
3245 else: |
3255 tests.append({'path': t}) |
3246 tests.append({'path': t}) |
|
3247 |
|
3248 if self.options.retest: |
|
3249 retest_args = [] |
|
3250 for test in tests: |
|
3251 if 'case' in test: |
|
3252 # for multiple dimensions test cases |
|
3253 casestr = b'#'.join(test['case']) |
|
3254 errpath = b'%s#%s.err' % (test['path'], casestr) |
|
3255 else: |
|
3256 errpath = b'%s.err' % test['path'] |
|
3257 if self.options.outputdir: |
|
3258 errpath = os.path.join(self.options.outputdir, errpath) |
|
3259 |
|
3260 if os.path.exists(errpath): |
|
3261 retest_args.append(test) |
|
3262 tests = retest_args |
3256 return tests |
3263 return tests |
3257 |
3264 |
3258 def _runtests(self, testdescs): |
3265 def _runtests(self, testdescs): |
3259 def _reloadtest(test, i): |
3266 def _reloadtest(test, i): |
3260 # convert a test back to its description dict |
3267 # convert a test back to its description dict |
3296 suite = TestSuite( |
3303 suite = TestSuite( |
3297 self._testdir, |
3304 self._testdir, |
3298 jobs=jobs, |
3305 jobs=jobs, |
3299 whitelist=self.options.whitelisted, |
3306 whitelist=self.options.whitelisted, |
3300 blacklist=self.options.blacklist, |
3307 blacklist=self.options.blacklist, |
3301 retest=self.options.retest, |
|
3302 keywords=kws, |
3308 keywords=kws, |
3303 loop=self.options.loop, |
3309 loop=self.options.loop, |
3304 runs_per_test=self.options.runs_per_test, |
3310 runs_per_test=self.options.runs_per_test, |
3305 showchannels=self.options.showchannels, |
3311 showchannels=self.options.showchannels, |
3306 tests=tests, |
3312 tests=tests, |