diff --git a/.github/workflows/phpunit-bridge.yml b/.github/workflows/phpunit-bridge.yml index 56360c4c3d80a..5de320ee91c0e 100644 --- a/.github/workflows/phpunit-bridge.yml +++ b/.github/workflows/phpunit-bridge.yml @@ -35,4 +35,4 @@ jobs: php-version: "7.2" - name: Lint - run: find ./src/Symfony/Bridge/PhpUnit -name '*.php' | grep -v -e /Tests/ -e /Attribute/ -e /Extension/ -e /Metadata/ -e ForV7 -e ForV8 -e ForV9 -e ConstraintLogicTrait | parallel -j 4 php -l {} + run: find ./src/Symfony/Bridge/PhpUnit -name '*.php' | grep -v -e /Tests/ -e /Attribute/ -e /Extension/ -e /Metadata/ -e ForV7 -e ForV8 -e ForV9 -e ConstraintLogicTrait -e SymfonyExtension | parallel -j 4 php -l {} diff --git a/src/Symfony/Bridge/PhpUnit/SymfonyExtension.php b/src/Symfony/Bridge/PhpUnit/SymfonyExtension.php index f290a2c228865..05ff99aa8aedc 100644 --- a/src/Symfony/Bridge/PhpUnit/SymfonyExtension.php +++ b/src/Symfony/Bridge/PhpUnit/SymfonyExtension.php @@ -26,6 +26,8 @@ use PHPUnit\Runner\Extension\Facade; use PHPUnit\Runner\Extension\ParameterCollection; use PHPUnit\TextUI\Configuration\Configuration; +use Symfony\Bridge\PhpUnit\Attribute\DnsSensitive; +use Symfony\Bridge\PhpUnit\Attribute\TimeSensitive; use Symfony\Bridge\PhpUnit\Extension\EnableClockMockSubscriber; use Symfony\Bridge\PhpUnit\Extension\RegisterClockMockSubscriber; use Symfony\Bridge\PhpUnit\Extension\RegisterDnsMockSubscriber; @@ -50,35 +52,51 @@ public function bootstrap(Configuration $configuration, Facade $facade, Paramete $facade->registerSubscriber(new RegisterClockMockSubscriber($reader)); $facade->registerSubscriber(new EnableClockMockSubscriber($reader)); - $facade->registerSubscriber(new class implements ErroredSubscriber { + $facade->registerSubscriber(new class($reader) implements ErroredSubscriber { + public function __construct(private AttributeReader $reader) + { + } + public function notify(Errored $event): void { - SymfonyExtension::disableClockMock($event->test()); - SymfonyExtension::disableDnsMock($event->test()); + SymfonyExtension::disableClockMock($event->test(), $this->reader); + SymfonyExtension::disableDnsMock($event->test(), $this->reader); } }); - $facade->registerSubscriber(new class implements FinishedSubscriber { + $facade->registerSubscriber(new class($reader) implements FinishedSubscriber { + public function __construct(private AttributeReader $reader) + { + } + public function notify(Finished $event): void { - SymfonyExtension::disableClockMock($event->test()); - SymfonyExtension::disableDnsMock($event->test()); + SymfonyExtension::disableClockMock($event->test(), $this->reader); + SymfonyExtension::disableDnsMock($event->test(), $this->reader); } }); - $facade->registerSubscriber(new class implements SkippedSubscriber { + $facade->registerSubscriber(new class($reader) implements SkippedSubscriber { + public function __construct(private AttributeReader $reader) + { + } + public function notify(Skipped $event): void { - SymfonyExtension::disableClockMock($event->test()); - SymfonyExtension::disableDnsMock($event->test()); + SymfonyExtension::disableClockMock($event->test(), $this->reader); + SymfonyExtension::disableDnsMock($event->test(), $this->reader); } }); if (interface_exists(BeforeTestMethodErroredSubscriber::class)) { - $facade->registerSubscriber(new class implements BeforeTestMethodErroredSubscriber { + $facade->registerSubscriber(new class($reader) implements BeforeTestMethodErroredSubscriber { + public function __construct(private AttributeReader $reader) + { + } + public function notify(BeforeTestMethodErrored $event): void { if (method_exists($event, 'test')) { - SymfonyExtension::disableClockMock($event->test()); - SymfonyExtension::disableDnsMock($event->test()); + SymfonyExtension::disableClockMock($event->test(), $this->reader); + SymfonyExtension::disableDnsMock($event->test(), $this->reader); } else { ClockMock::withClockMock(false); DnsMock::withMockedHosts([]); @@ -99,9 +117,9 @@ public function notify(BeforeTestMethodErrored $event): void /** * @internal */ - public static function disableClockMock(Test $test): void + public static function disableClockMock(Test $test, AttributeReader $reader): void { - if (self::hasGroup($test, 'time-sensitive')) { + if (self::hasGroup($test, 'time-sensitive', $reader, TimeSensitive::class)) { ClockMock::withClockMock(false); } } @@ -109,9 +127,9 @@ public static function disableClockMock(Test $test): void /** * @internal */ - public static function disableDnsMock(Test $test): void + public static function disableDnsMock(Test $test, AttributeReader $reader): void { - if (self::hasGroup($test, 'dns-sensitive')) { + if (self::hasGroup($test, 'dns-sensitive', $reader, DnsSensitive::class)) { DnsMock::withMockedHosts([]); } } @@ -119,7 +137,7 @@ public static function disableDnsMock(Test $test): void /** * @internal */ - public static function hasGroup(Test $test, string $groupName): bool + public static function hasGroup(Test $test, string $groupName, AttributeReader $reader, string $attribute): bool { if (!$test instanceof TestMethod) { return false; @@ -131,6 +149,6 @@ public static function hasGroup(Test $test, string $groupName): bool } } - return false; + return [] !== $reader->forClassAndMethod($test->className(), $test->methodName(), $attribute); } }