From 04b868811646d0d7b7394c2781e02018a5df9467 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Tue, 5 Dec 2017 13:50:29 +0100 Subject: [PATCH 1/7] [DI] Fix when adding to the container paramaters environment variables and then an array --- .../DependencyInjection/ContainerBuilder.php | 10 +++++----- .../Tests/ContainerBuilderTest.php | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php index c3aee4e6fd35a..6781883f4d482 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php @@ -1294,6 +1294,11 @@ public function resolveEnvPlaceholders($value, $format = null, array &$usedEnvs $format = '%%env(%s)%%'; } + $bag = $this->getParameterBag(); + if (true === $format) { + $value = $bag->resolveValue($value); + } + if (is_array($value)) { $result = array(); foreach ($value as $k => $v) { @@ -1306,11 +1311,6 @@ public function resolveEnvPlaceholders($value, $format = null, array &$usedEnvs if (!is_string($value)) { return $value; } - - $bag = $this->getParameterBag(); - if (true === $format) { - $value = $bag->resolveValue($value); - } $envPlaceholders = $bag instanceof EnvPlaceholderParameterBag ? $bag->getEnvPlaceholders() : $this->envPlaceholders; foreach ($envPlaceholders as $env => $placeholders) { diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php index 8b905746b2e43..fd5d2409de9ac 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php @@ -615,6 +615,20 @@ public function testResolveEnvValues() unset($_ENV['DUMMY_ENV_VAR'], $_SERVER['DUMMY_SERVER_VAR'], $_SERVER['HTTP_DUMMY_VAR']); } + public function testResolveEnvValuesWithArray() + { + $_ENV['ANOTHER_DUMMY_ENV_VAR'] = 'dummy'; + + $container = new ContainerBuilder(); + $container->setParameter('dummy', '%env(ANOTHER_DUMMY_ENV_VAR)%'); + $container->setParameter('dummy2', ['1' => 'one', '2' => 'two']); + + $container->resolveEnvPlaceholders('%dummy%', true); + $container->resolveEnvPlaceholders('%dummy2%', true); + + unset($_ENV['ANOTHER_DUMMY_ENV_VAR']); + } + public function testCompileWithResolveEnv() { putenv('DUMMY_ENV_VAR=du%%y'); From ef497c09f933e17a40902b6b34633c1cb4de1b02 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Tue, 5 Dec 2017 14:00:48 +0100 Subject: [PATCH 2/7] [DI] Fix array typo --- .../DependencyInjection/Tests/ContainerBuilderTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php index fd5d2409de9ac..45d2664b55266 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php @@ -621,7 +621,7 @@ public function testResolveEnvValuesWithArray() $container = new ContainerBuilder(); $container->setParameter('dummy', '%env(ANOTHER_DUMMY_ENV_VAR)%'); - $container->setParameter('dummy2', ['1' => 'one', '2' => 'two']); + $container->setParameter('dummy2', array('1' => 'one', '2' => 'two')); $container->resolveEnvPlaceholders('%dummy%', true); $container->resolveEnvPlaceholders('%dummy2%', true); From a17d2b5bb43c9a689fb44df95462d5269a0a4ae4 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Tue, 5 Dec 2017 13:50:29 +0100 Subject: [PATCH 3/7] [DI] Fix when adding to the container paramaters environment variables and then an array --- .../DependencyInjection/ContainerBuilder.php | 10 +++++----- .../Tests/ContainerBuilderTest.php | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php index c3aee4e6fd35a..6781883f4d482 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php @@ -1294,6 +1294,11 @@ public function resolveEnvPlaceholders($value, $format = null, array &$usedEnvs $format = '%%env(%s)%%'; } + $bag = $this->getParameterBag(); + if (true === $format) { + $value = $bag->resolveValue($value); + } + if (is_array($value)) { $result = array(); foreach ($value as $k => $v) { @@ -1306,11 +1311,6 @@ public function resolveEnvPlaceholders($value, $format = null, array &$usedEnvs if (!is_string($value)) { return $value; } - - $bag = $this->getParameterBag(); - if (true === $format) { - $value = $bag->resolveValue($value); - } $envPlaceholders = $bag instanceof EnvPlaceholderParameterBag ? $bag->getEnvPlaceholders() : $this->envPlaceholders; foreach ($envPlaceholders as $env => $placeholders) { diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php index 8b905746b2e43..fd5d2409de9ac 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php @@ -615,6 +615,20 @@ public function testResolveEnvValues() unset($_ENV['DUMMY_ENV_VAR'], $_SERVER['DUMMY_SERVER_VAR'], $_SERVER['HTTP_DUMMY_VAR']); } + public function testResolveEnvValuesWithArray() + { + $_ENV['ANOTHER_DUMMY_ENV_VAR'] = 'dummy'; + + $container = new ContainerBuilder(); + $container->setParameter('dummy', '%env(ANOTHER_DUMMY_ENV_VAR)%'); + $container->setParameter('dummy2', ['1' => 'one', '2' => 'two']); + + $container->resolveEnvPlaceholders('%dummy%', true); + $container->resolveEnvPlaceholders('%dummy2%', true); + + unset($_ENV['ANOTHER_DUMMY_ENV_VAR']); + } + public function testCompileWithResolveEnv() { putenv('DUMMY_ENV_VAR=du%%y'); From 0dd99d4fe3be61adf6b0ff7b1b318c5e6d5936de Mon Sep 17 00:00:00 2001 From: Matthieu Date: Tue, 5 Dec 2017 14:00:48 +0100 Subject: [PATCH 4/7] [DI] Fix array typo --- .../DependencyInjection/Tests/ContainerBuilderTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php index fd5d2409de9ac..45d2664b55266 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php @@ -621,7 +621,7 @@ public function testResolveEnvValuesWithArray() $container = new ContainerBuilder(); $container->setParameter('dummy', '%env(ANOTHER_DUMMY_ENV_VAR)%'); - $container->setParameter('dummy2', ['1' => 'one', '2' => 'two']); + $container->setParameter('dummy2', array('1' => 'one', '2' => 'two')); $container->resolveEnvPlaceholders('%dummy%', true); $container->resolveEnvPlaceholders('%dummy2%', true); From 5f5d021fff0b3a66254daba695d63f0925b00c52 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Tue, 5 Dec 2017 13:50:29 +0100 Subject: [PATCH 5/7] [DI] Fix when adding to the container paramaters environment variables and then an array --- .../DependencyInjection/ContainerBuilder.php | 10 +++++----- .../Tests/ContainerBuilderTest.php | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php index c3aee4e6fd35a..6781883f4d482 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php @@ -1294,6 +1294,11 @@ public function resolveEnvPlaceholders($value, $format = null, array &$usedEnvs $format = '%%env(%s)%%'; } + $bag = $this->getParameterBag(); + if (true === $format) { + $value = $bag->resolveValue($value); + } + if (is_array($value)) { $result = array(); foreach ($value as $k => $v) { @@ -1306,11 +1311,6 @@ public function resolveEnvPlaceholders($value, $format = null, array &$usedEnvs if (!is_string($value)) { return $value; } - - $bag = $this->getParameterBag(); - if (true === $format) { - $value = $bag->resolveValue($value); - } $envPlaceholders = $bag instanceof EnvPlaceholderParameterBag ? $bag->getEnvPlaceholders() : $this->envPlaceholders; foreach ($envPlaceholders as $env => $placeholders) { diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php index 8b905746b2e43..fd5d2409de9ac 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php @@ -615,6 +615,20 @@ public function testResolveEnvValues() unset($_ENV['DUMMY_ENV_VAR'], $_SERVER['DUMMY_SERVER_VAR'], $_SERVER['HTTP_DUMMY_VAR']); } + public function testResolveEnvValuesWithArray() + { + $_ENV['ANOTHER_DUMMY_ENV_VAR'] = 'dummy'; + + $container = new ContainerBuilder(); + $container->setParameter('dummy', '%env(ANOTHER_DUMMY_ENV_VAR)%'); + $container->setParameter('dummy2', ['1' => 'one', '2' => 'two']); + + $container->resolveEnvPlaceholders('%dummy%', true); + $container->resolveEnvPlaceholders('%dummy2%', true); + + unset($_ENV['ANOTHER_DUMMY_ENV_VAR']); + } + public function testCompileWithResolveEnv() { putenv('DUMMY_ENV_VAR=du%%y'); From 5ae22cee828a80d77fccd381ced6fe65f7184038 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Tue, 5 Dec 2017 14:00:48 +0100 Subject: [PATCH 6/7] [DI] Fix array typo --- .../DependencyInjection/Tests/ContainerBuilderTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php index fd5d2409de9ac..45d2664b55266 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php @@ -621,7 +621,7 @@ public function testResolveEnvValuesWithArray() $container = new ContainerBuilder(); $container->setParameter('dummy', '%env(ANOTHER_DUMMY_ENV_VAR)%'); - $container->setParameter('dummy2', ['1' => 'one', '2' => 'two']); + $container->setParameter('dummy2', array('1' => 'one', '2' => 'two')); $container->resolveEnvPlaceholders('%dummy%', true); $container->resolveEnvPlaceholders('%dummy2%', true); From 9a0a766367fd19cbfb14ae96c7bbf9ad3d2f4099 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Wed, 6 Dec 2017 09:14:33 +0100 Subject: [PATCH 7/7] [DI] Add assertion for testing set array as parameter after setting environment variable --- .../DependencyInjection/Tests/ContainerBuilderTest.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php index 45d2664b55266..785df13303ce2 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php @@ -619,13 +619,21 @@ public function testResolveEnvValuesWithArray() { $_ENV['ANOTHER_DUMMY_ENV_VAR'] = 'dummy'; + $dummyArray = array('1' => 'one', '2' => 'two'); + $container = new ContainerBuilder(); $container->setParameter('dummy', '%env(ANOTHER_DUMMY_ENV_VAR)%'); - $container->setParameter('dummy2', array('1' => 'one', '2' => 'two')); + $container->setParameter('dummy2', $dummyArray); $container->resolveEnvPlaceholders('%dummy%', true); $container->resolveEnvPlaceholders('%dummy2%', true); + $this->assertInternalType('array', $container->resolveEnvPlaceholders('%dummy2%', true)); + + foreach ($dummyArray as $key => $value) { + $this->assertArrayHasKey($key, $container->resolveEnvPlaceholders('%dummy2%', true)); + } + unset($_ENV['ANOTHER_DUMMY_ENV_VAR']); }