function TestSuite::invokeMethodsBeforeFirstTest
Throws
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\FrameworkCode
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;
}