(self, tests, args, ctx)
| 169 | return config |
| 170 | |
| 171 | def _do_execute(self, tests, args, ctx): |
| 172 | loader = LoadProc(tests) |
| 173 | combiner = CombinerProc.create(self.options) |
| 174 | results = ResultsTracker.create(self.options) |
| 175 | execproc = ExecutionProc(ctx, self.options.j) |
| 176 | sigproc = self._create_signal_proc() |
| 177 | progress = ProgressProc(ctx, self.options, tests.test_count_estimate) |
| 178 | procs = [ |
| 179 | loader, |
| 180 | NameFilterProc(args) if args else None, |
| 181 | StatusFileFilterProc(None, None), |
| 182 | FuzzRareTestFilterProc(self.options.fuzzer_rng(), |
| 183 | self.options.skip_rare_tests_prob), |
| 184 | # TODO(majeski): Improve sharding when combiner is present. Maybe select |
| 185 | # different random seeds for shards instead of splitting tests. |
| 186 | ShardProc.create(self.options), |
| 187 | ExpectationProc(), |
| 188 | combiner, |
| 189 | fuzzer.FuzzerProc.create(self.options), |
| 190 | sigproc, |
| 191 | progress, |
| 192 | results, |
| 193 | TimeoutProc.create(self.options), |
| 194 | RerunProc.create(self.options), |
| 195 | execproc, |
| 196 | ] |
| 197 | procs = [p for p in procs if p] |
| 198 | |
| 199 | self._prepare_procs(procs) |
| 200 | loader.load_initial_tests() |
| 201 | |
| 202 | # TODO(majeski): maybe some notification from loader would be better? |
| 203 | if combiner: |
| 204 | combiner.generate_initial_tests(self.options.j * 4) |
| 205 | |
| 206 | # This starts up worker processes and blocks until all tests are |
| 207 | # processed. |
| 208 | execproc.run() |
| 209 | |
| 210 | progress.finished() |
| 211 | |
| 212 | print('>>> %d tests ran' % results.total) |
| 213 | if results.failed: |
| 214 | return utils.EXIT_CODE_FAILURES |
| 215 | |
| 216 | # Indicate if a SIGINT or SIGTERM happened. |
| 217 | return sigproc.exit_code |
| 218 | |
| 219 | def _is_testsuite_supported(self, suite): |
| 220 | return not self.options.combine_tests or suite.test_combiner_available() |
nothing calls this directly
no test coverage detected