@@ -608,57 +608,61 @@ private function invokeMethodsBeforeFirstTest(Event\Emitter $emitter, Event\Test
608
608
return true ;
609
609
}
610
610
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 ;
613
615
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 ;
619
631
620
- if ($ missingRequirements = (new Requirements )->requirementsNotSatisfiedFor ($ this ->name , $ method )) {
621
632
$ this ->markTestSuiteSkipped (implode (PHP_EOL , $ missingRequirements ));
622
633
}
623
634
624
- $ calledMethod = new Event \Code \ClassMethod (
625
- $ this ->name ,
626
- $ method ,
627
- );
635
+ call_user_func ([$ this ->name , $ method ]);
636
+ } catch (Throwable $ t ) {
637
+ }
628
638
639
+ if ($ emitCalledEvent ) {
629
640
$ emitter ->testBeforeFirstTestMethodCalled (
630
641
$ this ->name ,
631
642
$ calledMethod ,
632
643
);
633
644
634
645
$ calledMethods [] = $ calledMethod ;
635
-
636
- call_user_func ([$ this ->name , $ method ]);
637
646
}
638
- } catch (SkippedTest |SkippedTestSuiteError $ e ) {
639
- $ emitter ->testSuiteSkipped (
640
- $ testSuiteValueObjectForEvents ,
641
- $ e ->getMessage (),
642
- );
643
647
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
+ );
647
653
648
- $ emitter ->testBeforeFirstTestMethodErrored (
649
- $ this ->name ,
650
- $ calledMethod ,
651
- Event \Code \ThrowableBuilder::from ($ t ),
652
- );
654
+ return false ;
655
+ }
653
656
654
- if (! empty ( $ calledMethods )) {
655
- $ emitter ->testBeforeFirstTestMethodFinished (
657
+ if (isset ( $ t )) {
658
+ $ emitter ->testBeforeFirstTestMethodErrored (
656
659
$ this ->name ,
657
- ...$ calledMethods ,
660
+ $ calledMethod ,
661
+ Event \Code \ThrowableBuilder::from ($ t ),
658
662
);
659
- }
660
663
661
- return false ;
664
+ $ result = false ;
665
+ }
662
666
}
663
667
664
668
if (!empty ($ calledMethods )) {
@@ -668,7 +672,7 @@ private function invokeMethodsBeforeFirstTest(Event\Emitter $emitter, Event\Test
668
672
);
669
673
}
670
674
671
- return true ;
675
+ return $ result ;
672
676
}
673
677
674
678
private function invokeMethodsAfterLastTest (Event \Emitter $ emitter ): void
0 commit comments