in src/python/pants/task/testrunner_task_mixin.py [0:0]
def _execute(self, all_targets):
test_targets = self._get_test_targets()
if not test_targets:
return
self.context.release_lock()
per_target = not self.get_options().fast
fail_fast = self.get_options().fail_fast
results = {}
failure = False
with self.partitions(per_target, all_targets, test_targets) as partitions:
for (partition, args) in partitions():
try:
rv = self._run_partition(fail_fast, partition, *args)
except ErrorWhileTesting as e:
rv = self.result_class.from_error(e)
results[partition] = rv
if not rv.success:
failure = True
if fail_fast:
break
for partition in sorted(results):
rv = results[partition]
failed_targets = set(rv.failed_targets)
pre_execution_error = not failed_targets and not rv.success
for target in partition:
if pre_execution_error:
log = self.context.log.warn
result = 'NOT RUN'
elif target in failed_targets:
log = self.context.log.error
result = rv
else:
log = self.context.log.info
result = self.result_class.successful
log('{0:80}.....{1:>10}'.format(target.address.reference(), str(result)))
msgs = [str(_rv) for _rv in results.values() if not _rv.success]
failed_targets = [target
for _rv in results.values() if not _rv.success
for target in _rv.failed_targets]
if len(failed_targets) > 0:
raise ErrorWhileTesting('\n'.join(msgs), failed_targets=failed_targets)
elif failure:
# A low-level test execution failure occurred before tests were run.
raise TaskError()