public function testExpressionLanguageProviderForwarding()
    {
        $tmpProviders = array();

        $extension = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\Extension\\ExtensionInterface')->getMock();
        $extension->expects($this->any())
            ->method('getXsdValidationBasePath')
            ->will($this->returnValue(false));
        $extension->expects($this->any())
            ->method('getNamespace')
            ->will($this->returnValue('http://example.org/schema/dic/foo'));
        $extension->expects($this->any())
            ->method('getAlias')
            ->will($this->returnValue('foo'));
        $extension->expects($this->once())
            ->method('load')
            ->will($this->returnCallback(function (array $config, ContainerBuilder $container) use (&$tmpProviders) {
                $tmpProviders = $container->getExpressionLanguageProviders();
            }));

        $provider = $this->getMockBuilder('Symfony\\Component\\ExpressionLanguage\\ExpressionFunctionProviderInterface')->getMock();
        $container = new ContainerBuilder(new ParameterBag());
        $container->registerExtension($extension);
        $container->prependExtensionConfig('foo', array('bar' => true));
        $container->addExpressionLanguageProvider($provider);

        $pass = new MergeExtensionConfigurationPass();
        $pass->process($container);

        $this->assertEquals(array($provider), $tmpProviders);
    }
 public function testUserParametersAreMostImportantThanDefaultOne()
 {
     $container = new ContainerBuilder();
     $container->getParameterBag()->set('key', 'user_value');
     $container->registerExtension(new ExtensionA());
     $container->loadFromExtension('a');
     $container->registerExtension($b = new ExtensionB());
     $container->loadFromExtension('b');
     $pass = new MergeExtensionConfigurationPass();
     $pass->process($container);
     $this->assertSame('user_value', $container->getParameter('key'));
     $this->assertSame('user_value', $b->parameterKey);
 }
 public function process(ContainerBuilder $container)
 {
     foreach ($this->extensions as $extension) {
         if (!count($container->getExtensionConfig($extension))) {
             $container->loadFromExtension($extension, array());
         }
     }
     parent::process($container);
 }
 public function process(ContainerBuilder $container)
 {
     foreach ($container->getParameter('kernel.bundles') as $bundleName => $bundleClass) {
         $bundleRefl = new \ReflectionClass($bundleClass);
         $extClass = $bundleRefl->getNamespaceName() . '\\DependencyInjection\\' . substr($bundleName, 0, -6) . 'Extension';
         if (class_exists($extClass)) {
             $ext = new $extClass();
             $alias = $ext->getAlias();
             // ensure all "main" extensions are loaded
             if (!count($container->getExtensionConfig($alias))) {
                 $container->loadFromExtension($alias, array());
             }
         }
     }
     parent::process($container);
 }
 /**
  * Ensures enabled extensions being loaded by the container.
  *
  * @see EnabledExtensionInterface
  *
  * @param ContainerBuilder $container
  */
 public function process(ContainerBuilder $container)
 {
     $extensions = array_filter($container->getExtensions(), function ($extension) {
         return $extension instanceof EnabledExtensionInterface;
     });
     $names = array_map(function (ExtensionInterface $extension) {
         return $extension->getAlias();
     }, $extensions);
     array_walk($names, function ($extension) use($container) {
         // Only apply to extension, if there is no configuration supplied.
         if (!count($container->getExtensionConfig($extension))) {
             $container->loadFromExtension($extension, []);
         }
     });
     parent::process($container);
 }