schmittjoh / serializer

Library for (de-)serializing data of any complexity (supports JSON, and XML)
http://jmsyst.com/libs/serializer
MIT License
2.32k stars 588 forks source link

Test Failures with `doctrine/phpcr-odm` > 2.00 #1544

Open idbentley opened 3 months ago

idbentley commented 3 months ago
Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no

Steps required to reproduce the problem

  1. Pull schmittjoh/serializer
  2. composer install
  3. ./vendor/bin/phpunit tests

Expected Result

Actual Result

1) JMS\Serializer\Tests\Metadata\Driver\DoctrinePHPCRDriverTest::testTypelessPropertyIsGivenTypeFromDoctrineMetadata
Error: Class "Doctrine\ODM\PHPCR\Mapping\Driver\AnnotationDriver" not found

/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:105
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:123
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:35
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:40

2) JMS\Serializer\Tests\Metadata\Driver\DoctrinePHPCRDriverTest::testSingleValuedAssociationIsProperlyHinted
Error: Class "Doctrine\ODM\PHPCR\Mapping\Driver\AnnotationDriver" not found

/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:105
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:123
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:35
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:49

3) JMS\Serializer\Tests\Metadata\Driver\DoctrinePHPCRDriverTest::testMultiValuedAssociationIsProperlyHinted
Error: Class "Doctrine\ODM\PHPCR\Mapping\Driver\AnnotationDriver" not found

/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:105
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:123
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:35
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:58

4) JMS\Serializer\Tests\Metadata\Driver\DoctrinePHPCRDriverTest::testTypeGuessByDoctrineIsOverwrittenByDelegateDriver
Error: Class "Doctrine\ODM\PHPCR\Mapping\Driver\AnnotationDriver" not found

/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:105
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:123
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:35
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:73

5) JMS\Serializer\Tests\Metadata\Driver\DoctrinePHPCRDriverTest::testNonDoctrineDocumentClassIsNotModified
Error: Class "Doctrine\ODM\PHPCR\Mapping\Driver\AnnotationDriver" not found

/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:105
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:123
/home/ian/development/speakeasy/serializer/tests/Metadata/Driver/DoctrinePHPCRDriverTest.php:89

Workaround

Doctrine\ODM\PHPCR\Mapping\Driver\AnnotationDriver is removed in phpcr-odm > 2.0. I updated the composer.json to require a 1.x version:

-    "doctrine/phpcr-odm": "^1.5.2 || ^2.0",
+     "doctrine/phpcr-odm": "^1.5.2",

A better fix would support 1.x and 2.x releases from phpcr-odm.

Changelog:

Removed annotation mappings. Use attributes (or XML or YAML) instead.

scyzoryck commented 3 months ago

Hmm. I will take a look later today at it. For other tests we took approach to use attribution driver if AnnotationDriver is not available ;)