protected function PHPUnit_Util_PHP::processChildResult

Processes the TestResult object from an isolated process.

@since Method available since Release 3.5.0

Parameters

PHPUnit_Framework_TestCase $test:

PHPUnit_Framework_TestResult $result:

string $stdout:

string $stderr:

1 call to PHPUnit_Util_PHP::processChildResult()
PHPUnit_Util_PHP::runJob in drupal/core/vendor/phpunit/phpunit/PHPUnit/Util/PHP.php
Runs a single job (PHP code) using a separate PHP process.

File

drupal/core/vendor/phpunit/phpunit/PHPUnit/Util/PHP.php, line 223

Class

PHPUnit_Util_PHP
Utility methods for PHP sub-processes.

Code

protected function processChildResult(PHPUnit_Framework_Test $test, PHPUnit_Framework_TestResult $result, $stdout, $stderr) {
  $time = 0;
  if (!empty($stderr)) {
    $result
      ->addError($test, new PHPUnit_Framework_Exception(trim($stderr)), $time);
  }
  else {
    set_error_handler(function ($errno, $errstr, $errfile, $errline) {
      throw new ErrorException($errstr, $errno, $errno, $errfile, $errline);
    });
    try {
      $childResult = unserialize($stdout);
      restore_error_handler();
    } catch (ErrorException $e) {
      restore_error_handler();
      $childResult = FALSE;
      $result
        ->addError($test, new PHPUnit_Framework_Exception(trim($stdout), 0, $e), $time);
    }
    if ($childResult !== FALSE) {
      if (!empty($childResult['output'])) {
        print $childResult['output'];
      }
      $test
        ->setResult($childResult['testResult']);
      $test
        ->addToAssertionCount($childResult['numAssertions']);
      $childResult = $childResult['result'];
      if ($result
        ->getCollectCodeCoverageInformation()) {
        $result
          ->getCodeCoverage()
          ->merge($childResult
          ->getCodeCoverage());
      }
      $time = $childResult
        ->time();
      $notImplemented = $childResult
        ->notImplemented();
      $skipped = $childResult
        ->skipped();
      $errors = $childResult
        ->errors();
      $failures = $childResult
        ->failures();
      if (!empty($notImplemented)) {
        $result
          ->addError($test, $this
          ->getException($notImplemented[0]), $time);
      }
      else {
        if (!empty($skipped)) {
          $result
            ->addError($test, $this
            ->getException($skipped[0]), $time);
        }
        else {
          if (!empty($errors)) {
            $result
              ->addError($test, $this
              ->getException($errors[0]), $time);
          }
          else {
            if (!empty($failures)) {
              $result
                ->addFailure($test, $this
                ->getException($failures[0]), $time);
            }
          }
        }
      }
    }
  }
  $result
    ->endTest($test, $time);
}