From c63b59da80bc973ff431448e60a54313995d89d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Thu, 16 Jan 2025 09:46:28 +0100 Subject: [PATCH 1/2] fix --- composer.json | 2 +- .../Value/Chainable/EvaluatedValueResolver.php | 17 +++++++++++++++++ ...st.php => ChainableDenormalizerTestCase.php} | 2 +- .../Chainable/NullListNameDenormalizerTest.php | 2 +- .../Chainable/NullRangeNameDenormalizerTest.php | 2 +- .../ReferenceRangeNameDenormalizerTest.php | 2 +- .../Chainable/SimpleDenormalizerTest.php | 2 +- .../LexerParserSynchronizationTest.php | 4 ++-- 8 files changed, 25 insertions(+), 8 deletions(-) rename tests/FixtureBuilder/Denormalizer/Fixture/Chainable/{ChainableDenormalizerTest.php => ChainableDenormalizerTestCase.php} (98%) diff --git a/composer.json b/composer.json index 425d4df1..34739d77 100644 --- a/composer.json +++ b/composer.json @@ -31,7 +31,7 @@ "bamarni/composer-bin-plugin": "^1.8.1", "phpspec/prophecy": "^1.6", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.3", + "phpunit/phpunit": "^10.0", "symfony/config": "^6.4 || ^7.0", "symfony/dependency-injection": "^6.4 || ^7.0", "symfony/finder": "^6.4 || ^7.0", diff --git a/src/Generator/Resolver/Value/Chainable/EvaluatedValueResolver.php b/src/Generator/Resolver/Value/Chainable/EvaluatedValueResolver.php index 990ef472..1f12218b 100644 --- a/src/Generator/Resolver/Value/Chainable/EvaluatedValueResolver.php +++ b/src/Generator/Resolver/Value/Chainable/EvaluatedValueResolver.php @@ -13,6 +13,7 @@ namespace Nelmio\Alice\Generator\Resolver\Value\Chainable; +use ErrorException; use Nelmio\Alice\Definition\Value\EvaluatedValue; use Nelmio\Alice\Definition\ValueInterface; use Nelmio\Alice\FixtureInterface; @@ -25,6 +26,10 @@ use Nelmio\Alice\Throwable\Exception\Generator\Resolver\UnresolvableValueExceptionFactory; use Nelmio\Alice\Throwable\Exception\NoValueForCurrentException; use Throwable; +use function error_reporting; +use function ErrorException; +use function restore_error_handler; +use function set_error_handler; final class EvaluatedValueResolver implements ChainableValueResolverInterface { @@ -75,9 +80,21 @@ public function resolve( }; try { + set_error_handler(function (int $errorNumber, string $errorString, string $errorFile, int $errorLine) { + $suppressed = !(error_reporting() & $errorNumber); + + if ($suppressed) { + return false; + } + + throw new ErrorException($errorString, 0, $errorNumber, $errorFile, $errorLine); + }); + $evaluatedExpression = $evaluateExpression($expression); } catch (Throwable $throwable) { throw UnresolvableValueExceptionFactory::createForCouldNotEvaluateExpression($value, 0, $throwable); + } finally { + restore_error_handler(); } return new ResolvedValueWithFixtureSet($evaluatedExpression, $fixtureSet); diff --git a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ChainableDenormalizerTest.php b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ChainableDenormalizerTestCase.php similarity index 98% rename from tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ChainableDenormalizerTest.php rename to tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ChainableDenormalizerTestCase.php index 69457bda..545922d7 100644 --- a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ChainableDenormalizerTest.php +++ b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ChainableDenormalizerTestCase.php @@ -23,7 +23,7 @@ use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; -abstract class ChainableDenormalizerTest extends TestCase +abstract class ChainableDenormalizerTestCase extends TestCase { use ProphecyTrait; use ReferenceProviderTrait; diff --git a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullListNameDenormalizerTest.php b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullListNameDenormalizerTest.php index 3c89a2e0..1dc2a2d3 100644 --- a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullListNameDenormalizerTest.php +++ b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullListNameDenormalizerTest.php @@ -25,7 +25,7 @@ * @covers \Nelmio\Alice\FixtureBuilder\Denormalizer\Fixture\Chainable\NullListNameDenormalizer * @internal */ -class NullListNameDenormalizerTest extends ChainableDenormalizerTest +class NullListNameDenormalizerTest extends ChainableDenormalizerTestCase { protected function setUp(): void { diff --git a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullRangeNameDenormalizerTest.php b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullRangeNameDenormalizerTest.php index 6762c1fa..c24a5df2 100644 --- a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullRangeNameDenormalizerTest.php +++ b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullRangeNameDenormalizerTest.php @@ -26,7 +26,7 @@ * @covers \Nelmio\Alice\FixtureBuilder\Denormalizer\Fixture\Chainable\NullRangeNameDenormalizer * @internal */ -class NullRangeNameDenormalizerTest extends ChainableDenormalizerTest +class NullRangeNameDenormalizerTest extends ChainableDenormalizerTestCase { protected function setUp(): void { diff --git a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ReferenceRangeNameDenormalizerTest.php b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ReferenceRangeNameDenormalizerTest.php index 6681eb85..706d4e7c 100644 --- a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ReferenceRangeNameDenormalizerTest.php +++ b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ReferenceRangeNameDenormalizerTest.php @@ -38,7 +38,7 @@ * @covers \Nelmio\Alice\FixtureBuilder\Denormalizer\Fixture\Chainable\ReferenceRangeNameDenormalizer * @internal */ -class ReferenceRangeNameDenormalizerTest extends ChainableDenormalizerTest +class ReferenceRangeNameDenormalizerTest extends ChainableDenormalizerTestCase { use ProphecyTrait; diff --git a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/SimpleDenormalizerTest.php b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/SimpleDenormalizerTest.php index 28befe1c..168dd425 100644 --- a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/SimpleDenormalizerTest.php +++ b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/SimpleDenormalizerTest.php @@ -37,7 +37,7 @@ * @covers \Nelmio\Alice\FixtureBuilder\Denormalizer\Fixture\Chainable\SimpleDenormalizer * @internal */ -class SimpleDenormalizerTest extends ChainableDenormalizerTest +class SimpleDenormalizerTest extends ChainableDenormalizerTestCase { use ProphecyTrait; diff --git a/tests/FixtureBuilder/ExpressionLanguage/LexerParserSynchronizationTest.php b/tests/FixtureBuilder/ExpressionLanguage/LexerParserSynchronizationTest.php index 8c9fcaa1..762c23a5 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/LexerParserSynchronizationTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/LexerParserSynchronizationTest.php @@ -25,13 +25,13 @@ class LexerParserSynchronizationTest extends TestCase { public function testProvidesAreSynchronized(): void { - $lexerTestCase = new LexerIntegrationTest(); + $lexerTestCase = new LexerIntegrationTest('LexerIntegrationTest#lexer'); $lexerProviderKeys = []; foreach ($lexerTestCase->provideValues() as $key => $values) { $lexerProviderKeys[] = $key; } - $parserTestCase = new ParserIntegrationTest(); + $parserTestCase = new ParserIntegrationTest('LexerIntegrationTest#parser'); $parserProviderKeys = []; foreach ($parserTestCase->provideValues() as $key => $value) { $parserProviderKeys[] = $key; From 6e353d43f357b422ad8897ed635af68eaa44fda2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Thu, 16 Jan 2025 10:50:40 +0100 Subject: [PATCH 2/2] upgrade --- composer.json | 2 +- fixtures/Parser/FileListProviderTrait.php | 8 +- phpunit.xml.dist | 44 ++--------- tests/DeepCloneTest.php | 8 +- tests/Definition/Fixture/TemplatingTest.php | 5 +- tests/Definition/Flag/OptionalFlagTest.php | 5 +- tests/Definition/RangeNameTest.php | 5 +- .../Value/DynamicArrayValueTest.php | 19 ++--- tests/Definition/Value/OptionalValueTest.php | 11 +-- tests/Definition/Value/ParameterValueTest.php | 9 +-- tests/Definition/Value/UniqueValueTest.php | 8 +- tests/FileLocator/DefaultFileLocatorTest.php | 8 +- .../NullListNameDenormalizerTest.php | 76 +++++-------------- .../NullRangeNameDenormalizerTest.php | 76 +++++-------------- .../ReferenceRangeNameDenormalizerTest.php | 76 +++++-------------- .../Chainable/SimpleDenormalizerTest.php | 74 +++++------------- .../Fixture/ReferenceProviderTrait.php | 10 +-- .../SimpleSpecificationsDenormalizerTest.php | 13 ++-- .../Chainable/ConfiguratorFlagParserTest.php | 5 +- .../Chainable/ExtendFlagParserTest.php | 5 +- .../Chainable/OptionalFlagParserTest.php | 5 +- .../Chainable/TemplateFlagParserTest.php | 5 +- .../Chainable/UniqueFlagParserTest.php | 5 +- .../FlagParser/ElementFlagParserTest.php | 9 +-- .../FlagParser/FlagParserTestCase.php | 37 +++------ .../SimpleParameterBagDenormalizerTest.php | 9 +-- .../Lexer/FunctionTokenizerTest.php | 9 +-- .../Lexer/LexerIntegrationTest.php | 8 +- .../Lexer/ReferenceEscaperLexerTest.php | 5 +- .../Lexer/ReferenceLexerTest.php | 5 +- .../Lexer/SubPatternsLexerTest.php | 5 +- .../FunctionFixtureReferenceParserTest.php | 9 +-- .../Parser/ParserIntegrationTest.php | 8 +- .../Parser/StringMergerParserTest.php | 9 +-- .../Chainable/EscapedValueTokenParserTest.php | 5 +- .../FixtureListReferenceTokenParserTest.php | 5 +- .../FixtureMethodReferenceTokenParserTest.php | 4 +- .../ExpressionLanguage/TokenTypeTest.php | 5 +- .../SymfonyPropertyAccessorHydratorTest.php | 5 +- .../Generator/NamedArgumentsResolverTest.php | 5 +- .../CompleteObjectGeneratorTest.php | 5 +- .../Chainable/ArrayParameterResolverTest.php | 5 +- .../RecursiveParameterResolverTest.php | 5 +- .../ParameterResolverIntegrationTest.php | 9 +-- .../Resolver/UniqueValuesPoolTest.php | 5 +- .../Chainable/OptionalValueResolverTest.php | 5 +- tests/Loader/LoaderIntegrationTest.php | 53 ++++--------- tests/ParameterTest.php | 8 +- tests/Parser/Chainable/JsonParserTest.php | 18 ++--- tests/Parser/Chainable/PhpParserTest.php | 17 ++--- tests/Parser/Chainable/YamlParserTest.php | 17 ++--- 51 files changed, 238 insertions(+), 533 deletions(-) diff --git a/composer.json b/composer.json index 34739d77..4f3d6cad 100644 --- a/composer.json +++ b/composer.json @@ -31,7 +31,7 @@ "bamarni/composer-bin-plugin": "^1.8.1", "phpspec/prophecy": "^1.6", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^10.0", + "phpunit/phpunit": "^11.0", "symfony/config": "^6.4 || ^7.0", "symfony/dependency-injection": "^6.4 || ^7.0", "symfony/finder": "^6.4 || ^7.0", diff --git a/fixtures/Parser/FileListProviderTrait.php b/fixtures/Parser/FileListProviderTrait.php index 58d53f4e..da945217 100644 --- a/fixtures/Parser/FileListProviderTrait.php +++ b/fixtures/Parser/FileListProviderTrait.php @@ -15,22 +15,22 @@ trait FileListProviderTrait { - public function providePhpList() + public static function providePhpList(): array { return FilesReference::getPhpList(); } - public function provideYamlList() + public static function provideYamlList(): array { return FilesReference::getYamlList(); } - public function provideJsonList() + public static function provideJsonList(): array { return FilesReference::getJsonList(); } - public function provideUnsupportedList() + public static function provideUnsupportedList(): array { return FilesReference::getUnsupportedList(); } diff --git a/phpunit.xml.dist b/phpunit.xml.dist index bb906ee8..b67a5b03 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -21,59 +21,25 @@ - - - - - + src + src/Bridge src/deep_clone.php + + - - tests/Definition/PropertyTest.php - tests/Definition/PropertyBagTest.php - tests/Definition/MethodCallBagTest.php - tests/Definition/SpecificationBagTest.php - tests/Definition/FlagBagTest.php - tests/Definition/Fixture/SimpleFixtureTest.php - tests/Definition/Fixture/SimpleFixtureWithFlagsTest.php - tests/Definition/Fixture/TemplatingFixtureTest.php - tests/Definition/ServiceReference/FixtureReferenceTest.php - tests/Definition/Fixture/TemplatingTest.php - tests/Definition/MethodCall/OptionalMethodCallTest.php - tests/Definition/Value/FunctionCallValueTest.php - tests/Definition/Value/FixtureMethodCallValueTest.php - tests/Definition/Value/FixtureReferenceValueTest.php - tests/Definition/Value/FixturePropertyValueTest.php - tests/Definition/Value/FixturePropertyValueTest.php - tests/Definition/Value/UniqueValueTest.php - tests/ParameterTest.php - tests/ParameterBagTest.php - tests/FixtureBagTest.php - tests/Definition/Object/SimpleObjectTest.php - tests/ObjectBagTest.php - tests/ObjectSetTest.php - tests/FixtureSetTest.php - tests/FixtureBuilder/BareFixtureSetTest.php - tests/Generator/ResolvedFixtureSetTest.php - tests/Generator/ResolvedValueWithFixtureSetTest.php - tests/Generator/Resolver/Fixture/TemplatingFixtureBagTest.php - tests/Generator/Resolver/UniqueValuesPoolTest.php - tests/FixtureBuilder/ExpressionLanguage/TokenTypeTest.php - tests/FixtureBuilder/ExpressionLanguage/TokenTest.php - - + tests tests/Bridge diff --git a/tests/DeepCloneTest.php b/tests/DeepCloneTest.php index ca4630aa..488b737e 100644 --- a/tests/DeepCloneTest.php +++ b/tests/DeepCloneTest.php @@ -15,6 +15,7 @@ use DateTime; use DateTimeImmutable; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -24,11 +25,8 @@ */ class DeepCloneTest extends TestCase { - /** - * @dataProvider provideScalarValues - * @param mixed $value - */ - public function testDeepCloneScalarsReturnsScalar($value): void + #[DataProvider('provideScalarValues')] + public function testDeepCloneScalarsReturnsScalar(mixed $value): void { $clone = deep_clone($value); diff --git a/tests/Definition/Fixture/TemplatingTest.php b/tests/Definition/Fixture/TemplatingTest.php index 4a8bfc8f..20c1f33c 100644 --- a/tests/Definition/Fixture/TemplatingTest.php +++ b/tests/Definition/Fixture/TemplatingTest.php @@ -19,6 +19,7 @@ use Nelmio\Alice\Definition\FlagBag; use Nelmio\Alice\Definition\ServiceReference\FixtureReference; use Nelmio\Alice\Definition\SpecificationBagFactory; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; /** @@ -35,9 +36,7 @@ public function testIsImmutable(): void self::assertTrue(true, 'Nothing to do.'); } - /** - * @dataProvider provideFlags - */ + #[DataProvider('provideFlags')] public function testDetectTemplateFlags(SimpleFixtureWithFlags $fixture, bool $isATemplate, bool $extendsFixtures, array $extendedFixtures): void { $templating = new Templating($fixture); diff --git a/tests/Definition/Flag/OptionalFlagTest.php b/tests/Definition/Flag/OptionalFlagTest.php index 1bbb63e1..5ce00a75 100644 --- a/tests/Definition/Flag/OptionalFlagTest.php +++ b/tests/Definition/Flag/OptionalFlagTest.php @@ -15,6 +15,7 @@ use InvalidArgumentException; use Nelmio\Alice\Definition\FlagInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; /** @@ -36,9 +37,7 @@ public function testReadAccessorsReturnPropertiesValues(): void self::assertEquals('%?', $flag->__toString()); } - /** - * @dataProvider providePercentageValues - */ + #[DataProvider('providePercentageValues')] public function testThrowsExceptionIfPercentageValueIsInvalid(int $percentage, ?string $expectedMessage = null): void { try { diff --git a/tests/Definition/RangeNameTest.php b/tests/Definition/RangeNameTest.php index 581c3eba..4853c726 100644 --- a/tests/Definition/RangeNameTest.php +++ b/tests/Definition/RangeNameTest.php @@ -13,6 +13,7 @@ namespace Nelmio\Alice\Definition; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; /** @@ -21,9 +22,7 @@ */ class RangeNameTest extends TestCase { - /** - * @dataProvider provideRanges - */ + #[DataProvider('provideRanges')] public function testReadAccessorsReturnPropertiesValues(array $input, array $expected): void { $name = 'user'; diff --git a/tests/Definition/Value/DynamicArrayValueTest.php b/tests/Definition/Value/DynamicArrayValueTest.php index 5584bda8..a35256b1 100644 --- a/tests/Definition/Value/DynamicArrayValueTest.php +++ b/tests/Definition/Value/DynamicArrayValueTest.php @@ -14,6 +14,7 @@ namespace Nelmio\Alice\Definition\Value; use Nelmio\Alice\Definition\ValueInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; use TypeError; @@ -29,13 +30,8 @@ public function testIsAValue(): void self::assertTrue(is_a(UniqueValue::class, ValueInterface::class, true)); } - /** - * @dataProvider provideInputTypes - * @param mixed $quantifier - * @param mixed $element - * @param mixed $errorMessage - */ - public function testThrowsErrorIfInvalidInputType($quantifier, $element, $errorMessage): void + #[DataProvider('provideInputTypes')] + public function testThrowsErrorIfInvalidInputType(mixed $quantifier, mixed $element, mixed $errorMessage): void { try { new DynamicArrayValue($quantifier, $element); @@ -45,13 +41,8 @@ public function testThrowsErrorIfInvalidInputType($quantifier, $element, $errorM } } - /** - * @dataProvider provideValues - * @param mixed $quantifier - * @param mixed $element - * @param mixed $expectedQuantifier - */ - public function testReadAccessorsReturnPropertiesValues($quantifier, $element, $expectedQuantifier): void + #[DataProvider('provideValues')] + public function testReadAccessorsReturnPropertiesValues(mixed $quantifier, mixed $element, mixed $expectedQuantifier): void { $value = new DynamicArrayValue($quantifier, $element); diff --git a/tests/Definition/Value/OptionalValueTest.php b/tests/Definition/Value/OptionalValueTest.php index 5ef75486..b3324dd1 100644 --- a/tests/Definition/Value/OptionalValueTest.php +++ b/tests/Definition/Value/OptionalValueTest.php @@ -14,6 +14,7 @@ namespace Nelmio\Alice\Definition\Value; use Nelmio\Alice\Definition\ValueInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; use TypeError; @@ -29,14 +30,8 @@ public function testIsAValue(): void self::assertTrue(is_a(OptionalValue::class, ValueInterface::class, true)); } - /** - * @dataProvider provideInputValues - * @param mixed $quantifier - * @param mixed $firstMember - * @param mixed $secondMember - * @param mixed $errorMessage - */ - public function testThrowsErrorIfInvalidTypeGiven($quantifier, $firstMember, $secondMember, $errorMessage): void + #[DataProvider('provideInputValues')] + public function testThrowsErrorIfInvalidTypeGiven(mixed $quantifier, mixed $firstMember, mixed $secondMember, mixed $errorMessage): void { try { new OptionalValue($quantifier, $firstMember, $secondMember); diff --git a/tests/Definition/Value/ParameterValueTest.php b/tests/Definition/Value/ParameterValueTest.php index 979a971c..c9345232 100644 --- a/tests/Definition/Value/ParameterValueTest.php +++ b/tests/Definition/Value/ParameterValueTest.php @@ -14,6 +14,7 @@ namespace Nelmio\Alice\Definition\Value; use Nelmio\Alice\Definition\ValueInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; use TypeError; @@ -29,12 +30,8 @@ public function testIsAValue(): void self::assertTrue(is_a(ParameterValue::class, ValueInterface::class, true)); } - /** - * @dataProvider provideInputValues - * @param mixed $value - * @param mixed $errorMessage - */ - public function testThrowsErrorIfInvalidTypeGiven($value, $errorMessage): void + #[DataProvider('provideInputValues')] + public function testThrowsErrorIfInvalidTypeGiven(mixed $value, mixed $errorMessage): void { try { new ParameterValue($value); diff --git a/tests/Definition/Value/UniqueValueTest.php b/tests/Definition/Value/UniqueValueTest.php index 09ad5dfc..7c9f3c26 100644 --- a/tests/Definition/Value/UniqueValueTest.php +++ b/tests/Definition/Value/UniqueValueTest.php @@ -15,6 +15,7 @@ use InvalidArgumentException; use Nelmio\Alice\Definition\ValueInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; use const PHP_VERSION_ID; @@ -30,11 +31,8 @@ public function testIsAValue(): void self::assertTrue(is_a(UniqueValue::class, ValueInterface::class, true)); } - /** - * @dataProvider provideValues - * @param mixed $value - */ - public function testReadAccessorsReturnPropertiesValues($value): void + #[DataProvider('provideValues')] + public function testReadAccessorsReturnPropertiesValues(mixed $value): void { $id = 'Nelmio\Entity\User#user0#username'; diff --git a/tests/FileLocator/DefaultFileLocatorTest.php b/tests/FileLocator/DefaultFileLocatorTest.php index 151ec747..f989e685 100644 --- a/tests/FileLocator/DefaultFileLocatorTest.php +++ b/tests/FileLocator/DefaultFileLocatorTest.php @@ -15,6 +15,7 @@ use Nelmio\Alice\FileLocatorInterface; use Nelmio\Alice\Throwable\Exception\FileLocator\FileNotFoundException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionObject; @@ -39,11 +40,8 @@ public function testIsAFileLocator(): void self::assertTrue(is_a(DefaultFileLocator::class, FileLocatorInterface::class, true)); } - /** - * @dataProvider provideAbsolutePaths - * @param mixed $path - */ - public function testCanDetectAbsolutePaths($path): void + #[DataProvider('provideAbsolutePaths')] + public function testCanDetectAbsolutePaths(mixed $path): void { $reflectionObject = new ReflectionObject($this->locator); $methodReflection = $reflectionObject->getMethod('isAbsolutePath'); diff --git a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullListNameDenormalizerTest.php b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullListNameDenormalizerTest.php index 1dc2a2d3..19b43762 100644 --- a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullListNameDenormalizerTest.php +++ b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullListNameDenormalizerTest.php @@ -19,6 +19,7 @@ use Nelmio\Alice\Definition\FlagBag; use Nelmio\Alice\Definition\SpecificationBagFactory; use Nelmio\Alice\FixtureBag; +use PHPUnit\Framework\Attributes\DataProvider; use ReflectionClass; /** @@ -84,97 +85,62 @@ public function testDenormalizesListToBuildFixtures(): void self::assertSame($expected, $actual); } - /** - * @dataProvider provideSimpleFixtures - * @param mixed $name - */ - public function testCanBuildSimpleFixtures($name): void + #[DataProvider('provideSimpleFixtures')] + public function testCanBuildSimpleFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideListFixtures - * @param mixed $name - */ - public function testCanBuildListFixtures($name): void + #[DataProvider('provideListFixtures')] + public function testCanBuildListFixtures(mixed $name): void { $this->assertCanBuild($name); } - /** - * @dataProvider provideMalformedListFixtures - * @param mixed $name - */ - public function testCanBuildMalformedListFixtures($name): void + #[DataProvider('provideMalformedListFixtures')] + public function testCanBuildMalformedListFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideSegmentFixtures - * @param mixed $name - */ - public function testCanBuildSegmentFixtures($name): void + #[DataProvider('provideSegmentFixtures')] + public function testCanBuildSegmentFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideMalformedSegmentFixtures - * @param mixed $name - */ - public function testCanBuildMalformedSegmentFixtures($name): void + #[DataProvider('provideMalformedSegmentFixtures')] + public function testCanBuildMalformedSegmentFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideSimpleFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildSimpleFixtures($name, $expected): void + #[DataProvider('provideSimpleFixtures')] + public function testBuildSimpleFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideListFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildListFixtures($name, $expected): void + #[DataProvider('provideListFixtures')] + public function testBuildListFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideMalformedListFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildMalformedListFixtures($name, $expected): void + #[DataProvider('provideMalformedListFixtures')] + public function testBuildMalformedListFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideSegmentFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildSegmentFixtures($name, $expected): void + #[DataProvider('provideSegmentFixtures')] + public function testBuildSegmentFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideMalformedSegmentFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildMalformedSegmentFixtures($name, $expected): void + #[DataProvider('provideMalformedSegmentFixtures')] + public function testBuildMalformedSegmentFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } diff --git a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullRangeNameDenormalizerTest.php b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullRangeNameDenormalizerTest.php index c24a5df2..af4d6dd8 100644 --- a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullRangeNameDenormalizerTest.php +++ b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/NullRangeNameDenormalizerTest.php @@ -20,6 +20,7 @@ use Nelmio\Alice\Definition\SpecificationBagFactory; use Nelmio\Alice\FixtureBag; use Nelmio\Alice\FixtureBuilder\Denormalizer\Fixture\ChainableFixtureDenormalizerInterface; +use PHPUnit\Framework\Attributes\DataProvider; use ReflectionClass; /** @@ -114,97 +115,62 @@ public function testDenormalizesListWithStepToBuildFixtures(): void self::assertSame($expected, $actual); } - /** - * @dataProvider provideSimpleFixtures - * @param mixed $name - */ - public function testCanBuildSimpleFixtures($name): void + #[DataProvider('provideSimpleFixtures')] + public function testCanBuildSimpleFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideListFixtures - * @param mixed $name - */ - public function testCanBuildListFixtures($name): void + #[DataProvider('provideListFixtures')] + public function testCanBuildListFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideMalformedListFixtures - * @param mixed $name - */ - public function testCanBuildMalformedListFixtures($name): void + #[DataProvider('provideMalformedListFixtures')] + public function testCanBuildMalformedListFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideSegmentFixtures - * @param mixed $name - */ - public function testCanBuildSegmentFixtures($name): void + #[DataProvider('provideSegmentFixtures')] + public function testCanBuildSegmentFixtures(mixed $name): void { $this->assertCanBuild($name); } - /** - * @dataProvider provideMalformedSegmentFixtures - * @param mixed $name - */ - public function testCanBuildMalformedSegmentFixtures($name): void + #[DataProvider('provideMalformedSegmentFixtures')] + public function testCanBuildMalformedSegmentFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideSimpleFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildSimpleFixtures($name, $expected): void + #[DataProvider('provideSimpleFixtures')] + public function testBuildSimpleFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideListFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildListFixtures($name, $expected): void + #[DataProvider('provideListFixtures')] + public function testBuildListFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideMalformedListFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildMalformedListFixtures($name, $expected): void + #[DataProvider('provideMalformedListFixtures')] + public function testBuildMalformedListFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideSegmentFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildSegmentFixtures($name, $expected): void + #[DataProvider('provideSegmentFixtures')] + public function testBuildSegmentFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideMalformedSegmentFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildMalformedSegmentFixtures($name, $expected): void + #[DataProvider('provideMalformedSegmentFixtures')] + public function testBuildMalformedSegmentFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } diff --git a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ReferenceRangeNameDenormalizerTest.php b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ReferenceRangeNameDenormalizerTest.php index 706d4e7c..0cf7e3c9 100644 --- a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ReferenceRangeNameDenormalizerTest.php +++ b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/ReferenceRangeNameDenormalizerTest.php @@ -30,6 +30,7 @@ use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParserInterface; use Nelmio\Alice\Throwable\Exception\FixtureBuilder\Denormalizer\FlagParser\FlagParserNotFoundException; use Nelmio\Alice\Throwable\Exception\FixtureNotFoundException; +use PHPUnit\Framework\Attributes\DataProvider; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; use ReflectionClass; @@ -248,97 +249,62 @@ public function testWildcardWithNoMatchesThrowsFixtureNotFoundException(): void $specsDenormalizerProphecy->denormalize(Argument::cetera())->shouldHaveBeenCalledTimes(0); } - /** - * @dataProvider provideSimpleFixtures - * @param mixed $name - */ - public function testCanBuildSimpleFixtures($name): void + #[DataProvider('provideSimpleFixtures')] + public function testCanBuildSimpleFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideListFixtures - * @param mixed $name - */ - public function testCanBuildListFixtures($name): void + #[DataProvider('provideListFixtures')] + public function testCanBuildListFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideMalformedListFixtures - * @param mixed $name - */ - public function testCanBuildMalformedListFixtures($name): void + #[DataProvider('provideMalformedListFixtures')] + public function testCanBuildMalformedListFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideSegmentFixtures - * @param mixed $name - */ - public function testCanBuildSegmentFixtures($name): void + #[DataProvider('provideSegmentFixtures')] + public function testCanBuildSegmentFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideMalformedSegmentFixtures - * @param mixed $name - */ - public function testCanBuildMalformedSegmentFixtures($name): void + #[DataProvider('provideMalformedSegmentFixtures')] + public function testCanBuildMalformedSegmentFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideSimpleFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildSimpleFixtures($name, $expected): void + #[DataProvider('provideSimpleFixtures')] + public function testBuildSimpleFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideListFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildListFixtures($name, $expected): void + #[DataProvider('provideListFixtures')] + public function testBuildListFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideMalformedListFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildMalformedListFixtures($name, $expected): void + #[DataProvider('provideMalformedListFixtures')] + public function testBuildMalformedListFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideSegmentFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildSegmentFixtures($name, $expected): void + #[DataProvider('provideSegmentFixtures')] + public function testBuildSegmentFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideMalformedSegmentFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildMalformedSegmentFixtures($name, $expected): void + #[DataProvider('provideMalformedSegmentFixtures')] + public function testBuildMalformedSegmentFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } diff --git a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/SimpleDenormalizerTest.php b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/SimpleDenormalizerTest.php index 168dd425..bf8b2018 100644 --- a/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/SimpleDenormalizerTest.php +++ b/tests/FixtureBuilder/Denormalizer/Fixture/Chainable/SimpleDenormalizerTest.php @@ -29,6 +29,7 @@ use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\DummyFlagParser; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParserInterface; use Nelmio\Alice\Throwable\Exception\FixtureBuilder\Denormalizer\FlagParser\FlagParserNotFoundException; +use PHPUnit\Framework\Attributes\DataProvider; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; use ReflectionClass; @@ -170,96 +171,61 @@ public function testDenormalizationRemovesFlagsInIds(): void $specsDenormalizerProphecy->denormalize(Argument::cetera())->shouldHaveBeenCalledTimes(1); } - /** - * @dataProvider provideSimpleFixtures - * @param mixed $name - */ - public function testCanBuildSimpleFixtures($name): void + #[DataProvider('provideSimpleFixtures')] + public function testCanBuildSimpleFixtures(mixed $name): void { $this->assertCanBuild($name); } - /** - * @dataProvider provideListFixtures - * @param mixed $name - */ - public function testCanBuildListFixtures($name): void + #[DataProvider('provideListFixtures')] + public function testCanBuildListFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideMalformedListFixtures - * @param mixed $name - */ - public function testCanBuildMalformedListFixtures($name): void + #[DataProvider('provideMalformedListFixtures')] + public function testCanBuildMalformedListFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideSegmentFixtures - * @param mixed $name - */ - public function testCanBuildSegmentFixtures($name): void + #[DataProvider('provideSegmentFixtures')] + public function testCanBuildSegmentFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideMalformedSegmentFixtures - * @param mixed $name - */ - public function testCanBuildMalformedSegmentFixtures($name): void + #[DataProvider('provideMalformedSegmentFixtures')] + public function testCanBuildMalformedSegmentFixtures(mixed $name): void { $this->assertCannotBuild($name); } - /** - * @dataProvider provideSimpleFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildSimpleFixtures($name, $expected): void + #[DataProvider('provideSimpleFixtures')] + public function testBuildSimpleFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideListFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildListFixtures($name, $expected): void + #[DataProvider('provideListFixtures')] + public function testBuildListFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideMalformedListFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildMalformedListFixtures($name, $expected): void + #[DataProvider('provideMalformedListFixtures')] + public function testBuildMalformedListFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideSegmentFixtures - * @param mixed $name - * @param mixed $expected - */ - public function testBuildSegmentFixtures($name, $expected): void + #[DataProvider('provideSegmentFixtures')] + public function testBuildSegmentFixtures(mixed $name, mixed $expected): void { $this->markAsInvalidCase(); } - /** - * @dataProvider provideMalformedSegmentFixtures - * @param mixed $name - * @param mixed $expected - */ + #[DataProvider('provideMalformedSegmentFixtures')] public function testBuildMalformedSegmentFixtures($name, $expected): void { $this->markAsInvalidCase(); diff --git a/tests/FixtureBuilder/Denormalizer/Fixture/ReferenceProviderTrait.php b/tests/FixtureBuilder/Denormalizer/Fixture/ReferenceProviderTrait.php index 5659af7f..b15f8396 100644 --- a/tests/FixtureBuilder/Denormalizer/Fixture/ReferenceProviderTrait.php +++ b/tests/FixtureBuilder/Denormalizer/Fixture/ReferenceProviderTrait.php @@ -15,27 +15,27 @@ trait ReferenceProviderTrait { - public function provideSimpleFixtures() + public static function provideSimpleFixtures(): array { return Reference::getSimpleFixtures(); } - public function provideListFixtures() + public static function provideListFixtures(): array { return Reference::getListFixtures(); } - public function provideMalformedListFixtures() + public static function provideMalformedListFixtures(): array { return Reference::getMalformedListFixtures(); } - public function provideSegmentFixtures() + public static function provideSegmentFixtures(): array { return Reference::getSegmentFixtures(); } - public function provideMalformedSegmentFixtures() + public static function provideMalformedSegmentFixtures(): array { return Reference::getMalformedSegmentFixtures(); } diff --git a/tests/FixtureBuilder/Denormalizer/Fixture/SpecificationBagDenormalizer/SimpleSpecificationsDenormalizerTest.php b/tests/FixtureBuilder/Denormalizer/Fixture/SpecificationBagDenormalizer/SimpleSpecificationsDenormalizerTest.php index 5a0281c2..64b9f5ad 100644 --- a/tests/FixtureBuilder/Denormalizer/Fixture/SpecificationBagDenormalizer/SimpleSpecificationsDenormalizerTest.php +++ b/tests/FixtureBuilder/Denormalizer/Fixture/SpecificationBagDenormalizer/SimpleSpecificationsDenormalizerTest.php @@ -29,15 +29,17 @@ use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\FakeFlagParser; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParserInterface; use Nelmio\Alice\Throwable\Exception\FixtureBuilder\Denormalizer\UnexpectedValueException; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\TestCase; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; use TypeError; /** - * @covers \Nelmio\Alice\FixtureBuilder\Denormalizer\Fixture\SpecificationBagDenormalizer\SimpleSpecificationsDenormalizer * @internal */ +#[CoversClass(SimpleSpecificationsDenormalizer::class)] class SimpleSpecificationsDenormalizerTest extends TestCase { use ProphecyTrait; @@ -136,13 +138,11 @@ public function testCanDenormalizeFactory(): void $constructorDenormalizerProphecy->denormalize(Argument::cetera())->shouldHaveBeenCalledTimes(1); } - /** - * @group legacy - * - * @expectedDeprecation Using factories with the fixture keyword "__construct" has been deprecated since 3.0.0 and will no longer be supported in Alice 4.0.0. Use "__factory" instead. - */ + #[Group('legacy')] public function testUsingAFactoryWithConstructIsDeprecated(): void { + $this->expectUserDeprecationMessage('Using factories with the fixture keyword "__construct" has been deprecated since 3.0.0 and will no longer be supported in Alice 4.0.0. Use "__factory" instead.'); + $fixture = new FakeFixture(); $specs = [ '__construct' => $factory = [ @@ -170,6 +170,7 @@ public function testUsingAFactoryWithConstructIsDeprecated(): void ); $denormalizer = new SimpleSpecificationsDenormalizer($constructorDenormalizer, new FakePropertyDenormalizer(), new FakeCallsDenormalizer()); + $actual = $denormalizer->denormalize(new FakeFixture(), $flagParser, $specs); self::assertEquals($expected, $actual); diff --git a/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/ConfiguratorFlagParserTest.php b/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/ConfiguratorFlagParserTest.php index 2b497843..f05d99ae 100644 --- a/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/ConfiguratorFlagParserTest.php +++ b/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/ConfiguratorFlagParserTest.php @@ -16,6 +16,7 @@ use Nelmio\Alice\Definition\FlagBag; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\ChainableFlagParserInterface; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\FlagParserTestCase; +use PHPUnit\Framework\Attributes\DataProvider; /** * @covers \Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\Chainable\ConfiguratorFlagParser @@ -33,9 +34,7 @@ public function testIsAChainableFlagParser(): void self::assertTrue(is_a(ConfiguratorFlagParser::class, ChainableFlagParserInterface::class, true)); } - /** - * @dataProvider provideConfigurators - */ + #[DataProvider('provideConfigurators')] public function testCanParseConfigurators(string $element, ?FlagBag $expected = null): void { $this->assertCanParse($element, $expected); diff --git a/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/ExtendFlagParserTest.php b/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/ExtendFlagParserTest.php index 9a043059..7a099ebd 100644 --- a/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/ExtendFlagParserTest.php +++ b/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/ExtendFlagParserTest.php @@ -16,6 +16,7 @@ use Nelmio\Alice\Definition\FlagBag; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\ChainableFlagParserInterface; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\FlagParserTestCase; +use PHPUnit\Framework\Attributes\DataProvider; /** * @covers \Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\Chainable\ExtendFlagParser @@ -33,9 +34,7 @@ public function testIsAChainableFlagParser(): void self::assertTrue(is_a(ExtendFlagParser::class, ChainableFlagParserInterface::class, true)); } - /** - * @dataProvider provideExtends - */ + #[DataProvider('provideExtends')] public function testCanParseExtends(string $element, ?FlagBag $expected = null): void { $this->assertCanParse($element, $expected); diff --git a/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/OptionalFlagParserTest.php b/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/OptionalFlagParserTest.php index ff3db956..2fcfc8b7 100644 --- a/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/OptionalFlagParserTest.php +++ b/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/OptionalFlagParserTest.php @@ -16,6 +16,7 @@ use Nelmio\Alice\Definition\FlagBag; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\ChainableFlagParserInterface; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\FlagParserTestCase; +use PHPUnit\Framework\Attributes\DataProvider; /** * @covers \Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\Chainable\OptionalFlagParser @@ -33,9 +34,7 @@ public function testIsAChainableFlagParser(): void self::assertTrue(is_a(OptionalFlagParser::class, ChainableFlagParserInterface::class, true)); } - /** - * @dataProvider provideOptionals - */ + #[DataProvider('provideOptionals')] public function testCanParseOptionals(string $element, ?FlagBag $expected = null): void { $this->assertCanParse($element, $expected); diff --git a/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/TemplateFlagParserTest.php b/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/TemplateFlagParserTest.php index 3f7d22f9..e5262e2e 100644 --- a/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/TemplateFlagParserTest.php +++ b/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/TemplateFlagParserTest.php @@ -16,6 +16,7 @@ use Nelmio\Alice\Definition\FlagBag; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\ChainableFlagParserInterface; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\FlagParserTestCase; +use PHPUnit\Framework\Attributes\DataProvider; /** * @covers \Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\Chainable\TemplateFlagParser @@ -33,9 +34,7 @@ public function testIsAChainableFlagParser(): void self::assertTrue(is_a(TemplateFlagParser::class, ChainableFlagParserInterface::class, true)); } - /** - * @dataProvider provideTemplates - */ + #[DataProvider('provideTemplates')] public function testCanParseTemplates(string $element, ?FlagBag $expected = null): void { $this->assertCanParse($element, $expected); diff --git a/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/UniqueFlagParserTest.php b/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/UniqueFlagParserTest.php index 8a625217..4cfb8aa7 100644 --- a/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/UniqueFlagParserTest.php +++ b/tests/FixtureBuilder/Denormalizer/FlagParser/Chainable/UniqueFlagParserTest.php @@ -16,6 +16,7 @@ use Nelmio\Alice\Definition\FlagBag; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\ChainableFlagParserInterface; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\FlagParserTestCase; +use PHPUnit\Framework\Attributes\DataProvider; /** * @covers \Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParser\Chainable\UniqueFlagParser @@ -33,9 +34,7 @@ public function testIsAChainableFlagParser(): void self::assertTrue(is_a(UniqueFlagParser::class, ChainableFlagParserInterface::class, true)); } - /** - * @dataProvider provideUniques - */ + #[DataProvider('provideUniques')] public function testCanParseUniques(string $element, ?FlagBag $expected = null): void { $this->assertCanParse($element, $expected); diff --git a/tests/FixtureBuilder/Denormalizer/FlagParser/ElementFlagParserTest.php b/tests/FixtureBuilder/Denormalizer/FlagParser/ElementFlagParserTest.php index be52e9e4..5283175e 100644 --- a/tests/FixtureBuilder/Denormalizer/FlagParser/ElementFlagParserTest.php +++ b/tests/FixtureBuilder/Denormalizer/FlagParser/ElementFlagParserTest.php @@ -16,6 +16,7 @@ use Nelmio\Alice\Definition\Flag\ElementFlag; use Nelmio\Alice\Definition\FlagBag; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParserInterface; +use PHPUnit\Framework\Attributes\DataProvider; use Prophecy\PhpUnit\ProphecyTrait; use RuntimeException; @@ -77,9 +78,7 @@ public function testIfAFlagIsFoundThenParsesItWithDecoratedParserBeforeReturning self::assertEquals($expected, $actual); } - /** - * @dataProvider provideElements - */ + #[DataProvider('provideElements')] public function testCanParseElements(string $element, ?FlagBag $expected = null): void { $actual = $this->parser->parse($element); @@ -87,9 +86,7 @@ public function testCanParseElements(string $element, ?FlagBag $expected = null) self::assertEquals($expected, $actual); } - /** - * @dataProvider provideMalformedElements - */ + #[DataProvider('provideMalformedElements')] public function testCannotParseMalformedElements(string $element): void { try { diff --git a/tests/FixtureBuilder/Denormalizer/FlagParser/FlagParserTestCase.php b/tests/FixtureBuilder/Denormalizer/FlagParser/FlagParserTestCase.php index 27629675..9da7a4ae 100644 --- a/tests/FixtureBuilder/Denormalizer/FlagParser/FlagParserTestCase.php +++ b/tests/FixtureBuilder/Denormalizer/FlagParser/FlagParserTestCase.php @@ -16,6 +16,7 @@ use LogicException; use Nelmio\Alice\Definition\FlagBag; use Nelmio\Alice\FixtureBuilder\Denormalizer\FlagParserInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionObject; @@ -31,73 +32,55 @@ public function testIsNotClonable(): void self::assertFalse((new ReflectionObject($this->parser))->isCloneable()); } - /** - * @dataProvider provideElements - */ + #[DataProvider('provideElements')] public function testCanParseElements(string $element, ?FlagBag $expected = null): void { $this->assertCannotParse($element); } - /** - * @dataProvider provideMalformedElements - */ + #[DataProvider('provideMalformedElements')] public function testCannotParseMalformedElements(string $element): void { $this->assertCannotParse($element); } - /** - * @dataProvider provideExtends - */ + #[DataProvider('provideExtends')] public function testCanParseExtends(string $element, ?FlagBag $expected = null): void { $this->assertCannotParse($element); } - /** - * @dataProvider provideMalformedExtends - */ + #[DataProvider('provideMalformedExtends')] public function testCannotParseMalformedExtends(string $element): void { $this->assertCannotParse($element); } - /** - * @dataProvider provideOptionals - */ + #[DataProvider('provideOptionals')] public function testCanParseOptionals(string $element, ?FlagBag $expected = null): void { $this->assertCannotParse($element); } - /** - * @dataProvider provideMalformedOptionals - */ + #[DataProvider('provideMalformedOptionals')] public function testCannotParseMalformedOptionals(string $element): void { $this->assertCannotParse($element); } - /** - * @dataProvider provideTemplates - */ + #[DataProvider('provideTemplates')] public function testCanParseTemplates(string $element, ?FlagBag $expected = null): void { $this->assertCannotParse($element); } - /** - * @dataProvider provideUniques - */ + #[DataProvider('provideUniques')] public function testCanParseUniques(string $element, ?FlagBag $expected = null): void { $this->assertCannotParse($element); } - /** - * @dataProvider provideConfigurators - */ + #[DataProvider('provideConfigurators')] public function testCanParseConfigurators(string $element, ?FlagBag $expected = null): void { $this->assertCannotParse($element); diff --git a/tests/FixtureBuilder/Denormalizer/Parameter/SimpleParameterBagDenormalizerTest.php b/tests/FixtureBuilder/Denormalizer/Parameter/SimpleParameterBagDenormalizerTest.php index a1c7ad30..347db96b 100644 --- a/tests/FixtureBuilder/Denormalizer/Parameter/SimpleParameterBagDenormalizerTest.php +++ b/tests/FixtureBuilder/Denormalizer/Parameter/SimpleParameterBagDenormalizerTest.php @@ -15,6 +15,7 @@ use Nelmio\Alice\FixtureBuilder\Denormalizer\ParameterBagDenormalizerInterface; use Nelmio\Alice\ParameterBag; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionObject; use stdClass; @@ -46,9 +47,7 @@ public function testIsNotClonable(): void self::assertFalse((new ReflectionObject($this->denormalizer))->isCloneable()); } - /** - * @dataProvider provideDataWithNoParameters - */ + #[DataProvider('provideDataWithNoParameters')] public function testReturnsEmptyBagIfNoParametersHaveBeenDeclared(array $data): void { $actual = $this->denormalizer->denormalize($data); @@ -56,9 +55,7 @@ public function testReturnsEmptyBagIfNoParametersHaveBeenDeclared(array $data): self::assertEquals(new ParameterBag(), $actual); } - /** - * @dataProvider provideDataWithInvalidParameterKeys - */ + #[DataProvider('provideDataWithInvalidParameterKeys')] public function testThrowsExceptionIfParametersKeyIsNotAnArray(array $data, string $expectedExceptionMessage): void { try { diff --git a/tests/FixtureBuilder/ExpressionLanguage/Lexer/FunctionTokenizerTest.php b/tests/FixtureBuilder/ExpressionLanguage/Lexer/FunctionTokenizerTest.php index 704f7546..89aac814 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/Lexer/FunctionTokenizerTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/Lexer/FunctionTokenizerTest.php @@ -14,6 +14,7 @@ namespace Nelmio\Alice\FixtureBuilder\ExpressionLanguage\Lexer; use Nelmio\Alice\Throwable\Exception\FixtureBuilder\ExpressionLanguage\MalformedFunctionException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionClass; @@ -39,12 +40,8 @@ public function testIsNotClonable(): void self::assertFalse((new ReflectionClass(FunctionTokenizer::class))->isCloneable()); } - /** - * @dataProvider provideValues - * @param mixed $value - * @param mixed $expected - */ - public function testTokenizeValues($value, $expected): void + #[DataProvider('provideValues')] + public function testTokenizeValues(mixed $value, mixed $expected): void { try { $actual = $this->tokenizer->tokenize($value); diff --git a/tests/FixtureBuilder/ExpressionLanguage/Lexer/LexerIntegrationTest.php b/tests/FixtureBuilder/ExpressionLanguage/Lexer/LexerIntegrationTest.php index 3ba74afa..c536c3b0 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/Lexer/LexerIntegrationTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/Lexer/LexerIntegrationTest.php @@ -19,6 +19,7 @@ use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\TokenType; use Nelmio\Alice\Loader\NativeLoader; use Nelmio\Alice\Throwable\Exception\FixtureBuilder\ExpressionLanguage\LexException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use function str_repeat; @@ -40,11 +41,8 @@ protected function setUp(): void $this->lexer = (new NativeLoader())->getLexer(); } - /** - * @dataProvider provideValues - * @param mixed $expected - */ - public function testCanLexValues(string $value, $expected): void + #[DataProvider('provideValues')] + public function testCanLexValues(string $value, mixed $expected): void { try { $actual = $this->lexer->lex($value); diff --git a/tests/FixtureBuilder/ExpressionLanguage/Lexer/ReferenceEscaperLexerTest.php b/tests/FixtureBuilder/ExpressionLanguage/Lexer/ReferenceEscaperLexerTest.php index e1fcb39f..2b04db33 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/Lexer/ReferenceEscaperLexerTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/Lexer/ReferenceEscaperLexerTest.php @@ -14,6 +14,7 @@ namespace Nelmio\Alice\FixtureBuilder\ExpressionLanguage\Lexer; use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\LexerInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; @@ -38,9 +39,7 @@ public function testIsNotClonable(): void self::assertFalse((new ReflectionClass(ReferenceEscaperLexer::class))->isCloneable()); } - /** - * @dataProvider provideValues - */ + #[DataProvider('provideValues')] public function testEscapesStringBeforeHandlingItOverToTheDecoratedLexer(string $value, ?string $expectedEscapedValue = null): void { if (null === $expectedEscapedValue) { diff --git a/tests/FixtureBuilder/ExpressionLanguage/Lexer/ReferenceLexerTest.php b/tests/FixtureBuilder/ExpressionLanguage/Lexer/ReferenceLexerTest.php index 8fda57b1..12eb587e 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/Lexer/ReferenceLexerTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/Lexer/ReferenceLexerTest.php @@ -18,6 +18,7 @@ use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\Token; use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\TokenType; use Nelmio\Alice\Throwable\Exception\FixtureBuilder\ExpressionLanguage\LexException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionClass; @@ -55,9 +56,7 @@ public function testThrowsAnExceptionWhenAnInvalidValueIsGiven(): void $this->lexer->lex('@u->'); } - /** - * @dataProvider provideValues - */ + #[DataProvider('provideValues')] public function testReturnsMatchingToken(string $value, array $expected): void { $actual = $this->lexer->lex($value); diff --git a/tests/FixtureBuilder/ExpressionLanguage/Lexer/SubPatternsLexerTest.php b/tests/FixtureBuilder/ExpressionLanguage/Lexer/SubPatternsLexerTest.php index 4d393a0e..d2387c85 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/Lexer/SubPatternsLexerTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/Lexer/SubPatternsLexerTest.php @@ -17,6 +17,7 @@ use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\LexerInterface; use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\Token; use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\TokenType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; @@ -53,9 +54,7 @@ public function testLexAValueToReturnAListOfTokens(): void self::assertEquals($expected, $actual); } - /** - * @dataProvider lineBreaksProvider - */ + #[DataProvider('lineBreaksProvider')] public function testLexAFunctionContainingLineBreaks(string $lineBreak): void { $expected = [ diff --git a/tests/FixtureBuilder/ExpressionLanguage/Parser/FunctionFixtureReferenceParserTest.php b/tests/FixtureBuilder/ExpressionLanguage/Parser/FunctionFixtureReferenceParserTest.php index 24f0620b..f464cfd9 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/Parser/FunctionFixtureReferenceParserTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/Parser/FunctionFixtureReferenceParserTest.php @@ -18,6 +18,7 @@ use Nelmio\Alice\Definition\Value\FunctionCallValue; use Nelmio\Alice\Definition\Value\ListValue; use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\ParserInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; @@ -152,12 +153,8 @@ public function testIfNotFunctionFixtureReferenceIsFoundThenTheResultWillRemainU $decoratedParserProphecy->parse(Argument::any())->shouldHaveBeenCalledTimes(1); } - /** - * @dataProvider provideOneElementValues - * @param mixed $value - * @param mixed $expected - */ - public function testIfThereIsOnlyOneElementThenReturnTheElementInsteadOfAValueList($value, $expected): void + #[DataProvider('provideOneElementValues')] + public function testIfThereIsOnlyOneElementThenReturnTheElementInsteadOfAValueList(mixed $value, mixed $expected): void { $decoratedParserProphecy = $this->prophesize(ParserInterface::class); $decoratedParserProphecy->parse(Argument::any())->willReturn($expected); diff --git a/tests/FixtureBuilder/ExpressionLanguage/Parser/ParserIntegrationTest.php b/tests/FixtureBuilder/ExpressionLanguage/Parser/ParserIntegrationTest.php index 325c0c72..470691a9 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/Parser/ParserIntegrationTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/Parser/ParserIntegrationTest.php @@ -30,6 +30,7 @@ use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\ParserInterface; use Nelmio\Alice\Loader\NativeLoader; use Nelmio\Alice\Throwable\ExpressionLanguageParseThrowable; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use function str_repeat; use const DIRECTORY_SEPARATOR; @@ -52,11 +53,8 @@ protected function setUp(): void $this->parser = (new NativeLoader())->getExpressionLanguageParser(); } - /** - * @dataProvider provideValues - * @param mixed $expected - */ - public function testParseValues(string $value, $expected): void + #[DataProvider('provideValues')] + public function testParseValues(string $value, mixed $expected): void { try { $actual = $this->parser->parse($value); diff --git a/tests/FixtureBuilder/ExpressionLanguage/Parser/StringMergerParserTest.php b/tests/FixtureBuilder/ExpressionLanguage/Parser/StringMergerParserTest.php index af94bf01..39ae355b 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/Parser/StringMergerParserTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/Parser/StringMergerParserTest.php @@ -16,6 +16,7 @@ use Nelmio\Alice\Definition\Value\FakeValue; use Nelmio\Alice\Definition\Value\ListValue; use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\ParserInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; @@ -139,12 +140,8 @@ public function testIfNotFunctionFixtureReferenceIsFoundThenTheResultWillRemainU $decoratedParserProphecy->parse(Argument::any())->shouldHaveBeenCalledTimes(1); } - /** - * @dataProvider provideOneElementValues - * @param mixed $parsedValue - * @param mixed $expected - */ - public function testIfThereIsOnlyOneElementThenReturnTheElementInsteadOfAValueList($parsedValue, $expected): void + #[DataProvider('provideOneElementValues')] + public function testIfThereIsOnlyOneElementThenReturnTheElementInsteadOfAValueList(mixed $parsedValue, mixed $expected): void { $decoratedParserProphecy = $this->prophesize(ParserInterface::class); $decoratedParserProphecy->parse(Argument::any())->willReturn($parsedValue); diff --git a/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/EscapedValueTokenParserTest.php b/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/EscapedValueTokenParserTest.php index 1b56e2f2..688f373b 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/EscapedValueTokenParserTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/EscapedValueTokenParserTest.php @@ -17,6 +17,7 @@ use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\Token; use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\TokenType; use Nelmio\Alice\Throwable\Exception\FixtureBuilder\ExpressionLanguage\ParseException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionClass; @@ -36,9 +37,7 @@ public function testIsNotClonable(): void self::assertFalse((new ReflectionClass(EscapedValueTokenParser::class))->isCloneable()); } - /** - * @dataProvider provideTokens - */ + #[DataProvider('provideTokens')] public function testCanParseEscapedTokens(Token $token, bool $expected): void { $parser = new EscapedValueTokenParser(); diff --git a/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/FixtureListReferenceTokenParserTest.php b/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/FixtureListReferenceTokenParserTest.php index 351712ad..b91d5d69 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/FixtureListReferenceTokenParserTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/FixtureListReferenceTokenParserTest.php @@ -19,6 +19,7 @@ use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\Token; use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\TokenType; use Nelmio\Alice\Throwable\Exception\FixtureBuilder\ExpressionLanguage\ParseException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionClass; @@ -38,9 +39,7 @@ public function testIsNotClonable(): void self::assertFalse((new ReflectionClass(FixtureListReferenceTokenParser::class))->isCloneable()); } - /** - * @dataProvider provideTokens - */ + #[DataProvider('provideTokens')] public function testCanParseListReferenceTokens(Token $token, bool $expected): void { $parser = new FixtureListReferenceTokenParser(); diff --git a/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/FixtureMethodReferenceTokenParserTest.php b/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/FixtureMethodReferenceTokenParserTest.php index a7dc2f61..3487d853 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/FixtureMethodReferenceTokenParserTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/Parser/TokenParser/Chainable/FixtureMethodReferenceTokenParserTest.php @@ -24,6 +24,7 @@ use Nelmio\Alice\FixtureBuilder\ExpressionLanguage\TokenType; use Nelmio\Alice\Throwable\Exception\FixtureBuilder\ExpressionLanguage\ParseException; use Nelmio\Alice\Throwable\Exception\FixtureBuilder\ExpressionLanguage\ParserNotFoundException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Prophecy\PhpUnit\ProphecyTrait; use ReflectionClass; @@ -109,10 +110,9 @@ public function testThrowsAnExceptionIfMethodReferenceIsMalformed(): void } /** - * @dataProvider provideParser - * * @param Closure(self): ParserInterface $decoratedParserFactory */ + #[DataProvider('provideParser')] public function testThrowsAnExceptionIfParsingReturnsAnUnexpectedResult(Closure $decoratedParserFactory): void { $decoratedParser = $decoratedParserFactory($this); diff --git a/tests/FixtureBuilder/ExpressionLanguage/TokenTypeTest.php b/tests/FixtureBuilder/ExpressionLanguage/TokenTypeTest.php index a9d39f0d..76a85492 100644 --- a/tests/FixtureBuilder/ExpressionLanguage/TokenTypeTest.php +++ b/tests/FixtureBuilder/ExpressionLanguage/TokenTypeTest.php @@ -14,6 +14,7 @@ namespace Nelmio\Alice\FixtureBuilder\ExpressionLanguage; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionClass; @@ -55,9 +56,7 @@ public function testStaticValues(): void } } - /** - * @dataProvider provideAcceptableTypes - */ + #[DataProvider('provideAcceptableTypes')] public function testCanCreateType(string $typeConstant): void { $type = new TokenType($typeConstant); diff --git a/tests/Generator/Hydrator/Property/SymfonyPropertyAccessorHydratorTest.php b/tests/Generator/Hydrator/Property/SymfonyPropertyAccessorHydratorTest.php index 9d5807d0..6013b738 100644 --- a/tests/Generator/Hydrator/Property/SymfonyPropertyAccessorHydratorTest.php +++ b/tests/Generator/Hydrator/Property/SymfonyPropertyAccessorHydratorTest.php @@ -27,6 +27,7 @@ use Nelmio\Alice\Throwable\Exception\Generator\Hydrator\InvalidArgumentException; use Nelmio\Alice\Throwable\Exception\Generator\Hydrator\NoSuchPropertyException; use Nelmio\Alice\Throwable\Exception\Symfony\PropertyAccess\RootException as GenericPropertyAccessException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; @@ -207,9 +208,7 @@ public function testCatchesAnySymfonyPropertyAccessorToThrowAnHydratorException( } } - /** - * @dataProvider provideProperties - */ + #[DataProvider('provideProperties')] public function testObjectHydrationAgainstMutlipleValues(Property $property): void { $instance = new Dummy(); diff --git a/tests/Generator/NamedArgumentsResolverTest.php b/tests/Generator/NamedArgumentsResolverTest.php index 46782b97..86ecfed0 100644 --- a/tests/Generator/NamedArgumentsResolverTest.php +++ b/tests/Generator/NamedArgumentsResolverTest.php @@ -17,6 +17,7 @@ use Nelmio\Alice\Entity\DummyWithNoArgumentConstructor; use Nelmio\Alice\Entity\DummyWithVariadicConstructorParamAndParam; use Nelmio\Alice\Entity\EmptyDummy; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use RuntimeException; @@ -26,9 +27,7 @@ */ class NamedArgumentsResolverTest extends TestCase { - /** - * @dataProvider provideResolveArgumentsCases - */ + #[DataProvider('provideResolveArgumentsCases')] public function testResolveArguments(string $className, string $methodName, array $argument, array $expectedResult): void { $resolver = new NamedArgumentsResolver(); diff --git a/tests/Generator/ObjectGenerator/CompleteObjectGeneratorTest.php b/tests/Generator/ObjectGenerator/CompleteObjectGeneratorTest.php index ddc44fa8..699a2003 100644 --- a/tests/Generator/ObjectGenerator/CompleteObjectGeneratorTest.php +++ b/tests/Generator/ObjectGenerator/CompleteObjectGeneratorTest.php @@ -28,6 +28,7 @@ use Nelmio\Alice\Generator\ObjectGeneratorInterface; use Nelmio\Alice\Generator\ResolvedFixtureSetFactory; use Nelmio\Alice\ObjectBag; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; @@ -101,9 +102,7 @@ public function testUsesDecoratedGeneratorToGenerateTheObjectAndReturnsTheResult $decoratedGeneratorProphecy->generate(Argument::cetera())->shouldHaveBeenCalledTimes(1); } - /** - * @dataProvider provideSets - */ + #[DataProvider('provideSets')] public function testReturnsCompleteObjectWheneverItIsPossible( FixtureInterface $fixture, GenerationContext $context, diff --git a/tests/Generator/Resolver/Parameter/Chainable/ArrayParameterResolverTest.php b/tests/Generator/Resolver/Parameter/Chainable/ArrayParameterResolverTest.php index ab44cf46..0e5203b7 100644 --- a/tests/Generator/Resolver/Parameter/Chainable/ArrayParameterResolverTest.php +++ b/tests/Generator/Resolver/Parameter/Chainable/ArrayParameterResolverTest.php @@ -21,6 +21,7 @@ use Nelmio\Alice\Parameter; use Nelmio\Alice\ParameterBag; use Nelmio\Alice\Throwable\Exception\Generator\Resolver\ResolverNotFoundException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; @@ -200,9 +201,7 @@ public function testIfResolutionResultsInMultipleParametersBeingResolvedThenThey ); } - /** - * @dataProvider provideContexts - */ + #[DataProvider('provideContexts')] public function testTheContextPassedToTheInjectedResolverIsAlwaysValid(?ResolvingContext $context, ResolvingContext $expected): void { $array = [ diff --git a/tests/Generator/Resolver/Parameter/Chainable/RecursiveParameterResolverTest.php b/tests/Generator/Resolver/Parameter/Chainable/RecursiveParameterResolverTest.php index d66b326d..2a3a299e 100644 --- a/tests/Generator/Resolver/Parameter/Chainable/RecursiveParameterResolverTest.php +++ b/tests/Generator/Resolver/Parameter/Chainable/RecursiveParameterResolverTest.php @@ -21,6 +21,7 @@ use Nelmio\Alice\Parameter; use Nelmio\Alice\ParameterBag; use Nelmio\Alice\Throwable\Exception\Generator\Resolver\RecursionLimitReachedException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; @@ -198,9 +199,7 @@ public function testIfMultipleParametersAreResolvedInTheProcessThenTheyWillBeInc $decoratedResolverProphecy->resolve(Argument::cetera())->shouldHaveBeenCalledTimes(3); } - /** - * @dataProvider provideContexts - */ + #[DataProvider('provideContexts')] public function testTheSameContextIsPassedBetweenEachResolution(?ResolvingContext $context = null): void { $parameter = new Parameter('foo', null); diff --git a/tests/Generator/Resolver/ParameterResolverIntegrationTest.php b/tests/Generator/Resolver/ParameterResolverIntegrationTest.php index eb362ddc..c4933bf6 100644 --- a/tests/Generator/Resolver/ParameterResolverIntegrationTest.php +++ b/tests/Generator/Resolver/ParameterResolverIntegrationTest.php @@ -17,6 +17,7 @@ use Nelmio\Alice\ParameterBag; use Nelmio\Alice\Throwable\Exception\Generator\Resolver\CircularReferenceException; use Nelmio\Alice\Throwable\Exception\ParameterNotFoundException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -35,9 +36,7 @@ protected function setUp(): void $this->resolver = (new NativeLoader())->getParameterResolver(); } - /** - * @dataProvider provideParameters - */ + #[DataProvider('provideParameters')] public function testResolveParameters( ParameterBag $unresolvedParameters, ?ParameterBag $injectedParameters, @@ -48,9 +47,7 @@ public function testResolveParameters( self::assertEquals($expected, $actual); } - /** - * @dataProvider provideCircularReferences - */ + #[DataProvider('provideCircularReferences')] public function testThrowExceptionIfCircularReferenceDetected(ParameterBag $unresolvedParameters, ?ParameterBag $injectedParameters = null): void { $this->expectException(CircularReferenceException::class); diff --git a/tests/Generator/Resolver/UniqueValuesPoolTest.php b/tests/Generator/Resolver/UniqueValuesPoolTest.php index 60793f4f..214ad683 100644 --- a/tests/Generator/Resolver/UniqueValuesPoolTest.php +++ b/tests/Generator/Resolver/UniqueValuesPoolTest.php @@ -15,6 +15,7 @@ use Nelmio\Alice\Definition\Value\UniqueValue; use Nelmio\Alice\Entity\StdClassFactory; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -38,9 +39,7 @@ public function testIsImmutable(): void self::assertTrue(true, 'Nothing to do.'); } - /** - * @dataProvider provideHasValueSet - */ + #[DataProvider('provideHasValueSet')] public function testHasObjectValue(UniqueValuesPool $pool, UniqueValue $value, bool $expected): void { self::assertEquals($expected, $pool->has($value)); diff --git a/tests/Generator/Resolver/Value/Chainable/OptionalValueResolverTest.php b/tests/Generator/Resolver/Value/Chainable/OptionalValueResolverTest.php index ae4d4869..d599a255 100644 --- a/tests/Generator/Resolver/Value/Chainable/OptionalValueResolverTest.php +++ b/tests/Generator/Resolver/Value/Chainable/OptionalValueResolverTest.php @@ -23,6 +23,7 @@ use Nelmio\Alice\Generator\Resolver\Value\ChainableValueResolverInterface; use Nelmio\Alice\Generator\Resolver\Value\FakeValueResolver; use Nelmio\Alice\Throwable\Exception\Generator\Resolver\ResolverNotFoundException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Prophecy\PhpUnit\ProphecyTrait; use ReflectionClass; @@ -74,9 +75,7 @@ public function testCannotResolveValueIfHasNoResolver(): void $resolver->resolve($value, new FakeFixture(), ResolvedFixtureSetFactory::create(), [], new GenerationContext()); } - /** - * @dataProvider optionalValueProvider - */ + #[DataProvider('optionalValueProvider')] public function testCanHandleExtremaQuantifiersCorrectly( OptionalValue $value, int $randomValue, diff --git a/tests/Loader/LoaderIntegrationTest.php b/tests/Loader/LoaderIntegrationTest.php index d6b3d352..998bdcd6 100644 --- a/tests/Loader/LoaderIntegrationTest.php +++ b/tests/Loader/LoaderIntegrationTest.php @@ -35,6 +35,8 @@ use Nelmio\Alice\Throwable\GenerationThrowable; use Nelmio\Alice\User; use Nelmio\Alice\UserDetail; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\TestCase; use ReflectionClass; use ReflectionObject; @@ -187,12 +189,8 @@ public function testLoadEmptyData(): void ); } - /** - * @dataProvider provideFixturesToInstantiate - * - * @param object|string $expected - */ - public function testObjectInstantiation(array $data, $expected, ?string $instanceof = null): void + #[DataProvider('provideFixturesToInstantiate')] + public function testObjectInstantiation(array $data, object|string $expected, ?string $instanceof = null): void { try { $objects = $this->loader->loadData($data)->getObjects(); @@ -219,15 +217,11 @@ public function testObjectInstantiation(array $data, $expected, ?string $instanc } /** - * @group legacy - * * @expectedDeprecation Using factories with the fixture keyword "__construct" has been deprecated since 3.0.0 and will no longer be supported in Alice 4.0.0. Use "__factory" instead. - * - * @dataProvider provideLegacyFixturesToInstantiate - * - * @param object|string $expected */ - public function testObjectInstantiationWithLegacyConstruct(array $data, $expected, ?string $instanceof = null): void + #[Group('legacy')] + #[DataProvider('provideLegacyFixturesToInstantiate')] + public function testObjectInstantiationWithLegacyConstruct(array $data, object|string $expected, ?string $instanceof = null): void { try { $objects = $this->loader->loadData($data)->getObjects(); @@ -253,12 +247,8 @@ public function testObjectInstantiationWithLegacyConstruct(array $data, $expecte self::assertEquals($expected, $objects['dummy']); } - /** - * @dataProvider provideFixturesToInstantiateWithFactory - * - * @param array|string $expected - */ - public function testObjectInstantiationWithFactory(array $data, $expected, ?string $instanceof = null): void + #[DataProvider('provideFixturesToInstantiateWithFactory')] + public function testObjectInstantiationWithFactory(array $data, mixed $expected, ?string $instanceof = null): void { try { $objects = $this->loader->loadData($data)->getObjects(); @@ -300,14 +290,11 @@ public function testCannotUseBothConstructAndFactoryAtTheSameTime(): void } /** - * @dataProvider provideFixtureToInstantiateWithDeprecatedConstructor - * - * @group legacy - * * @expectedDeprecation Using factories with the fixture keyword "__construct" has been deprecated since 3.0.0 and will no longer be supported in Alice 4.0.0. Use "__factory" instead. - * @param mixed $expected */ - public function testUsingConstructorAsAFactoryIsDeprecated(array $data, $expected): void + #[Group('legacy')] + #[DataProvider('provideFixtureToInstantiateWithDeprecatedConstructor')] + public function testUsingConstructorAsAFactoryIsDeprecated(array $data, mixed $expected): void { $objects = $this->loader->loadData($data)->getObjects(); @@ -315,12 +302,8 @@ public function testUsingConstructorAsAFactoryIsDeprecated(array $data, $expecte self::assertEquals($expected, $objects['dummy']); } - /** - * @dataProvider provideFixturesToHydrate - * - * @param array|string $expected - */ - public function testObjectHydration(array $data, $expected, ?string $instanceof = null): void + #[DataProvider('provideFixturesToHydrate')] + public function testObjectHydration(array $data, string|array $expected, ?string $instanceof = null): void { try { $objects = $this->loader->loadData($data)->getObjects(); @@ -346,12 +329,8 @@ public function testObjectHydration(array $data, $expected, ?string $instanceof self::assertEquals($expected, $objects); } - /** - * @dataProvider provideFixturesToGenerate - * - * @param string|array $expected - */ - public function testFixtureGeneration(array $data, $expected, ?string $instanceof = null): void + #[DataProvider('provideFixturesToGenerate')] + public function testFixtureGeneration(array $data, string|array $expected, ?string $instanceof = null): void { try { $set = $this->loader->loadData($data); diff --git a/tests/ParameterTest.php b/tests/ParameterTest.php index ec2fb4f9..0ba89724 100644 --- a/tests/ParameterTest.php +++ b/tests/ParameterTest.php @@ -13,6 +13,7 @@ namespace Nelmio\Alice; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -22,11 +23,8 @@ */ class ParameterTest extends TestCase { - /** - * @dataProvider provideValues - * @param mixed $value - */ - public function testAccessors($value): void + #[DataProvider('provideValues')] + public function testAccessors(mixed $value): void { $parameter = new Parameter('foo', $value); diff --git a/tests/Parser/Chainable/JsonParserTest.php b/tests/Parser/Chainable/JsonParserTest.php index a37687cb..6e3d7e4e 100644 --- a/tests/Parser/Chainable/JsonParserTest.php +++ b/tests/Parser/Chainable/JsonParserTest.php @@ -17,6 +17,7 @@ use Nelmio\Alice\Parser\ChainableParserInterface; use Nelmio\Alice\Parser\FileListProviderTrait; use Nelmio\Alice\Throwable\Exception\Parser\UnparsableFileException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionClass; @@ -64,9 +65,7 @@ public function testIsNotClonable(): void self::assertFalse((new ReflectionClass(JsonParser::class))->isCloneable()); } - /** - * @dataProvider provideJsonList - */ + #[DataProvider('provideJsonList')] public function testCanParseJsonFiles(string $file, array $expectedParsers): void { $actual = $this->parser->canParse($file); @@ -75,9 +74,8 @@ public function testCanParseJsonFiles(string $file, array $expectedParsers): voi self::assertEquals($expected, $actual); } - /** - * @dataProvider providePhpList - */ + + #[DataProvider('providePhpList')] public function testCanNotParsePhpFiles(string $file): void { $actual = $this->parser->canParse($file); @@ -85,9 +83,7 @@ public function testCanNotParsePhpFiles(string $file): void self::assertFalse($actual); } - /** - * @dataProvider provideYamlList - */ + #[DataProvider('provideYamlList')] public function testCannotParseYamlFiles(string $file): void { $actual = $this->parser->canParse($file); @@ -95,9 +91,7 @@ public function testCannotParseYamlFiles(string $file): void self::assertFalse($actual); } - /** - * @dataProvider provideUnsupportedList - */ + #[DataProvider('provideUnsupportedList')] public function testCannotParseUnsupportedFiles(string $file): void { $actual = $this->parser->canParse($file); diff --git a/tests/Parser/Chainable/PhpParserTest.php b/tests/Parser/Chainable/PhpParserTest.php index 330d0559..1f90302f 100644 --- a/tests/Parser/Chainable/PhpParserTest.php +++ b/tests/Parser/Chainable/PhpParserTest.php @@ -16,6 +16,7 @@ use InvalidArgumentException; use Nelmio\Alice\Parser\ChainableParserInterface; use Nelmio\Alice\Parser\FileListProviderTrait; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionClass; use TypeError; @@ -64,9 +65,7 @@ public function testIsNotClonable(): void self::assertFalse((new ReflectionClass(PhpParser::class))->isCloneable()); } - /** - * @dataProvider providePhpList - */ + #[DataProvider('providePhpList')] public function testCanParsePhpFiles(string $file, array $expectedParsers): void { $actual = $this->parser->canParse($file); @@ -75,9 +74,7 @@ public function testCanParsePhpFiles(string $file, array $expectedParsers): void self::assertEquals($expected, $actual); } - /** - * @dataProvider provideYamlList - */ + #[DataProvider('provideYamlList')] public function testCannotParseYamlFiles(string $file): void { $actual = $this->parser->canParse($file); @@ -85,9 +82,7 @@ public function testCannotParseYamlFiles(string $file): void self::assertFalse($actual); } - /** - * @dataProvider provideJsonList - */ + #[DataProvider('provideJsonList')] public function testCannotParseJsonFiles(string $file): void { $actual = $this->parser->canParse($file); @@ -95,9 +90,7 @@ public function testCannotParseJsonFiles(string $file): void self::assertFalse($actual); } - /** - * @dataProvider provideUnsupportedList - */ + #[DataProvider('provideUnsupportedList')] public function testCannotParseUnsupportedFiles(string $file): void { $actual = $this->parser->canParse($file); diff --git a/tests/Parser/Chainable/YamlParserTest.php b/tests/Parser/Chainable/YamlParserTest.php index 545cd35f..5367ea91 100644 --- a/tests/Parser/Chainable/YamlParserTest.php +++ b/tests/Parser/Chainable/YamlParserTest.php @@ -18,6 +18,7 @@ use Nelmio\Alice\Parser\ChainableParserInterface; use Nelmio\Alice\Parser\FileListProviderTrait; use Nelmio\Alice\Throwable\Exception\Parser\UnparsableFileException; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; @@ -77,9 +78,7 @@ public function testIsNotClonable(): void self::assertFalse((new ReflectionClass(YamlParser::class))->isCloneable()); } - /** - * @dataProvider providePhpList - */ + #[DataProvider('providePhpList')] public function testCannotParsePhpFiles(string $file): void { $actual = $this->parser->canParse($file); @@ -87,9 +86,7 @@ public function testCannotParsePhpFiles(string $file): void self::assertFalse($actual); } - /** - * @dataProvider provideYamlList - */ + #[DataProvider('provideYamlList')] public function testCanParseYamlFiles(string $file, array $expectedParsers): void { $actual = $this->parser->canParse($file); @@ -98,9 +95,7 @@ public function testCanParseYamlFiles(string $file, array $expectedParsers): voi self::assertEquals($expected, $actual); } - /** - * @dataProvider provideJsonList - */ + #[DataProvider('provideJsonList')] public function testCannotParseJsonFiles(string $file): void { $actual = $this->parser->canParse($file); @@ -108,9 +103,7 @@ public function testCannotParseJsonFiles(string $file): void self::assertFalse($actual); } - /** - * @dataProvider provideUnsupportedList - */ + #[DataProvider('provideUnsupportedList')] public function testCannotParseUnsupportedFiles(string $file): void { $actual = $this->parser->canParse($file);