Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. AbstractPhpProcess.php

function AbstractPhpProcess::processChildResult

Throws

\PHPUnit\Runner\Exception

Exception

MoreThanOneDataSetFromDataProviderException

NoPreviousThrowableException

1 call to AbstractPhpProcess::processChildResult()
AbstractPhpProcess::runTestJob in vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php
Runs a single test in a separate PHP process.

File

vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php, line 238

Class

AbstractPhpProcess
@no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit

Namespace

PHPUnit\Util\PHP

Code

private function processChildResult(Test $test, string $stdout, string $stderr) : void {
    if (!empty($stderr)) {
        $exception = new Exception(trim($stderr));
        assert($test instanceof TestCase);
        Facade::emitter()->testErrored(TestMethodBuilder::fromTestCase($test), ThrowableBuilder::from($exception));
        return;
    }
    set_error_handler(static function (int $errno, string $errstr, string $errfile, int $errline) : never {
        throw new ErrorException($errstr, $errno, $errno, $errfile, $errline);
    });
    try {
        $childResult = unserialize($stdout);
        restore_error_handler();
        if ($childResult === false) {
            $exception = new AssertionFailedError('Test was run in child process and ended unexpectedly');
            assert($test instanceof TestCase);
            Facade::emitter()->testErrored(TestMethodBuilder::fromTestCase($test), ThrowableBuilder::from($exception));
            Facade::emitter()->testFinished(TestMethodBuilder::fromTestCase($test), 0);
        }
    } catch (ErrorException $e) {
        restore_error_handler();
        $childResult = false;
        $exception = new Exception(trim($stdout), 0, $e);
        assert($test instanceof TestCase);
        Facade::emitter()->testErrored(TestMethodBuilder::fromTestCase($test), ThrowableBuilder::from($exception));
    }
    if ($childResult !== false) {
        if (!empty($childResult['output'])) {
            $output = $childResult['output'];
        }
        Facade::instance()->forward($childResult['events']);
        PassedTests::instance()->import($childResult['passedTests']);
        assert($test instanceof TestCase);
        $test->setResult($childResult['testResult']);
        $test->addToAssertionCount($childResult['numAssertions']);
        if (CodeCoverage::instance()->isActive() && $childResult['codeCoverage'] instanceof \SebastianBergmann\CodeCoverage\CodeCoverage) {
            CodeCoverage::instance()->codeCoverage()
                ->merge($childResult['codeCoverage']);
        }
    }
    if (!empty($output)) {
        print $output;
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal