public function testMergeWithDifferentIdentifiersForPlaceholders() { $envName = 'DB_USER'; $paramName = sprintf('env(%s)', $envName); $firstBag = new EnvPlaceholderParameterBag(); $secondBag = new EnvPlaceholderParameterBag(); // initialize placeholders $firstPlaceholder = $firstBag->get($paramName); $secondPlaceholder = $secondBag->get($paramName); $firstBag->mergeEnvPlaceholders($secondBag); $merged = $firstBag->getEnvPlaceholders(); $this->assertNotEquals($firstPlaceholder, $secondPlaceholder); $this->assertCount(2, $merged[$envName]); }
/** * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException * @expectedExceptionMessage The default value of an env() parameter must be scalar or null, but "array" given to "env(ARRAY_VAR)". */ public function testGetThrowsOnBadDefaultValue() { $bag = new EnvPlaceholderParameterBag(); $bag->set('env(ARRAY_VAR)', array()); $bag->get('env(ARRAY_VAR)'); $bag->resolve(); }
public function testMerge() { $container = new ContainerBuilder(new ParameterBag(array('bar' => 'foo'))); $container->setResourceTracking(false); $config = new ContainerBuilder(new ParameterBag(array('foo' => 'bar'))); $container->merge($config); $this->assertEquals(array('bar' => 'foo', 'foo' => 'bar'), $container->getParameterBag()->all(), '->merge() merges current parameters with the loaded ones'); $container = new ContainerBuilder(new ParameterBag(array('bar' => 'foo'))); $container->setResourceTracking(false); $config = new ContainerBuilder(new ParameterBag(array('foo' => '%bar%'))); $container->merge($config); $container->compile(); $this->assertEquals(array('bar' => 'foo', 'foo' => 'foo'), $container->getParameterBag()->all(), '->merge() evaluates the values of the parameters towards already defined ones'); $container = new ContainerBuilder(new ParameterBag(array('bar' => 'foo'))); $container->setResourceTracking(false); $config = new ContainerBuilder(new ParameterBag(array('foo' => '%bar%', 'baz' => '%foo%'))); $container->merge($config); $container->compile(); $this->assertEquals(array('bar' => 'foo', 'foo' => 'foo', 'baz' => 'foo'), $container->getParameterBag()->all(), '->merge() evaluates the values of the parameters towards already defined ones'); $container = new ContainerBuilder(); $container->setResourceTracking(false); $container->register('foo', 'Bar\FooClass'); $container->register('bar', 'BarClass'); $config = new ContainerBuilder(); $config->setDefinition('baz', new Definition('BazClass')); $config->setAlias('alias_for_foo', 'foo'); $container->merge($config); $this->assertEquals(array('foo', 'bar', 'baz'), array_keys($container->getDefinitions()), '->merge() merges definitions already defined ones'); $aliases = $container->getAliases(); $this->assertTrue(isset($aliases['alias_for_foo'])); $this->assertEquals('foo', (string) $aliases['alias_for_foo']); $container = new ContainerBuilder(); $container->setResourceTracking(false); $container->register('foo', 'Bar\FooClass'); $config->setDefinition('foo', new Definition('BazClass')); $container->merge($config); $this->assertEquals('BazClass', $container->getDefinition('foo')->getClass(), '->merge() overrides already defined services'); $container = new ContainerBuilder(); $bag = new EnvPlaceholderParameterBag(); $bag->get('env(Foo)'); $config = new ContainerBuilder($bag); $this->assertSame(array('%env(Bar)%'), $config->resolveEnvPlaceholders(array($bag->get('env(Bar)')))); $container->merge($config); $this->assertEquals(array('Foo' => 0, 'Bar' => 1), $container->getEnvCounters()); }
/** * @expectedException \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException */ public function testGetThrowsInvalidArgumentExceptionIfEnvNameContainsNonWordCharacters() { $bag = new EnvPlaceholderParameterBag(); $bag->get('env(%foo%)'); }