def _execute()

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()