Skip to content

Commit c882364

Browse files
Refactor
1 parent 02b867a commit c882364

File tree

1 file changed

+37
-33
lines changed

1 file changed

+37
-33
lines changed

src/Framework/TestSuite.php

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -608,57 +608,61 @@ private function invokeMethodsBeforeFirstTest(Event\Emitter $emitter, Event\Test
608608
return true;
609609
}
610610

611-
$methods = (new HookMethods)->hookMethods($this->name)['beforeClass'];
612-
$calledMethods = [];
611+
$methods = (new HookMethods)->hookMethods($this->name)['beforeClass'];
612+
$calledMethods = [];
613+
$emitCalledEvent = true;
614+
$result = true;
613615

614-
try {
615-
foreach ($methods as $method) {
616-
if ($this->methodDoesNotExistOrIsDeclaredInTestCase($method)) {
617-
continue;
618-
}
616+
foreach ($methods as $method) {
617+
if ($this->methodDoesNotExistOrIsDeclaredInTestCase($method)) {
618+
continue;
619+
}
620+
621+
$calledMethod = new Event\Code\ClassMethod(
622+
$this->name,
623+
$method,
624+
);
625+
626+
try {
627+
$missingRequirements = (new Requirements)->requirementsNotSatisfiedFor($this->name, $method);
628+
629+
if ($missingRequirements !== []) {
630+
$emitCalledEvent = false;
619631

620-
if ($missingRequirements = (new Requirements)->requirementsNotSatisfiedFor($this->name, $method)) {
621632
$this->markTestSuiteSkipped(implode(PHP_EOL, $missingRequirements));
622633
}
623634

624-
$calledMethod = new Event\Code\ClassMethod(
625-
$this->name,
626-
$method,
627-
);
635+
call_user_func([$this->name, $method]);
636+
} catch (Throwable $t) {
637+
}
628638

639+
if ($emitCalledEvent) {
629640
$emitter->testBeforeFirstTestMethodCalled(
630641
$this->name,
631642
$calledMethod,
632643
);
633644

634645
$calledMethods[] = $calledMethod;
635-
636-
call_user_func([$this->name, $method]);
637646
}
638-
} catch (SkippedTest|SkippedTestSuiteError $e) {
639-
$emitter->testSuiteSkipped(
640-
$testSuiteValueObjectForEvents,
641-
$e->getMessage(),
642-
);
643647

644-
return false;
645-
} catch (Throwable $t) {
646-
assert(isset($calledMethod));
648+
if (isset($t) && $t instanceof SkippedTest) {
649+
$emitter->testSuiteSkipped(
650+
$testSuiteValueObjectForEvents,
651+
$t->getMessage(),
652+
);
647653

648-
$emitter->testBeforeFirstTestMethodErrored(
649-
$this->name,
650-
$calledMethod,
651-
Event\Code\ThrowableBuilder::from($t),
652-
);
654+
return false;
655+
}
653656

654-
if (!empty($calledMethods)) {
655-
$emitter->testBeforeFirstTestMethodFinished(
657+
if (isset($t)) {
658+
$emitter->testBeforeFirstTestMethodErrored(
656659
$this->name,
657-
...$calledMethods,
660+
$calledMethod,
661+
Event\Code\ThrowableBuilder::from($t),
658662
);
659-
}
660663

661-
return false;
664+
$result = false;
665+
}
662666
}
663667

664668
if (!empty($calledMethods)) {
@@ -668,7 +672,7 @@ private function invokeMethodsBeforeFirstTest(Event\Emitter $emitter, Event\Test
668672
);
669673
}
670674

671-
return true;
675+
return $result;
672676
}
673677

674678
private function invokeMethodsAfterLastTest(Event\Emitter $emitter): void

0 commit comments

Comments
 (0)