From 43895b8dae3e902a8fd98d32c6a6e587324b9539 Mon Sep 17 00:00:00 2001 From: Yonel Ceruto Date: Sun, 5 Nov 2017 21:41:09 -0500 Subject: [PATCH] Add default mapping path for serializer component --- .../DependencyInjection/FrameworkExtension.php | 5 +++++ .../DependencyInjection/FrameworkExtensionTest.php | 14 ++++++++++++-- .../DependencyInjection/config/serializer/foo.yml | 0 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/config/serializer/foo.yml diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 2844bbc783e2c..436fcd97df204 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -1470,6 +1470,11 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder } } + $projectDir = $container->getParameter('kernel.project_dir'); + if ($container->fileExists($dir = $projectDir.'/config/serializer', '/^$/')) { + $this->registerMappingFilesFromDir($dir, $fileRecorder); + } + $this->registerMappingFilesFromConfig($container, $config, $fileRecorder); $chainLoader->replaceArgument(0, $serializerLoaders); diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php index 8b2841dc9ab60..ea6b9e5f4231a 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php @@ -749,7 +749,7 @@ public function testSerializerEnabled() $argument = $container->getDefinition('serializer.mapping.chain_loader')->getArgument(0); - $this->assertCount(1, $argument); + $this->assertCount(2, $argument); $this->assertEquals('Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader', $argument[0]->getClass()); $this->assertNull($container->getDefinition('serializer.mapping.class_metadata_factory')->getArgument(1)); $this->assertEquals(new Reference('serializer.name_converter.camel_case_to_snake_case'), $container->getDefinition('serializer.normalizer.object')->getArgument(1)); @@ -861,11 +861,13 @@ public function testDeprecatedSerializerCacheOption() public function testSerializerMapping() { $container = $this->createContainerFromFile('serializer_mapping', array('kernel.bundles_metadata' => array('TestBundle' => array('namespace' => 'Symfony\\Bundle\\FrameworkBundle\\Tests', 'path' => __DIR__.'/Fixtures/TestBundle', 'parent' => null)))); + $projectDir = $container->getParameter('kernel.project_dir'); $configDir = __DIR__.'/Fixtures/TestBundle/Resources/config'; $expectedLoaders = array( new Definition(AnnotationLoader::class, array(new Reference('annotation_reader'))), new Definition(XmlFileLoader::class, array($configDir.'/serialization.xml')), new Definition(YamlFileLoader::class, array($configDir.'/serialization.yml')), + new Definition(YamlFileLoader::class, array($projectDir.'/config/serializer/foo.yml')), new Definition(XmlFileLoader::class, array($configDir.'/serializer_mapping/files/foo.xml')), new Definition(YamlFileLoader::class, array($configDir.'/serializer_mapping/files/foo.yml')), new Definition(YamlFileLoader::class, array($configDir.'/serializer_mapping/serialization.yml')), @@ -873,11 +875,19 @@ public function testSerializerMapping() ); foreach ($expectedLoaders as $definition) { + if (is_file($arg = $definition->getArgument(0))) { + $definition->replaceArgument(0, strtr($arg, '/', DIRECTORY_SEPARATOR)); + } $definition->setPublic(false); } $loaders = $container->getDefinition('serializer.mapping.chain_loader')->getArgument(0); - $this->assertEquals(sort($expectedLoaders), sort($loaders)); + foreach ($loaders as $loader) { + if (is_file($arg = $loader->getArgument(0))) { + $loader->replaceArgument(0, strtr($arg, '/', DIRECTORY_SEPARATOR)); + } + } + $this->assertEquals($expectedLoaders, $loaders); } public function testAssetHelperWhenAssetsAreEnabled() diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/config/serializer/foo.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/config/serializer/foo.yml new file mode 100644 index 0000000000000..e69de29bb2d1d