Browse Source

[FrameworkBundle][Validation] Fix bug where YAML Validation files are not detected.

Benjamin Eberlei 14 years ago
parent
commit
d27dc86c25

+ 1 - 1
src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

@@ -524,7 +524,7 @@ class FrameworkExtension extends Extension
         foreach ($container->getParameter('kernel.bundles') as $bundle) {
             $reflection = new \ReflectionClass($bundle);
             if (file_exists($file = dirname($reflection->getFilename()).'/Resources/config/validation.yml')) {
-                $yamlMappingFiles[] = realpath($file);
+                $files[] = realpath($file);
                 $container->addResource(new FileResource($file));
             }
         }

+ 0 - 0
src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/TestBundle/Resources/config/validation.xml


+ 0 - 0
src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/TestBundle/Resources/config/validation.yml


+ 8 - 0
src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/TestBundle/TestBundle.php

@@ -0,0 +1,8 @@
+<?php
+
+namespace Symfony\Bundle\FrameworkBundle\Tests;
+
+class TestBundle extends \Symfony\Component\HttpKernel\Bundle\Bundle
+{
+    
+}

+ 23 - 5
src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

@@ -179,9 +179,27 @@ abstract class FrameworkExtensionTest extends TestCase
         $this->assertEquals('Application\\Validator\\Constraints\\', $arguments[0]['app'], '->registerValidationConfiguration() loads custom validation namespaces');
     }
 
-    protected function createContainer()
+    public function testValidationPaths()
     {
-        return new ContainerBuilder(new ParameterBag(array(
+        require_once __DIR__ . "/Fixtures/TestBundle/TestBundle.php";
+        
+        $container = $this->createContainerFromFile('validation_annotations', array(
+            'kernel.bundles' => array('TestBundle' => 'Symfony\Bundle\FrameworkBundle\Tests\TestBundle'),
+        ));
+
+        $yamlArgs = $container->getDefinition('validator.mapping.loader.yaml_files_loader')->getArguments();
+        $this->assertEquals(1, count($yamlArgs[0]));
+        $this->assertStringEndsWith('TestBundle/Resources/config/validation.yml', $yamlArgs[0][0]);
+
+        $xmlArgs = $container->getDefinition('validator.mapping.loader.xml_files_loader')->getArguments();
+        $this->assertEquals(2, count($xmlArgs[0]));
+        $this->assertStringEndsWith('Component/Form/Resources/config/validation.xml', $xmlArgs[0][0]);
+        $this->assertStringEndsWith('TestBundle/Resources/config/validation.xml', $xmlArgs[0][1]);
+    }
+
+    protected function createContainer(array $data = array())
+    {
+        return new ContainerBuilder(new ParameterBag(array_merge(array(
             'kernel.bundles'          => array('FrameworkBundle' => 'Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle'),
             'kernel.cache_dir'        => __DIR__,
             'kernel.compiled_classes' => array(),
@@ -189,12 +207,12 @@ abstract class FrameworkExtensionTest extends TestCase
             'kernel.environment'      => 'test',
             'kernel.name'             => 'kernel',
             'kernel.root_dir'         => __DIR__,
-        )));
+        ), $data)));
     }
 
-    protected function createContainerFromFile($file)
+    protected function createContainerFromFile($file, $data = array())
     {
-        $container = $this->createContainer();
+        $container = $this->createContainer($data);
         $container->registerExtension(new FrameworkExtension());
         $this->loadFromFile($container, $file);