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

Breadcrumb

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

function TestSuite::invokeMethodsBeforeFirstTest

Throws

Exception

NoPreviousThrowableException

1 call to TestSuite::invokeMethodsBeforeFirstTest()
TestSuite::run in vendor/phpunit/phpunit/src/Framework/TestSuite.php

File

vendor/phpunit/phpunit/src/Framework/TestSuite.php, line 605

Class

TestSuite
@template-implements IteratorAggregate<int, Test>

Namespace

PHPUnit\Framework

Code

private function invokeMethodsBeforeFirstTest(Event\Emitter $emitter, Event\TestSuite\TestSuite $testSuiteValueObjectForEvents) : bool {
    if (!$this->isForTestClass()) {
        return true;
    }
    $methodsCalledBeforeFirstTest = [];
    $beforeClassMethods = (new HookMethods())->hookMethods($this->name)['beforeClass'];
    try {
        foreach ($beforeClassMethods as $beforeClassMethod) {
            if ($this->methodDoesNotExistOrIsDeclaredInTestCase($beforeClassMethod)) {
                continue;
            }
            if ($missingRequirements = (new Requirements())->requirementsNotSatisfiedFor($this->name, $beforeClassMethod)) {
                $this->markTestSuiteSkipped(implode(PHP_EOL, $missingRequirements));
            }
            $methodCalledBeforeFirstTest = new Event\Code\ClassMethod($this->name, $beforeClassMethod);
            $emitter->testBeforeFirstTestMethodCalled($this->name, $methodCalledBeforeFirstTest);
            $methodsCalledBeforeFirstTest[] = $methodCalledBeforeFirstTest;
            call_user_func([
                $this->name,
                $beforeClassMethod,
            ]);
        }
    } catch (SkippedTest|SkippedTestSuiteError $e) {
        $emitter->testSuiteSkipped($testSuiteValueObjectForEvents, $e->getMessage());
        return false;
    } catch (Throwable $t) {
        assert(isset($methodCalledBeforeFirstTest));
        $emitter->testBeforeFirstTestMethodErrored($this->name, $methodCalledBeforeFirstTest, Event\Code\ThrowableBuilder::from($t));
        if (!empty($methodsCalledBeforeFirstTest)) {
            $emitter->testBeforeFirstTestMethodFinished($this->name, ...$methodsCalledBeforeFirstTest);
        }
        return false;
    }
    if (!empty($methodsCalledBeforeFirstTest)) {
        $emitter->testBeforeFirstTestMethodFinished($this->name, ...$methodsCalledBeforeFirstTest);
    }
    return true;
}

API Navigation

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