From a6057355a639c8ac84703b0ff64c085f1dddf6d9 Mon Sep 17 00:00:00 2001 From: yethee Date: Sat, 20 Nov 2021 13:28:28 +0300 Subject: [PATCH 1/4] Drop support Symfony <4.4 --- .travis.yml | 4 +--- DependencyInjection/Configuration.php | 9 +-------- Form/Type/EnumType.php | 1 - Tests/Form/Type/EnumTypeTest.php | 9 +++------ composer.json | 13 ++++++------- 5 files changed, 11 insertions(+), 25 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4927033..f903a93 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,11 +8,9 @@ cache: matrix: fast_finish: true include: - - php: 5.6 + - php: 7.1 env: - DEPENDENCIES="--prefer-lowest --prefer-stable" - - php: 7.0 - - php: 7.1 - php: 7.2 - php: 7.3 env: diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 1df6170..165f588 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -19,14 +19,7 @@ public function getConfigTreeBuilder() { $treeBuilder = new TreeBuilder('biplane_enum'); - if (method_exists($treeBuilder, 'getRootNode')) { - $rootNode = $treeBuilder->getRootNode(); - } else { - // BC layer for symfony/config 4.1 and older - $rootNode = $treeBuilder->root('doctrine_migrations'); - } - - $rootNode + $treeBuilder->getRootNode() ->children() ->arrayNode('serializer') ->addDefaultsIfNotSet() diff --git a/Form/Type/EnumType.php b/Form/Type/EnumType.php index 141eee0..2749fe9 100644 --- a/Form/Type/EnumType.php +++ b/Form/Type/EnumType.php @@ -98,7 +98,6 @@ public function configureOptions(OptionsResolver $resolver) array( 'enum_class' => $enumClass, 'choices' => $choices, - 'choices_as_values' => true, 'choice_value' => function ($choice) { return $choice; }, diff --git a/Tests/Form/Type/EnumTypeTest.php b/Tests/Form/Type/EnumTypeTest.php index 3ae4551..f876a8b 100644 --- a/Tests/Form/Type/EnumTypeTest.php +++ b/Tests/Form/Type/EnumTypeTest.php @@ -4,6 +4,7 @@ use Biplane\EnumBundle\Enumeration\FlaggedEnum; use Biplane\EnumBundle\Form\EnumExtension; +use Biplane\EnumBundle\Form\Type\EnumType; use Biplane\EnumBundle\Tests\Fixtures\FlagsEnum; use Biplane\EnumBundle\Tests\Fixtures\SimpleEnum; use Symfony\Component\Form\FormInterface; @@ -309,13 +310,9 @@ protected function getExtensions() )); } - private function getType() + private function getType(): string { - if (method_exists('Symfony\Component\Form\AbstractType', 'getBlockPrefix')) { - return 'Biplane\EnumBundle\Form\Type\EnumType'; - } - - return 'biplane_enum'; + return EnumType::class; } private function assertSubForm(FormInterface $form, $data, $viewData) diff --git a/composer.json b/composer.json index cc840a0..b3bd3b0 100644 --- a/composer.json +++ b/composer.json @@ -8,13 +8,13 @@ { "name": "Denis Vasilev", "email": "liquid.yethee@hotmail.com" } ], "require": { - "php": ">=5.6", - "symfony/framework-bundle": "^3.4|^4.0", - "symfony/form": "^3.4|^4.0" + "php": ">=7.1", + "symfony/framework-bundle": "^4.4", + "symfony/form": "^4.4" }, "require-dev": { - "jms/serializer-bundle": "^1.1", - "symfony/serializer": "^3.4|^4.0", + "jms/serializer-bundle": "^2.4", + "symfony/serializer": "^4.4", "phpunit/phpunit": "^4.8" }, "suggest": { @@ -22,8 +22,7 @@ "symfony/serializer": "provides the normalizer for the Symfony's Serializer" }, "conflict": { - "jms/serializer": "<1.0", - "jms/serializer-bundle": "<1.1" + "jms/serializer": "<1.10" }, "autoload": { "psr-4": { "Biplane\\EnumBundle\\": "" }, From 3135f17aaa6edc712d949f967188b49e2bd861ba Mon Sep 17 00:00:00 2001 From: yethee Date: Sat, 20 Nov 2021 13:56:44 +0300 Subject: [PATCH 2/4] Upgrade phpunit to 7.5 --- .gitignore | 1 + .travis.yml | 1 + .../BiplaneEnumExtensionTest.php | 31 +-- Tests/Enumeration/EnumTest.php | 53 +++-- Tests/Enumeration/FlaggedEnumTest.php | 98 +++++---- Tests/Form/Type/EnumTypeTest.php | 196 +++++++++--------- .../Handler/BaseSerializationTest.php | 25 +-- .../Handler/JsonSerializationTest.php | 4 +- .../Handler/XmlSerializationTest.php | 4 +- .../Normalizer/EnumNormalizerTest.php | 38 ++-- composer.json | 2 +- phpunit.xml.dist | 6 +- 12 files changed, 225 insertions(+), 234 deletions(-) diff --git a/.gitignore b/.gitignore index c347960..0e28d99 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /vendor/ +.phpunit.result.cache composer.lock composer.phar phpunit.xml diff --git a/.travis.yml b/.travis.yml index f903a93..5c54028 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,6 +13,7 @@ matrix: - DEPENDENCIES="--prefer-lowest --prefer-stable" - php: 7.2 - php: 7.3 + - php: 7.4 env: - TEST_COVERAGE=true diff --git a/Tests/DependencyInjection/BiplaneEnumExtensionTest.php b/Tests/DependencyInjection/BiplaneEnumExtensionTest.php index a19c77d..4733e24 100644 --- a/Tests/DependencyInjection/BiplaneEnumExtensionTest.php +++ b/Tests/DependencyInjection/BiplaneEnumExtensionTest.php @@ -5,12 +5,13 @@ use Biplane\EnumBundle\DependencyInjection\BiplaneEnumExtension; use Biplane\EnumBundle\Tests\Fixtures\FlagsEnum; use Biplane\EnumBundle\Tests\Fixtures\SimpleEnum; +use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\ContainerBuilder; /** * @author Denis Vasilev */ -class BiplaneEnumExtensionTest extends \PHPUnit_Framework_TestCase +class BiplaneEnumExtensionTest extends TestCase { /** * @var ContainerBuilder @@ -22,14 +23,14 @@ class BiplaneEnumExtensionTest extends \PHPUnit_Framework_TestCase */ private $extension; - public function testLoadWithDefaults() + public function testLoadWithDefaults(): void { $this->extension->load(array(), $this->container); - $this->assertFalse($this->container->hasDefinition('biplane_enum.jms_serializer.enum_handler')); + self::assertFalse($this->container->hasDefinition('biplane_enum.jms_serializer.enum_handler')); } - public function testLoadSerializationTypes() + public function testLoadSerializationTypes(): void { $config = array( 'serializer' => array( @@ -42,30 +43,30 @@ public function testLoadSerializationTypes() $this->extension->load(array('biplane_enum' => $config), $this->container); - $this->assertTrue($this->container->hasDefinition('biplane_enum.jms_serializer.enum_handler')); + self::assertTrue($this->container->hasDefinition('biplane_enum.jms_serializer.enum_handler')); $tagAttributes = $this->container->getDefinition('biplane_enum.jms_serializer.enum_handler') ->getTag('jms_serializer.handler'); - $this->assertCount(4, $tagAttributes); - $this->assertTagAttributes($tagAttributes[0], SimpleEnum::class, 'json'); - $this->assertTagAttributes($tagAttributes[1], SimpleEnum::class, 'xml'); - $this->assertTagAttributes($tagAttributes[2], FlagsEnum::class, 'json'); - $this->assertTagAttributes($tagAttributes[3], FlagsEnum::class, 'xml'); + self::assertCount(4, $tagAttributes); + self::assertTagAttributes($tagAttributes[0], SimpleEnum::class, 'json'); + self::assertTagAttributes($tagAttributes[1], SimpleEnum::class, 'xml'); + self::assertTagAttributes($tagAttributes[2], FlagsEnum::class, 'json'); + self::assertTagAttributes($tagAttributes[3], FlagsEnum::class, 'xml'); } - protected function setUp() + protected function setUp(): void { $this->container = new ContainerBuilder(); $this->extension = new BiplaneEnumExtension(); } - protected function tearDown() + protected function tearDown(): void { unset($this->container, $this->extension); } - private function assertTagAttributes(array $attributes, $type, $format) + private static function assertTagAttributes(array $attributes, $type, $format): void { $expected = array( 'direction' => 'serialization', @@ -74,6 +75,6 @@ private function assertTagAttributes(array $attributes, $type, $format) 'method' => 'serializeEnumTo' . ucfirst($format), ); - $this->assertEquals($expected, $attributes); + self::assertEquals($expected, $attributes); } -} \ No newline at end of file +} diff --git a/Tests/Enumeration/EnumTest.php b/Tests/Enumeration/EnumTest.php index b17e995..a0113b9 100644 --- a/Tests/Enumeration/EnumTest.php +++ b/Tests/Enumeration/EnumTest.php @@ -3,81 +3,80 @@ namespace Biplane\EnumBundle\Tests\Enumeration; use Biplane\EnumBundle\Enumeration\Enum; +use Biplane\EnumBundle\Exception\InvalidEnumArgumentException; use Biplane\EnumBundle\Tests\Fixtures\SimpleEnum; use Biplane\EnumBundle\Tests\Fixtures\ExtendedSimpleEnum; +use PHPUnit\Framework\TestCase; /** * @author Denis Vasilev */ -class EnumTest extends \PHPUnit_Framework_TestCase +class EnumTest extends TestCase { /** * @dataProvider enumValuesProvider */ - public function testCreateEnumValue($value, $readableValue) + public function testCreateEnumValue($value, $readableValue): void { $enumValue = SimpleEnum::create($value); - $this->assertEquals($value, $enumValue->getValue()); - $this->assertEquals($readableValue, $enumValue->getReadable()); + self::assertEquals($value, $enumValue->getValue()); + self::assertEquals($readableValue, $enumValue->getReadable()); } - public function testEnumToString() + public function testEnumToString(): void { $enumValue = SimpleEnum::create(SimpleEnum::FIRST); - $this->assertEquals('First', (string)$enumValue); + self::assertEquals('First', (string)$enumValue); } - /** - * @expectedException \Biplane\EnumBundle\Exception\InvalidEnumArgumentException - */ - public function testExceptionIsRaisedWhenValueIsNotAcceptable() + public function testExceptionIsRaisedWhenValueIsNotAcceptable(): void { + $this->expectException(InvalidEnumArgumentException::class); + SimpleEnum::create(3); } - /** - * @expectedException \Biplane\EnumBundle\Exception\InvalidEnumArgumentException - */ - public function testExceptionIsRaisedWhenValueIsNotAcceptableWithStrictCheck() + public function testExceptionIsRaisedWhenValueIsNotAcceptableWithStrictCheck(): void { + $this->expectException(InvalidEnumArgumentException::class); + SimpleEnum::create('0'); } - public function testValueCanBeReadabled() + public function testValueCanBeReadabled(): void { - $this->assertEquals('Second', SimpleEnum::getReadableFor(2)); + self::assertEquals('Second', SimpleEnum::getReadableFor(2)); } - /** - * @expectedException \Biplane\EnumBundle\Exception\InvalidEnumArgumentException - */ - public function testExceptionIsRaisedWhenValueCannotBeReadable() + public function testExceptionIsRaisedWhenValueCannotBeReadable(): void { + $this->expectException(InvalidEnumArgumentException::class); + SimpleEnum::getReadableFor(3); } - public function testEnumsForEqualsWithSameClass() + public function testEnumsForEqualsWithSameClass(): void { $enum = SimpleEnum::create(SimpleEnum::FIRST); - $this->assertTrue($enum->equals(SimpleEnum::create(SimpleEnum::FIRST))); - $this->assertFalse($enum->equals(SimpleEnum::create(SimpleEnum::SECOND))); + self::assertTrue($enum->equals(SimpleEnum::create(SimpleEnum::FIRST))); + self::assertFalse($enum->equals(SimpleEnum::create(SimpleEnum::SECOND))); } - public function testEnumsForEqualsWithExtendedClasses() + public function testEnumsForEqualsWithExtendedClasses(): void { $enum = SimpleEnum::create(SimpleEnum::FIRST); - $this->assertFalse($enum->equals(ExtendedSimpleEnum::create(ExtendedSimpleEnum::FIRST))); + self::assertFalse($enum->equals(ExtendedSimpleEnum::create(ExtendedSimpleEnum::FIRST))); } - public function enumValuesProvider() + public function enumValuesProvider(): array { return array( array(1, 'First'), array(SimpleEnum::SECOND, 'Second') ); } -} \ No newline at end of file +} diff --git a/Tests/Enumeration/FlaggedEnumTest.php b/Tests/Enumeration/FlaggedEnumTest.php index a319b1f..0e17368 100644 --- a/Tests/Enumeration/FlaggedEnumTest.php +++ b/Tests/Enumeration/FlaggedEnumTest.php @@ -2,135 +2,133 @@ namespace Biplane\EnumBundle\Tests\Enumeration; +use Biplane\EnumBundle\Exception\InvalidEnumArgumentException; use Biplane\EnumBundle\Tests\Fixtures\FlagsEnum; use Biplane\EnumBundle\Tests\Fixtures\InvalidFlagsEnum; +use InvalidArgumentException; +use PHPUnit\Framework\TestCase; +use UnexpectedValueException; /** * @author Denis Vasilev */ -class FlaggedEnumTest extends \PHPUnit_Framework_TestCase +class FlaggedEnumTest extends TestCase { - /** - * @expectedException \InvalidArgumentException - */ - public function testThrowExceptionWhenValueIsNotInteger() + public function testThrowExceptionWhenValueIsNotInteger(): void { + $this->expectException(InvalidArgumentException::class); + FlagsEnum::isAcceptableValue('1'); } /** * @dataProvider valuesProvider */ - public function testAcceptableValue($value, $result) + public function testAcceptableValue($value, $result): void { - $this->assertSame($result, FlagsEnum::isAcceptableValue($value), + self::assertSame($result, FlagsEnum::isAcceptableValue($value), sprintf('->isAcceptableValue() returns %s if the value %d.', $result ? 'true' : 'false', $value) ); } - /** - * @expectedException \UnexpectedValueException - * - * @covers \Biplane\EnumBundle\Enumeration\FlaggedEnum::getBitmask - */ - public function testThrowExceptionWhenBitmaskIsInvalid() + public function testThrowExceptionWhenBitmaskIsInvalid(): void { + $this->expectException(UnexpectedValueException::class); + InvalidFlagsEnum::create(InvalidFlagsEnum::FIRST); } - public function testGetFlagsOfValue() + public function testGetFlagsOfValue(): void { $value = FlagsEnum::create( FlagsEnum::NONE | FlagsEnum::FIRST | FlagsEnum::THIRD ); - $this->assertEquals(array(FlagsEnum::FIRST, FlagsEnum::THIRD), $value->getFlags()); + self::assertEquals(array(FlagsEnum::FIRST, FlagsEnum::THIRD), $value->getFlags()); } - public function testSingleFlagCanBeReadabled() + public function testSingleFlagCanBeReadabled(): void { - $this->assertEquals('First', FlagsEnum::getReadableFor(FlagsEnum::FIRST)); + self::assertEquals('First', FlagsEnum::getReadableFor(FlagsEnum::FIRST)); $instance = FlagsEnum::create(FlagsEnum::FIRST); - $this->assertEquals('First', $instance->getReadable()); + self::assertEquals('First', $instance->getReadable()); } - public function testMultipleFlagsCanBeReadabled() + public function testMultipleFlagsCanBeReadabled(): void { - $this->assertEquals('First; Second', FlagsEnum::getReadableFor(FlagsEnum::FIRST | FlagsEnum::SECOND)); + self::assertEquals('First; Second', FlagsEnum::getReadableFor(FlagsEnum::FIRST | FlagsEnum::SECOND)); $instance = FlagsEnum::create(FlagsEnum::FIRST | FlagsEnum::SECOND); - $this->assertEquals('First; Second', $instance->getReadable()); + self::assertEquals('First; Second', $instance->getReadable()); } - public function testNoneCanBeReadabled() + public function testNoneCanBeReadabled(): void { - $this->assertEquals('None', FlagsEnum::getReadableFor(FlagsEnum::NONE)); + self::assertEquals('None', FlagsEnum::getReadableFor(FlagsEnum::NONE)); $instance = FlagsEnum::create(FlagsEnum::NONE); - $this->assertEquals('None', $instance->getReadable()); + self::assertEquals('None', $instance->getReadable()); } - public function testReadableSeparatorCanBeChanged() + public function testReadableSeparatorCanBeChanged(): void { - $this->assertEquals('First | Second', FlagsEnum::getReadableFor(FlagsEnum::FIRST | FlagsEnum::SECOND, ' | ')); + self::assertEquals('First | Second', FlagsEnum::getReadableFor(FlagsEnum::FIRST | FlagsEnum::SECOND, ' | ')); $instance = FlagsEnum::create(FlagsEnum::FIRST | FlagsEnum::SECOND); - $this->assertEquals('First | Second', $instance->getReadable(' | ')); + self::assertEquals('First | Second', $instance->getReadable(' | ')); } - public function testAddFlags() + public function testAddFlags(): void { $original = FlagsEnum::create(FlagsEnum::FIRST | FlagsEnum::THIRD); $result = $original->addFlags(FlagsEnum::SECOND | FlagsEnum::THIRD); - $this->assertNotSame($original, $result); - $this->assertTrue($result->hasFlag(FlagsEnum::FIRST)); - $this->assertTrue($result->hasFlag(FlagsEnum::SECOND)); - $this->assertTrue($result->hasFlag(FlagsEnum::THIRD)); + self::assertNotSame($original, $result); + self::assertTrue($result->hasFlag(FlagsEnum::FIRST)); + self::assertTrue($result->hasFlag(FlagsEnum::SECOND)); + self::assertTrue($result->hasFlag(FlagsEnum::THIRD)); } - /** - * @expectedException \Biplane\EnumBundle\Exception\InvalidEnumArgumentException - */ - public function testThrowExceptionWhenInvalidFlagsAdded() + public function testThrowExceptionWhenInvalidFlagsAdded(): void { $value = FlagsEnum::create(FlagsEnum::FIRST); + $this->expectException(InvalidEnumArgumentException::class); + $value->addFlags(FlagsEnum::ALL + 1); } - public function testRemoveFlags() + public function testRemoveFlags(): void { $original = FlagsEnum::create(FlagsEnum::FIRST | FlagsEnum::THIRD); $result = $original->removeFlags(FlagsEnum::FIRST | FlagsEnum::FOURTH); - $this->assertNotSame($original, $result); - $this->assertFalse($result->hasFlag(FlagsEnum::FIRST)); - $this->assertTrue($result->hasFlag(FlagsEnum::THIRD)); - $this->assertFalse($result->hasFlag(FlagsEnum::FOURTH)); + self::assertNotSame($original, $result); + self::assertFalse($result->hasFlag(FlagsEnum::FIRST)); + self::assertTrue($result->hasFlag(FlagsEnum::THIRD)); + self::assertFalse($result->hasFlag(FlagsEnum::FOURTH)); } - public function testRemoveAllFlags() + public function testRemoveAllFlags(): void { $value = FlagsEnum::FIRST | FlagsEnum::THIRD; $original = FlagsEnum::create($value); $result = $original->removeFlags($value); - $this->assertCount(0, $result->getFlags()); - $this->assertEquals(FlagsEnum::NONE, $result->getValue()); + self::assertCount(0, $result->getFlags()); + self::assertEquals(FlagsEnum::NONE, $result->getValue()); } - /** - * @expectedException \Biplane\EnumBundle\Exception\InvalidEnumArgumentException - */ - public function testThrowExceptionWhenInvalidFlagsRemoved() + public function testThrowExceptionWhenInvalidFlagsRemoved(): void { $value = FlagsEnum::create(FlagsEnum::FIRST); + $this->expectException(InvalidEnumArgumentException::class); + $value->removeFlags(99); } - public function valuesProvider() + public function valuesProvider(): array { return array( array(0, true), @@ -142,4 +140,4 @@ public function valuesProvider() array(55, false) ); } -} \ No newline at end of file +} diff --git a/Tests/Form/Type/EnumTypeTest.php b/Tests/Form/Type/EnumTypeTest.php index f876a8b..0898a30 100644 --- a/Tests/Form/Type/EnumTypeTest.php +++ b/Tests/Form/Type/EnumTypeTest.php @@ -7,83 +7,81 @@ use Biplane\EnumBundle\Form\Type\EnumType; use Biplane\EnumBundle\Tests\Fixtures\FlagsEnum; use Biplane\EnumBundle\Tests\Fixtures\SimpleEnum; +use Symfony\Component\Form\Exception\InvalidConfigurationException; +use Symfony\Component\Form\Exception\TransformationFailedException; +use Symfony\Component\Form\Exception\UnexpectedTypeException; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\Test\FormIntegrationTestCase; +use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; class EnumTypeTest extends FormIntegrationTestCase { - /** - * @expectedException \Symfony\Component\OptionsResolver\Exception\InvalidOptionsException - */ - public function testThrowExceptionWhenOptionEnumClassIsMissing() + public function testThrowExceptionWhenOptionEnumClassIsMissing(): void { + $this->expectException(InvalidOptionsException::class); + $this->factory->create($this->getType()); } - /** - * @expectedException \Symfony\Component\Form\Exception\InvalidConfigurationException - * @expectedExceptionMessage Enum class "Biplane\EnumBundle\Tests\Form\Type\EnumTypeTest" must be implements of Biplane\EnumBundle\Enumeration\EnumInterface - */ - public function testThrowExceptionWhenSpecifiedEnumClassNotImplementEnumInterface() + public function testThrowExceptionWhenSpecifiedEnumClassNotImplementEnumInterface(): void { + $this->expectException(InvalidConfigurationException::class); + $this->expectExceptionMessage('Enum class "Biplane\EnumBundle\Tests\Form\Type\EnumTypeTest" must be implements of Biplane\EnumBundle\Enumeration\EnumInterface'); + $this->factory->create($this->getType(), null, array( 'enum_class' => __CLASS__ )); } - /** - * @expectedException \Symfony\Component\Form\Exception\InvalidConfigurationException - * @expectedExceptionMessage The "enum_class" (InvalidClass) does not exist. - */ - public function testThrowExceptionWhenSpecifiedEnumClassDoesNotExists() + public function testThrowExceptionWhenSpecifiedEnumClassDoesNotExists(): void { + $this->expectException(InvalidConfigurationException::class); + $this->expectExceptionMessage('The "enum_class" (InvalidClass) does not exist.'); + $this->factory->create($this->getType(), null, array( 'enum_class' => 'InvalidClass' )); } - /** - * @expectedException \Symfony\Component\Form\Exception\UnexpectedTypeException - */ - public function testThrowExceptionWhenAppDataNotArrayForMultipleChoices() + public function testThrowExceptionWhenAppDataNotArrayForMultipleChoices(): void { $field = $this->factory->create($this->getType(), null, array( 'multiple' => true, 'enum_class' => SimpleEnum::class, )); + $this->expectException(UnexpectedTypeException::class); + $field->setData('1'); } - /** - * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException - */ - public function testThrowExcetionWhenAppDataIsInvalidForMultipleChoices() + public function testThrowExcetionWhenAppDataIsInvalidForMultipleChoices(): void { $field = $this->factory->create($this->getType(), null, array( 'multiple' => true, 'enum_class' => SimpleEnum::class, )); + $this->expectException(TransformationFailedException::class); + $field->setData(array( SimpleEnum::create(1), 2 )); } - /** - * @expectedException \Symfony\Component\Form\Exception\UnexpectedTypeException - */ - public function testThrowExcetionWhenAppDataIsInvalidForSingleChoice() + public function testThrowExcetionWhenAppDataIsInvalidForSingleChoice(): void { $field = $this->factory->create($this->getType(), null, array( 'enum_class' => SimpleEnum::class, )); + $this->expectException(UnexpectedTypeException::class); + $field->setData(1); } - public function testBindSingleNull() + public function testBindSingleNull(): void { $field = $this->factory->create($this->getType(), null, array( 'enum_class' => SimpleEnum::class, @@ -91,12 +89,12 @@ public function testBindSingleNull() $field->submit(null); - $this->assertTrue($field->isSynchronized()); - $this->assertNull($field->getData()); - $this->assertSame('', $field->getViewData()); + self::assertTrue($field->isSynchronized()); + self::assertNull($field->getData()); + self::assertSame('', $field->getViewData()); } - public function testBindSingle() + public function testBindSingle(): void { $field = $this->factory->create($this->getType(), null, array( 'enum_class' => SimpleEnum::class, @@ -104,12 +102,12 @@ public function testBindSingle() $field->submit('1'); - $this->assertTrue($field->isSynchronized()); - $this->assertEquals(SimpleEnum::create(1), $field->getData()); - $this->assertSame('1', $field->getViewData()); + self::assertTrue($field->isSynchronized()); + self::assertEquals(SimpleEnum::create(1), $field->getData()); + self::assertSame('1', $field->getViewData()); } - public function testBindMultipleNull() + public function testBindMultipleNull(): void { $field = $this->factory->create($this->getType(), null, array( 'multiple' => true, @@ -118,11 +116,11 @@ public function testBindMultipleNull() $field->submit(null); - $this->assertEquals(array(), $field->getData()); - $this->assertEquals(array(), $field->getViewData()); + self::assertEquals(array(), $field->getData()); + self::assertEquals(array(), $field->getViewData()); } - public function testBindMultipleNull_FlagEnum() + public function testBindMultipleNull_FlagEnum(): void { $field = $this->factory->create($this->getType(), null, array( 'multiple' => true, @@ -131,13 +129,13 @@ public function testBindMultipleNull_FlagEnum() $field->submit(null); - $this->assertInstanceOf(FlagsEnum::class, $field->getData()); - $this->assertEquals(FlaggedEnum::NONE, $field->getData()->getValue()); - $this->assertEquals(array(), $field->getNormData()); - $this->assertEquals(array(), $field->getViewData()); + self::assertInstanceOf(FlagsEnum::class, $field->getData()); + self::assertEquals(FlaggedEnum::NONE, $field->getData()->getValue()); + self::assertEquals(array(), $field->getNormData()); + self::assertEquals(array(), $field->getViewData()); } - public function testBindMultipleExpanded() + public function testBindMultipleExpanded(): void { $field = $this->factory->create($this->getType(), null, array( 'multiple' => true, @@ -149,16 +147,16 @@ public function testBindMultipleExpanded() $data = array(SimpleEnum::create(1)); - $this->assertTrue($field->isSynchronized()); - $this->assertEquals($data, $field->getData()); - $this->assertEquals(array(1), $field->getNormData()); - $this->assertTrue($field['1']->getData()); - $this->assertFalse($field['2']->getData()); - $this->assertSame('1', $field['1']->getViewData()); - $this->assertNull($field['2']->getViewData()); + self::assertTrue($field->isSynchronized()); + self::assertEquals($data, $field->getData()); + self::assertEquals(array(1), $field->getNormData()); + self::assertTrue($field['1']->getData()); + self::assertFalse($field['2']->getData()); + self::assertSame('1', $field['1']->getViewData()); + self::assertNull($field['2']->getViewData()); } - public function testBindMultipleExpanded_FlagEnum() + public function testBindMultipleExpanded_FlagEnum(): void { $field = $this->factory->create($this->getType(), null, array( 'multiple' => true, @@ -168,20 +166,20 @@ public function testBindMultipleExpanded_FlagEnum() $field->submit(array('0' => '1', '1' => '2')); - $this->assertTrue($field->isSynchronized()); - $this->assertEquals(FlagsEnum::create(1 | 2), $field->getData()); - $this->assertEquals(array(1, 2), $field->getNormData()); - $this->assertTrue($field['0']->getData()); - $this->assertTrue($field['1']->getData()); - $this->assertFalse($field['2']->getData()); - $this->assertFalse($field['3']->getData()); - $this->assertSame('1', $field['0']->getViewData()); - $this->assertSame('2', $field['1']->getViewData()); - $this->assertNull($field['2']->getViewData()); - $this->assertNull($field['3']->getViewData()); + self::assertTrue($field->isSynchronized()); + self::assertEquals(FlagsEnum::create(1 | 2), $field->getData()); + self::assertEquals(array(1, 2), $field->getNormData()); + self::assertTrue($field['0']->getData()); + self::assertTrue($field['1']->getData()); + self::assertFalse($field['2']->getData()); + self::assertFalse($field['3']->getData()); + self::assertSame('1', $field['0']->getViewData()); + self::assertSame('2', $field['1']->getViewData()); + self::assertNull($field['2']->getViewData()); + self::assertNull($field['3']->getViewData()); } - public function testSetDataSingleNull() + public function testSetDataSingleNull(): void { $field = $this->factory->create($this->getType(), null, array( 'enum_class' => SimpleEnum::class, @@ -189,11 +187,11 @@ public function testSetDataSingleNull() $field->setData(null); - $this->assertNull($field->getData()); - $this->assertEquals('', $field->getViewData()); + self::assertNull($field->getData()); + self::assertEquals('', $field->getViewData()); } - public function testSetDataMultipleExpandedNull() + public function testSetDataMultipleExpandedNull(): void { $field = $this->factory->create($this->getType(), null, array( 'multiple' => true, @@ -203,15 +201,15 @@ public function testSetDataMultipleExpandedNull() $field->setData(null); - $this->assertNull($field->getData()); - $this->assertEquals(array(), $field->getViewData()); + self::assertNull($field->getData()); + self::assertEquals(array(), $field->getViewData()); foreach ($field->all() as $child) { - $this->assertSubForm($child, false, null); + self::assertSubForm($child, false, null); } } - public function testSetDataMultipleNonExpandedNull() + public function testSetDataMultipleNonExpandedNull(): void { $field = $this->factory->create($this->getType(), null, array( 'multiple' => true, @@ -221,11 +219,11 @@ public function testSetDataMultipleNonExpandedNull() $field->setData(null); - $this->assertNull($field->getData()); - $this->assertEquals(array(), $field->getViewData()); + self::assertNull($field->getData()); + self::assertEquals(array(), $field->getViewData()); } - public function testSetDataSingle() + public function testSetDataSingle(): void { $data = SimpleEnum::create(1); $field = $this->factory->create($this->getType(), null, array( @@ -234,11 +232,11 @@ public function testSetDataSingle() $field->setData($data); - $this->assertEquals($data, $field->getData()); - $this->assertEquals('1', $field->getViewData()); + self::assertEquals($data, $field->getData()); + self::assertEquals('1', $field->getViewData()); } - public function testSetDataMultipleExpanded() + public function testSetDataMultipleExpanded(): void { $data = array( SimpleEnum::create(SimpleEnum::FIRST), @@ -252,18 +250,18 @@ public function testSetDataMultipleExpanded() $field->setData($data); - $this->assertEquals($data, $field->getData()); - $this->assertSame(array( + self::assertEquals($data, $field->getData()); + self::assertSame(array( 0 => '1', 1 => '0' ), $field->getViewData()); - $this->assertSubForm($field->get('0'), true, '0'); - $this->assertSubForm($field->get('1'), true, '1'); - $this->assertSubForm($field->get('2'), false, null); + self::assertSubForm($field->get('0'), true, '0'); + self::assertSubForm($field->get('1'), true, '1'); + self::assertSubForm($field->get('2'), false, null); } - public function testSetDataExpanded() + public function testSetDataExpanded(): void { $data = SimpleEnum::create(1); $field = $this->factory->create($this->getType(), null, array( @@ -274,16 +272,16 @@ public function testSetDataExpanded() $field->setData($data); - $this->assertEquals($data, $field->getData()); - $this->assertSame('1', $field->getNormData()); - $this->assertSame('1', $field->getViewData()); + self::assertEquals($data, $field->getData()); + self::assertSame('1', $field->getNormData()); + self::assertSame('1', $field->getViewData()); - $this->assertSubForm($field->get('0'), false, null); - $this->assertSubForm($field->get('1'), true, '1'); - $this->assertSubForm($field->get('2'), false, null); + self::assertSubForm($field->get('0'), false, null); + self::assertSubForm($field->get('1'), true, '1'); + self::assertSubForm($field->get('2'), false, null); } - public function testSetDataMultipleExpanded_FlagEnum() + public function testSetDataMultipleExpanded_FlagEnum(): void { $data = FlagsEnum::create(1 | 4); $field = $this->factory->create($this->getType(), null, array( @@ -293,14 +291,14 @@ public function testSetDataMultipleExpanded_FlagEnum() $field->setData($data); - $this->assertEquals($data, $field->getData()); - $this->assertEquals(array(1, 4), $field->getNormData()); - $this->assertEquals(array(0 => 1, 1 => 4), $field->getViewData()); + self::assertEquals($data, $field->getData()); + self::assertEquals(array(1, 4), $field->getNormData()); + self::assertEquals(array(0 => 1, 1 => 4), $field->getViewData()); - $this->assertSubForm($field->get('0'), true, '1'); - $this->assertSubForm($field->get('1'), false, null); - $this->assertSubForm($field->get('2'), true, '4'); - $this->assertSubForm($field->get('3'), false, null); + self::assertSubForm($field->get('0'), true, '1'); + self::assertSubForm($field->get('1'), false, null); + self::assertSubForm($field->get('2'), true, '4'); + self::assertSubForm($field->get('3'), false, null); } protected function getExtensions() @@ -315,9 +313,9 @@ private function getType(): string return EnumType::class; } - private function assertSubForm(FormInterface $form, $data, $viewData) + private static function assertSubForm(FormInterface $form, $data, $viewData) { - $this->assertSame($data, $form->getData(), '->getData() of sub form #' . $form->getName()); - $this->assertSame($viewData, $form->getViewData(), '->getViewData() of sub form #' . $form->getName()); + self::assertSame($data, $form->getData(), '->getData() of sub form #' . $form->getName()); + self::assertSame($viewData, $form->getViewData(), '->getViewData() of sub form #' . $form->getName()); } } diff --git a/Tests/Serializer/Handler/BaseSerializationTest.php b/Tests/Serializer/Handler/BaseSerializationTest.php index dc268f9..571eddb 100644 --- a/Tests/Serializer/Handler/BaseSerializationTest.php +++ b/Tests/Serializer/Handler/BaseSerializationTest.php @@ -16,8 +16,9 @@ use PhpCollection\Map; use Biplane\EnumBundle\Serializer\Handler\EnumHandler; use Biplane\EnumBundle\Tests\Fixtures\SimpleEnum; +use PHPUnit\Framework\TestCase; -abstract class BaseSerializationTest extends \PHPUnit_Framework_TestCase +abstract class BaseSerializationTest extends TestCase { /** * @var HandlerRegistry @@ -29,16 +30,16 @@ abstract class BaseSerializationTest extends \PHPUnit_Framework_TestCase */ protected $handler; - public function testEnum() + public function testEnum(): void { $enum = SimpleEnum::create(SimpleEnum::SECOND); $this->registerHandler(get_class($enum)); - $this->assertEquals($this->getContent('enum'), $this->serialize($enum)); + self::assertEquals($this->getContent('enum'), $this->serialize($enum)); } - public function testArrayEnums() + public function testArrayEnums(): void { $this->registerHandler(SimpleEnum::class); @@ -47,15 +48,15 @@ public function testArrayEnums() SimpleEnum::create(SimpleEnum::SECOND) ); - $this->assertEquals($this->getContent('array_enums'), $this->serialize($data)); + self::assertEquals($this->getContent('array_enums'), $this->serialize($data)); } abstract protected function getContent($key); - abstract protected function getFormat(); + abstract protected function getFormat(): string; - protected function setUp() + protected function setUp(): void { - if (!class_exists('JMS\Serializer\Serializer')) { + if (!class_exists(Serializer::class)) { $this->markTestSkipped('JMSSerializer library is not available.'); } @@ -63,12 +64,12 @@ protected function setUp() $this->handler = new EnumHandler(); } - protected function tearDown() + protected function tearDown(): void { unset($this->handlerRegistry, $this->handler); } - protected function registerHandler($type) + protected function registerHandler($type): void { $this->handlerRegistry->registerHandler( GraphNavigator::DIRECTION_SERIALIZATION, @@ -88,7 +89,7 @@ protected function deserialize($content, $type) return $this->getSerializer()->deserialize($content, $type, $this->getFormat()); } - protected function getSerializer() + protected function getSerializer(): Serializer { $factory = new MetadataFactory(new AnnotationDriver(new AnnotationReader())); $namingStrategy = new SerializedNameAnnotationStrategy(new CamelCaseNamingStrategy()); @@ -106,4 +107,4 @@ protected function getSerializer() new Map() ); } -} \ No newline at end of file +} diff --git a/Tests/Serializer/Handler/JsonSerializationTest.php b/Tests/Serializer/Handler/JsonSerializationTest.php index 634191f..6ec51fc 100644 --- a/Tests/Serializer/Handler/JsonSerializationTest.php +++ b/Tests/Serializer/Handler/JsonSerializationTest.php @@ -20,8 +20,8 @@ protected function getContent($key) return $outputs[$key]; } - protected function getFormat() + protected function getFormat(): string { return 'json'; } -} \ No newline at end of file +} diff --git a/Tests/Serializer/Handler/XmlSerializationTest.php b/Tests/Serializer/Handler/XmlSerializationTest.php index e44025f..e632c46 100644 --- a/Tests/Serializer/Handler/XmlSerializationTest.php +++ b/Tests/Serializer/Handler/XmlSerializationTest.php @@ -13,8 +13,8 @@ protected function getContent($key) return file_get_contents($file); } - protected function getFormat() + protected function getFormat(): string { return 'xml'; } -} \ No newline at end of file +} diff --git a/Tests/Serializer/Normalizer/EnumNormalizerTest.php b/Tests/Serializer/Normalizer/EnumNormalizerTest.php index 9948ef0..a3e53b3 100644 --- a/Tests/Serializer/Normalizer/EnumNormalizerTest.php +++ b/Tests/Serializer/Normalizer/EnumNormalizerTest.php @@ -5,51 +5,45 @@ use Biplane\EnumBundle\Enumeration\EnumInterface; use Biplane\EnumBundle\Serializer\Normalizer\EnumNormalizer; use Biplane\EnumBundle\Tests\Fixtures\SimpleEnum; +use PHPUnit\Framework\TestCase; /** * @author Denis Vasilev */ -class EnumNormalizerTest extends \PHPUnit_Framework_TestCase +class EnumNormalizerTest extends TestCase { - public function testNormalize() + public function testNormalize(): void { - $rawEnumValue = 5; - - $enum = $this->getMock(EnumInterface::class); - $enum->expects($this->once()) - ->method('getValue') - ->will($this->returnValue($rawEnumValue)); - $normalizer = new EnumNormalizer(); + $value = SimpleEnum::create(SimpleEnum::FIRST); - $this->assertEquals($rawEnumValue, $normalizer->normalize($enum)); + self::assertSame($value->getValue(), $normalizer->normalize($value)); } - public function testDenormalize() + public function testDenormalize(): void { $normalizer = new EnumNormalizer(); $result = $normalizer->denormalize(1, SimpleEnum::class); - $this->assertInstanceOf(SimpleEnum::class, $result); - $this->assertEquals(1, $result->getValue()); + self::assertInstanceOf(SimpleEnum::class, $result); + self::assertSame(1, $result->getValue()); } - public function testSupportsNormalization() + public function testSupportsNormalization(): void { $normalizer = new EnumNormalizer(); - $enum = $this->getMock(EnumInterface::class); - $this->assertTrue($normalizer->supportsNormalization($enum)); - $this->assertFalse($normalizer->supportsNormalization(null)); + self::assertTrue($normalizer->supportsNormalization(SimpleEnum::create(SimpleEnum::FIRST))); + self::assertFalse($normalizer->supportsNormalization(null)); } - public function testSupportsDenormalization() + public function testSupportsDenormalization(): void { $normalizer = new EnumNormalizer(); - $this->assertTrue($normalizer->supportsDenormalization(1, SimpleEnum::class)); - $this->assertFalse($normalizer->supportsDenormalization('1', SimpleEnum::class)); - $this->assertFalse($normalizer->supportsDenormalization(null, __CLASS__)); + self::assertTrue($normalizer->supportsDenormalization(1, SimpleEnum::class)); + self::assertFalse($normalizer->supportsDenormalization('1', SimpleEnum::class)); + self::assertFalse($normalizer->supportsDenormalization(null, __CLASS__)); } -} \ No newline at end of file +} diff --git a/composer.json b/composer.json index b3bd3b0..e9f92ac 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ "require-dev": { "jms/serializer-bundle": "^2.4", "symfony/serializer": "^4.4", - "phpunit/phpunit": "^4.8" + "phpunit/phpunit": "^7.5 || ^8.5" }, "suggest": { "jms/serializer-bundle": "provides the handler for the JMSSerializer", diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 5fe420c..7d861c5 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,15 +1,13 @@ - - ./Tests + ./Tests From 18f3b2f02c3631138476097b5787c9103eec215b Mon Sep 17 00:00:00 2001 From: yethee Date: Sat, 20 Nov 2021 14:54:57 +0300 Subject: [PATCH 3/4] Allow Symfony 5.x --- .travis.yml | 3 +- Serializer/Handler/EnumHandler.php | 21 ++++++------ Serializer/Normalizer/EnumNormalizer.php | 32 +++---------------- .../Handler/BaseSerializationTest.php | 32 +++---------------- composer.json | 11 ++++--- 5 files changed, 25 insertions(+), 74 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5c54028..49e2137 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,10 +8,9 @@ cache: matrix: fast_finish: true include: - - php: 7.1 + - php: 7.2 env: - DEPENDENCIES="--prefer-lowest --prefer-stable" - - php: 7.2 - php: 7.3 - php: 7.4 env: diff --git a/Serializer/Handler/EnumHandler.php b/Serializer/Handler/EnumHandler.php index 58e3d1b..e3322a1 100644 --- a/Serializer/Handler/EnumHandler.php +++ b/Serializer/Handler/EnumHandler.php @@ -24,13 +24,7 @@ class EnumHandler */ public function serializeEnumToJson(JsonSerializationVisitor $visitor, EnumInterface $data, array $type) { - $value = $data->getValue(); - - if ($visitor->getRoot() === null) { - $visitor->setRoot($value); - } - - return $value; + return $data->getValue(); } /** @@ -44,13 +38,16 @@ public function serializeEnumToJson(JsonSerializationVisitor $visitor, EnumInter */ public function serializeEnumToXml(XmlSerializationVisitor $visitor, EnumInterface $data, array $type) { - if ($visitor->document === null) { - $visitor->document = $visitor->createDocument(null, null, true); - $visitor->getCurrentNode()->appendChild($node = $visitor->document->createCDATASection($data->getValue())); + $valueNode = $visitor->getDocument()->createCDATASection($data->getValue()); + + $currentNode = $visitor->getCurrentNode(); - return $node; + if ($currentNode !== null) { + $currentNode->appendChild($valueNode); + } else { + $visitor->setCurrentNode($valueNode); } - return $visitor->document->createCDATASection($data->getValue()); + return $valueNode; } } diff --git a/Serializer/Normalizer/EnumNormalizer.php b/Serializer/Normalizer/EnumNormalizer.php index e0f1d94..40e8621 100644 --- a/Serializer/Normalizer/EnumNormalizer.php +++ b/Serializer/Normalizer/EnumNormalizer.php @@ -17,13 +17,7 @@ class EnumNormalizer implements NormalizerInterface, DenormalizerInterface use SerializerAwareTrait; /** - * Normalizes an object into a set of arrays/scalars - * - * @param object $object object to normalize - * @param string $format format the normalization result will be encoded as - * @param array $context Context options for the normalizer - * - * @return array|string|bool|int|float|null + * {@inheritDoc} */ public function normalize($object, $format = null, array $context = array()) { @@ -31,14 +25,7 @@ public function normalize($object, $format = null, array $context = array()) } /** - * Denormalizes data back into an object of the given class - * - * @param mixed $data data to restore - * @param string $class the expected class to instantiate - * @param string $format format the given data was extracted from - * @param array $context options available to the denormalizer - * - * @return object + * {@inheritDoc} */ public function denormalize($data, $class, $format = null, array $context = array()) { @@ -46,12 +33,7 @@ public function denormalize($data, $class, $format = null, array $context = arra } /** - * Checks whether the given class is supported for normalization by this normalizer - * - * @param mixed $data Data to normalize. - * @param string $format The format being (de-)serialized from or into. - * - * @return Boolean + * {@inheritDoc} */ public function supportsNormalization($data, $format = null) { @@ -59,13 +41,7 @@ public function supportsNormalization($data, $format = null) } /** - * Checks whether the given class is supported for denormalization by this normalizer - * - * @param mixed $data Data to denormalize from. - * @param string $type The class to which the data should be denormalized. - * @param string $format The format being deserialized from. - * - * @return Boolean + * {@inheritDoc} */ public function supportsDenormalization($data, $type, $format = null) { diff --git a/Tests/Serializer/Handler/BaseSerializationTest.php b/Tests/Serializer/Handler/BaseSerializationTest.php index 571eddb..f8c41cb 100644 --- a/Tests/Serializer/Handler/BaseSerializationTest.php +++ b/Tests/Serializer/Handler/BaseSerializationTest.php @@ -2,20 +2,12 @@ namespace Biplane\EnumBundle\Tests\Serializer\Handler; -use Doctrine\Common\Annotations\AnnotationReader; -use Metadata\MetadataFactory; -use JMS\Serializer\Metadata\Driver\AnnotationDriver; -use JMS\Serializer\Construction\UnserializeObjectConstructor; -use JMS\Serializer\Handler\HandlerRegistry; -use JMS\Serializer\Naming\CamelCaseNamingStrategy; -use JMS\Serializer\Naming\SerializedNameAnnotationStrategy; -use JMS\Serializer\JsonSerializationVisitor; -use JMS\Serializer\XmlSerializationVisitor; -use JMS\Serializer\GraphNavigator; -use JMS\Serializer\Serializer; -use PhpCollection\Map; use Biplane\EnumBundle\Serializer\Handler\EnumHandler; use Biplane\EnumBundle\Tests\Fixtures\SimpleEnum; +use JMS\Serializer\GraphNavigator; +use JMS\Serializer\Handler\HandlerRegistry; +use JMS\Serializer\Serializer; +use JMS\Serializer\SerializerBuilder; use PHPUnit\Framework\TestCase; abstract class BaseSerializationTest extends TestCase @@ -91,20 +83,6 @@ protected function deserialize($content, $type) protected function getSerializer(): Serializer { - $factory = new MetadataFactory(new AnnotationDriver(new AnnotationReader())); - $namingStrategy = new SerializedNameAnnotationStrategy(new CamelCaseNamingStrategy()); - - $serializationVisitors = new Map(array( - 'json' => new JsonSerializationVisitor($namingStrategy), - 'xml' => new XmlSerializationVisitor($namingStrategy), - )); - - return new Serializer( - $factory, - $this->handlerRegistry, - new UnserializeObjectConstructor(), - $serializationVisitors, - new Map() - ); + return SerializerBuilder::create($this->handlerRegistry)->build(); } } diff --git a/composer.json b/composer.json index e9f92ac..ee0803d 100644 --- a/composer.json +++ b/composer.json @@ -8,12 +8,12 @@ { "name": "Denis Vasilev", "email": "liquid.yethee@hotmail.com" } ], "require": { - "php": ">=7.1", - "symfony/framework-bundle": "^4.4", - "symfony/form": "^4.4" + "php": ">=7.2", + "symfony/framework-bundle": "^4.4 || ^5.0", + "symfony/form": "^4.4 || ^5.0" }, "require-dev": { - "jms/serializer-bundle": "^2.4", + "jms/serializer": "^2.0 || ^3.0", "symfony/serializer": "^4.4", "phpunit/phpunit": "^7.5 || ^8.5" }, @@ -22,7 +22,8 @@ "symfony/serializer": "provides the normalizer for the Symfony's Serializer" }, "conflict": { - "jms/serializer": "<1.10" + "jms/serializer": "<2.0", + "symfony/serializer": ">=5.0" }, "autoload": { "psr-4": { "Biplane\\EnumBundle\\": "" }, From 37d0b54948a0e3bc40e723945b88be9d564e8a5f Mon Sep 17 00:00:00 2001 From: yethee Date: Sat, 20 Nov 2021 15:26:06 +0300 Subject: [PATCH 4/4] Run tests against PHP 8.0 --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 49e2137..d80a6ba 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,6 +15,7 @@ matrix: - php: 7.4 env: - TEST_COVERAGE=true + - php: 8.0 before_script: - phpenv config-rm xdebug.ini || true