diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5ad2e12fe0c..058158a0c93 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -124,7 +124,13 @@ jobs: - name: ${{ matrix.component }} Tests working-directory: "src/${{ matrix.component }}" - run: vendor/bin/simple-phpunit + run: | + # For packages that use the simple-phpunit runner + if [[ -f vendor/bin/simple-phpunit ]]; then + vendor/bin/simple-phpunit + else + vendor/bin/phpunit + fi tests-js: runs-on: ubuntu-latest diff --git a/src/Map/composer.json b/src/Map/composer.json index 509983e26f6..939f2266c6d 100644 --- a/src/Map/composer.json +++ b/src/Map/composer.json @@ -36,9 +36,9 @@ "symfony/stimulus-bundle": "^2.18.1" }, "require-dev": { + "phpunit/phpunit": "^12.0", "symfony/asset-mapper": "^6.4|^7.0", "symfony/framework-bundle": "^6.4|^7.0", - "symfony/phpunit-bridge": "^6.4|^7.0", "symfony/twig-bundle": "^6.4|^7.0", "symfony/ux-twig-component": "^2.18", "symfony/ux-icons": "^2.18" diff --git a/src/Map/phpunit.xml.dist b/src/Map/phpunit.xml.dist index 56e43f7c99d..df4a3c4c64d 100644 --- a/src/Map/phpunit.xml.dist +++ b/src/Map/phpunit.xml.dist @@ -1,23 +1,33 @@ - + - - - - ./src - - - + - + + + + + ./src + + + + trigger_deprecation + + + tests diff --git a/src/Map/src/Bridge/Google/composer.json b/src/Map/src/Bridge/Google/composer.json index 9ae81496e79..335030a7f8b 100644 --- a/src/Map/src/Bridge/Google/composer.json +++ b/src/Map/src/Bridge/Google/composer.json @@ -21,7 +21,7 @@ "symfony/ux-map": "^2.19" }, "require-dev": { - "symfony/phpunit-bridge": "^6.4|^7.0", + "phpunit/phpunit": "^12.0", "symfony/ux-icons": "^2.18" }, "autoload": { diff --git a/src/Map/src/Bridge/Google/phpunit.xml.dist b/src/Map/src/Bridge/Google/phpunit.xml.dist index 1c3807e6255..df4a3c4c64d 100644 --- a/src/Map/src/Bridge/Google/phpunit.xml.dist +++ b/src/Map/src/Bridge/Google/phpunit.xml.dist @@ -1,26 +1,36 @@ - + - - - - ./src - - - + - + + + + + ./src + + + + trigger_deprecation + + + - ./tests + tests diff --git a/src/Map/src/Bridge/Google/tests/GoogleRendererTest.php b/src/Map/src/Bridge/Google/tests/GoogleRendererTest.php index dcb35dae2ce..c09acad6681 100644 --- a/src/Map/src/Bridge/Google/tests/GoogleRendererTest.php +++ b/src/Map/src/Bridge/Google/tests/GoogleRendererTest.php @@ -27,7 +27,7 @@ class GoogleRendererTest extends RendererTestCase { - public function provideTestRenderMap(): iterable + public static function provideTestRenderMap(): iterable { $map = (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -37,26 +37,26 @@ public function provideTestRenderMap(): iterable $marker3 = new Marker(position: new Point(45.8566, 2.3522), title: 'Dijon', id: 'marker3'); yield 'simple map, with minimum options' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), apiKey: 'api_key'), 'map' => $map, ]; yield 'with every options' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), apiKey: 'api_key', id: 'gmap', language: 'fr', region: 'FR', nonce: 'abcd', retries: 10, url: 'https://maps.googleapis.com/maps/api/js', version: 'quarterly'), 'map' => $map, ]; yield 'with custom attributes' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), apiKey: 'api_key'), 'map' => $map, 'attributes' => ['data-controller' => 'my-custom-controller', 'class' => 'map'], ]; yield 'with markers and infoWindows' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), apiKey: 'api_key'), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -66,7 +66,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with all markers removed' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), apiKey: 'api_key'), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -78,7 +78,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with marker remove and new ones added' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), apiKey: 'api_key'), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -90,7 +90,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with polygons and infoWindows' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), apiKey: 'api_key'), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -100,7 +100,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with polylines and infoWindows' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), apiKey: 'api_key'), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -110,7 +110,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with controls enabled' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), apiKey: 'api_key'), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -124,7 +124,7 @@ public function provideTestRenderMap(): iterable ]; yield 'without controls enabled' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), apiKey: 'api_key'), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -138,7 +138,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with default map id' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), 'my_api_key', defaultMapId: 'DefaultMapId'), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -146,7 +146,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with default map id, when passing options (except the "mapId")' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), 'my_api_key', defaultMapId: 'DefaultMapId'), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -155,7 +155,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with default map id overridden by option "mapId"' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer(new StimulusHelper(null), new UxIconRenderer(null), 'my_api_key', defaultMapId: 'DefaultMapId'), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -164,7 +164,7 @@ public function provideTestRenderMap(): iterable ]; yield 'markers with icons' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new GoogleRenderer( new StimulusHelper(null), new UxIconRenderer(new class implements IconRendererInterface { diff --git a/src/Map/src/Bridge/Google/tests/bootstrap.php b/src/Map/src/Bridge/Google/tests/bootstrap.php new file mode 100644 index 00000000000..b4a4bbadf8f --- /dev/null +++ b/src/Map/src/Bridge/Google/tests/bootstrap.php @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Component\ErrorHandler\ErrorHandler; + +require dirname(__DIR__).'/vendor/autoload.php'; + +// Prevent "Test code or tested code did not remove its own exception handlers" errors when booting a kernel. +// @see https://github.com/symfony/symfony/issues/53812#issuecomment-1962740145 +set_exception_handler([new ErrorHandler(), 'handleException']); diff --git a/src/Map/src/Bridge/Leaflet/composer.json b/src/Map/src/Bridge/Leaflet/composer.json index 32fc6619d63..632579bebc8 100644 --- a/src/Map/src/Bridge/Leaflet/composer.json +++ b/src/Map/src/Bridge/Leaflet/composer.json @@ -21,7 +21,7 @@ "symfony/ux-map": "^2.19" }, "require-dev": { - "symfony/phpunit-bridge": "^6.4|^7.0", + "phpunit/phpunit": "^12.0", "symfony/ux-icons": "^2.18" }, "autoload": { diff --git a/src/Map/src/Bridge/Leaflet/phpunit.xml.dist b/src/Map/src/Bridge/Leaflet/phpunit.xml.dist index 1c3807e6255..df4a3c4c64d 100644 --- a/src/Map/src/Bridge/Leaflet/phpunit.xml.dist +++ b/src/Map/src/Bridge/Leaflet/phpunit.xml.dist @@ -1,26 +1,36 @@ - + - - - - ./src - - - + - + + + + + ./src + + + + trigger_deprecation + + + - ./tests + tests diff --git a/src/Map/src/Bridge/Leaflet/tests/LeafletRendererTest.php b/src/Map/src/Bridge/Leaflet/tests/LeafletRendererTest.php index 47e5da7cbe2..903453145d5 100644 --- a/src/Map/src/Bridge/Leaflet/tests/LeafletRendererTest.php +++ b/src/Map/src/Bridge/Leaflet/tests/LeafletRendererTest.php @@ -26,7 +26,7 @@ class LeafletRendererTest extends RendererTestCase { - public function provideTestRenderMap(): iterable + public static function provideTestRenderMap(): iterable { $map = (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -37,20 +37,20 @@ public function provideTestRenderMap(): iterable $marker3 = new Marker(position: new Point(45.8566, 2.3522), title: 'Dijon', id: 'marker3'); yield 'simple map' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new LeafletRenderer(new StimulusHelper(null), new UxIconRenderer(null)), 'map' => (clone $map), ]; yield 'with custom attributes' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new LeafletRenderer(new StimulusHelper(null), new UxIconRenderer(null)), 'map' => (clone $map), 'attributes' => ['data-controller' => 'my-custom-controller', 'class' => 'map'], ]; yield 'with markers and infoWindows' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new LeafletRenderer(new StimulusHelper(null), new UxIconRenderer(null)), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -60,7 +60,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with all markers removed' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new LeafletRenderer(new StimulusHelper(null), new UxIconRenderer(null)), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -72,7 +72,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with marker remove and new ones added' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new LeafletRenderer(new StimulusHelper(null), new UxIconRenderer(null)), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -84,7 +84,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with polygons and infoWindows' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new LeafletRenderer(new StimulusHelper(null), new UxIconRenderer(null)), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -94,7 +94,7 @@ public function provideTestRenderMap(): iterable ]; yield 'with polylines and infoWindows' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new LeafletRenderer(new StimulusHelper(null), new UxIconRenderer(null)), 'map' => (new Map()) ->center(new Point(48.8566, 2.3522)) @@ -104,7 +104,7 @@ public function provideTestRenderMap(): iterable ]; yield 'markers with icons' => [ - 'expected_render' => '
', + 'expectedRender' => '
', 'renderer' => new LeafletRenderer( new StimulusHelper(null), new UxIconRenderer(new class implements IconRendererInterface { diff --git a/src/Map/src/Bridge/Leaflet/tests/bootstrap.php b/src/Map/src/Bridge/Leaflet/tests/bootstrap.php new file mode 100644 index 00000000000..b4a4bbadf8f --- /dev/null +++ b/src/Map/src/Bridge/Leaflet/tests/bootstrap.php @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Component\ErrorHandler\ErrorHandler; + +require dirname(__DIR__).'/vendor/autoload.php'; + +// Prevent "Test code or tested code did not remove its own exception handlers" errors when booting a kernel. +// @see https://github.com/symfony/symfony/issues/53812#issuecomment-1962740145 +set_exception_handler([new ErrorHandler(), 'handleException']); diff --git a/src/Map/src/Test/RendererFactoryTestCase.php b/src/Map/src/Test/RendererFactoryTestCase.php index 6d8914ef2b1..fdc58559a1a 100644 --- a/src/Map/src/Test/RendererFactoryTestCase.php +++ b/src/Map/src/Test/RendererFactoryTestCase.php @@ -11,6 +11,7 @@ namespace Symfony\UX\Map\Test; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Symfony\UX\Map\Exception\UnsupportedSchemeException; use Symfony\UX\Map\Renderer\Dsn; @@ -52,9 +53,7 @@ public static function incompleteDsnRenderer(): iterable return []; } - /** - * @dataProvider supportsRenderer - */ + #[DataProvider('supportsRenderer')] public function testSupports(bool $expected, string $dsn): void { $factory = $this->createRendererFactory(); @@ -62,9 +61,7 @@ public function testSupports(bool $expected, string $dsn): void $this->assertSame($expected, $factory->supports(new Dsn($dsn))); } - /** - * @dataProvider createRenderer - */ + #[DataProvider('createRenderer')] public function testCreate(string $expected, string $dsn): void { $factory = $this->createRendererFactory(); @@ -73,9 +70,7 @@ public function testCreate(string $expected, string $dsn): void $this->assertSame($expected, (string) $renderer); } - /** - * @dataProvider unsupportedSchemeRenderer - */ + #[DataProvider('unsupportedSchemeRenderer')] public function testUnsupportedSchemeException(string $dsn, ?string $message = null): void { $factory = $this->createRendererFactory(); diff --git a/src/Map/src/Test/RendererTestCase.php b/src/Map/src/Test/RendererTestCase.php index b9c3fe07244..b519cad8c8c 100644 --- a/src/Map/src/Test/RendererTestCase.php +++ b/src/Map/src/Test/RendererTestCase.php @@ -11,6 +11,7 @@ namespace Symfony\UX\Map\Test; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Symfony\UX\Map\Map; use Symfony\UX\Map\Renderer\RendererInterface; @@ -23,11 +24,9 @@ abstract class RendererTestCase extends TestCase /** * @return iterable}> */ - abstract public function provideTestRenderMap(): iterable; + abstract public static function provideTestRenderMap(): iterable; - /** - * @dataProvider provideTestRenderMap - */ + #[DataProvider('provideTestRenderMap')] public function testRenderMap(string $expectedRender, RendererInterface $renderer, Map $map, array $attributes = []): void { self::assertSame($expectedRender, $renderer->renderMap($map, $attributes)); diff --git a/src/Map/tests/Distance/DistanceCalculatorTest.php b/src/Map/tests/Distance/DistanceCalculatorTest.php index 3f6c982a165..0359b2b6eb7 100644 --- a/src/Map/tests/Distance/DistanceCalculatorTest.php +++ b/src/Map/tests/Distance/DistanceCalculatorTest.php @@ -11,6 +11,7 @@ namespace Symfony\UX\Map\Tests\Distance; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Symfony\UX\Map\Distance\DistanceCalculator; use Symfony\UX\Map\Distance\DistanceCalculatorInterface; @@ -38,9 +39,8 @@ public function calculateDistance(Point $point1, Point $point2): float /** * Test that the non-reference calculators (Haversine and Spherical Cosine) * produce results close to the reference (Vincenty) within an acceptable margin. - * - * @dataProvider distanceAccuracyProvider */ + #[DataProvider('distanceAccuracyProvider')] public function testAccuracyAgainstVincenty(Point $point1, Point $point2, float $tolerance): void { $vincenty = new VincentyDistanceCalculator(); diff --git a/src/Map/tests/Distance/DistanceUnitTest.php b/src/Map/tests/Distance/DistanceUnitTest.php index f33b985de1a..40610afbab5 100644 --- a/src/Map/tests/Distance/DistanceUnitTest.php +++ b/src/Map/tests/Distance/DistanceUnitTest.php @@ -11,6 +11,7 @@ namespace Symfony\UX\Map\Tests\Distance; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Symfony\UX\Map\Distance\DistanceUnit; @@ -30,9 +31,7 @@ public function testConversionFactorToMeterIsSameAsConversionFactor() } } - /** - * @dataProvider provideConvertedUnits - */ + #[DataProvider('provideConvertedUnits')] public function testConversionFactorFrom(DistanceUnit $unit, DistanceUnit $otherUnit, float $expected): void { $this->assertEqualsWithDelta($expected, $unit->getConversionFactorFrom($otherUnit), 0.001); diff --git a/src/Map/tests/IconTest.php b/src/Map/tests/IconTest.php index 35ddeb943fb..11543d176d2 100644 --- a/src/Map/tests/IconTest.php +++ b/src/Map/tests/IconTest.php @@ -11,6 +11,7 @@ namespace Symfony\UX\Map\Tests; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Symfony\UX\Map\Icon\Icon; use Symfony\UX\Map\Icon\SvgIcon; @@ -39,26 +40,21 @@ public static function provideIcons(): iterable } /** - * @dataProvider provideIcons - * * @param class-string $expectedInstance */ + #[DataProvider('provideIcons')] public function testIconConstruction(Icon $icon, string $expectedInstance, array $expectedToArray): void { self::assertInstanceOf($expectedInstance, $icon); } - /** - * @dataProvider provideIcons - */ + #[DataProvider('provideIcons')] public function testToArray(Icon $icon, string $expectedInstance, array $expectedToArray): void { self::assertSame($expectedToArray, $icon->toArray()); } - /** - * @dataProvider provideIcons - */ + #[DataProvider('provideIcons')] public function testFromArray(Icon $icon, string $expectedInstance, array $expectedToArray): void { self::assertEquals($icon, Icon::fromArray($expectedToArray)); @@ -77,17 +73,15 @@ public static function dataProviderForTestSvgIconCustomizationMethodsCanNotBeCal foreach ($customizationMethods as $method) { if (\in_array($method, ['width', 'height'], true)) { - yield $method => [$method, 12]; + yield $method => ['method' => $method, 'args' => [12]]; } elseif (\in_array($method, $customizationMethods, true)) { throw new \LogicException(\sprintf('The "%s" method is not supposed to be called on the SvgIcon, please modify the test provider.', $method)); } } } - /** - * @dataProvider dataProviderForTestSvgIconCustomizationMethodsCanNotBeCalled - */ - public function testSvgIconCustomizationMethodsCanNotBeCalled(string $method, mixed ...$args): void + #[DataProvider('dataProviderForTestSvgIconCustomizationMethodsCanNotBeCalled')] + public function testSvgIconCustomizationMethodsCanNotBeCalled(string $method, array $args): void { $this->expectException(\LogicException::class); if (\in_array($method, ['width', 'height'], true)) { diff --git a/src/Map/tests/PointTest.php b/src/Map/tests/PointTest.php index 2032680694f..dd0fb6618bc 100644 --- a/src/Map/tests/PointTest.php +++ b/src/Map/tests/PointTest.php @@ -11,6 +11,7 @@ namespace Symfony\UX\Map\Tests; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Symfony\UX\Map\Exception\InvalidArgumentException; use Symfony\UX\Map\Point; @@ -25,9 +26,7 @@ public static function provideInvalidPoint(): iterable yield [0, -181, 'Longitude must be between -180 and 180 degrees, "-181" given.']; } - /** - * @dataProvider provideInvalidPoint - */ + #[DataProvider('provideInvalidPoint')] public function testInvalidPoint(float $latitude, float $longitude, string $expectedExceptionMessage): void { self::expectException(InvalidArgumentException::class); diff --git a/src/Map/tests/Renderer/DsnTest.php b/src/Map/tests/Renderer/DsnTest.php index 52766a4318a..7d42cb58db7 100644 --- a/src/Map/tests/Renderer/DsnTest.php +++ b/src/Map/tests/Renderer/DsnTest.php @@ -11,15 +11,14 @@ namespace Symfony\UX\Map\Tests\Renderer; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Symfony\UX\Map\Exception\InvalidArgumentException; use Symfony\UX\Map\Renderer\Dsn; final class DsnTest extends TestCase { - /** - * @dataProvider constructDsn - */ + #[DataProvider('constructDsn')] public function testConstruct(string $dsnString, string $scheme, string $host, ?string $user = null, array $options = [], ?string $path = null) { $dsn = new Dsn($dsnString); @@ -77,9 +76,7 @@ public static function constructDsn(): iterable ]; } - /** - * @dataProvider invalidDsn - */ + #[DataProvider('invalidDsn')] public function testInvalidDsn(string $dsnString, string $exceptionMessage) { self::expectException(InvalidArgumentException::class); diff --git a/src/Map/tests/Renderer/NullRendererTest.php b/src/Map/tests/Renderer/NullRendererTest.php index f026c3f11ae..b83198617c1 100644 --- a/src/Map/tests/Renderer/NullRendererTest.php +++ b/src/Map/tests/Renderer/NullRendererTest.php @@ -13,6 +13,7 @@ namespace Symfony\UX\Map\Tests\Renderer; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Symfony\UX\Map\Exception\LogicException; use Symfony\UX\Map\Map; @@ -21,29 +22,27 @@ final class NullRendererTest extends TestCase { - public function provideTestRenderMap(): iterable + public static function provideTestRenderMap(): iterable { yield 'no bridges' => [ - 'expected_exception_message' => 'You must install at least one bridge package to use the Symfony UX Map component.', + 'expectedExceptionMessage' => 'You must install at least one bridge package to use the Symfony UX Map component.', 'renderer' => new NullRenderer(), ]; yield 'one bridge' => [ - 'expected_exception_message' => 'You must install at least one bridge package to use the Symfony UX Map component.' + 'expectedExceptionMessage' => 'You must install at least one bridge package to use the Symfony UX Map component.' .\PHP_EOL.'Try running "composer require symfony/ux-leaflet-map".', 'renderer' => new NullRenderer(['symfony/ux-leaflet-map']), ]; yield 'two bridges' => [ - 'expected_exception_message' => 'You must install at least one bridge package to use the Symfony UX Map component.' + 'expectedExceptionMessage' => 'You must install at least one bridge package to use the Symfony UX Map component.' .\PHP_EOL.'Try running "composer require symfony/ux-leaflet-map" or "composer require symfony/ux-google-map".', 'renderer' => new NullRenderer(['symfony/ux-leaflet-map', 'symfony/ux-google-map']), ]; } - /** - * @dataProvider provideTestRenderMap - */ + #[DataProvider('provideTestRenderMap')] public function testRenderMap(string $expectedExceptionMessage, RendererInterface $renderer): void { self::expectException(LogicException::class); diff --git a/src/Map/tests/Twig/MapExtensionTest.php b/src/Map/tests/Twig/MapExtensionTest.php index e78e0ec3d16..ce3f882bf21 100644 --- a/src/Map/tests/Twig/MapExtensionTest.php +++ b/src/Map/tests/Twig/MapExtensionTest.php @@ -11,7 +11,6 @@ namespace Symfony\UX\Map\Tests\Twig; -use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\UX\Map\Map; use Symfony\UX\Map\Point; @@ -26,8 +25,6 @@ class MapExtensionTest extends KernelTestCase { - use ExpectDeprecationTrait; - protected static function getKernelClass(): string { return TwigAppKernel::class; @@ -78,9 +75,9 @@ public function testRenderFunctionIsDeprecated(): void ])); if (class_exists(DeprecatedCallableInfo::class)) { - $this->expectDeprecation('Since symfony/ux-map 2.20: Twig Function "render_map" is deprecated; use "ux_map" instead in test at line 1.'); + $this->expectUserDeprecationMessage('Since symfony/ux-map 2.20: Twig Function "render_map" is deprecated; use "ux_map" instead in test at line 1'); } else { - $this->expectDeprecation('Since symfony/ux-map 2.20: Twig Function "render_map" is deprecated. Use "ux_map" instead in test at line 1.'); + $this->expectUserDeprecationMessage('Since symfony/ux-map 2.20: Twig Function "render_map" is deprecated. Use "ux_map" instead in test at line 1'); } $html = $twig->render('test', ['map' => $map]); $this->assertSame('', $html); diff --git a/src/Map/tests/UXMapBundleTest.php b/src/Map/tests/UXMapBundleTest.php index 169b890deed..c36b8088b5c 100644 --- a/src/Map/tests/UXMapBundleTest.php +++ b/src/Map/tests/UXMapBundleTest.php @@ -11,6 +11,7 @@ namespace Symfony\UX\Map\Tests; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Psr\Container\ContainerInterface; use Symfony\Component\HttpKernel\Kernel; @@ -31,10 +32,9 @@ public static function provideKernelClasses(): iterable } /** - * @dataProvider provideKernelClasses - * * @param class-string $kernelClass */ + #[DataProvider('provideKernelClasses')] public function testBootKernel(string $kernelClass): void { $kernel = new $kernelClass('test', true); @@ -44,10 +44,9 @@ public function testBootKernel(string $kernelClass): void } /** - * @dataProvider provideKernelClasses - * * @param class-string $kernelClass */ + #[DataProvider('provideKernelClasses')] public function testNullRendererAsDefault(string $kernelClass): void { $expectedRenderer = new NullRenderer(['symfony/ux-google-map', 'symfony/ux-leaflet-map']); diff --git a/src/Map/tests/bootstrap.php b/src/Map/tests/bootstrap.php new file mode 100644 index 00000000000..b4a4bbadf8f --- /dev/null +++ b/src/Map/tests/bootstrap.php @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Component\ErrorHandler\ErrorHandler; + +require dirname(__DIR__).'/vendor/autoload.php'; + +// Prevent "Test code or tested code did not remove its own exception handlers" errors when booting a kernel. +// @see https://github.com/symfony/symfony/issues/53812#issuecomment-1962740145 +set_exception_handler([new ErrorHandler(), 'handleException']); diff --git a/ux.symfony.com/composer.json b/ux.symfony.com/composer.json index effedd67926..eb4285a947b 100644 --- a/ux.symfony.com/composer.json +++ b/ux.symfony.com/composer.json @@ -70,7 +70,7 @@ "symfony/css-selector": "7.2.*", "symfony/debug-bundle": "7.2.*", "symfony/maker-bundle": "^1.61", - "symfony/phpunit-bridge": "7.2.*", + "symfony/phpunit-bridge": "^7.2", "symfony/stopwatch": "7.2.*", "symfony/web-profiler-bundle": "7.2.*", "vincentlanglet/twig-cs-fixer": "3.1.*",