From d86c42e3b242bede5a7b2e2f3dab101df0217c4c Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Fri, 21 Apr 2023 15:48:36 +0200 Subject: [PATCH] [DependencyInjection] Fix support for empty env vars --- .../Component/DependencyInjection/EnvVarProcessor.php | 4 ++-- .../DependencyInjection/Tests/EnvVarProcessorTest.php | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php index 44b8a312e2994..57df918f3a02e 100644 --- a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php +++ b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php @@ -149,7 +149,7 @@ public function getEnv(string $prefix, string $name, \Closure $getEnv): mixed || false === ($env = $env ?? getenv($name) ?? false) // null is a possible value because of thread safety issues ) { foreach ($this->loadedVars as $vars) { - if (false !== ($env = ($vars[$name] ?? false)) && '' !== $env) { + if (false !== ($env = ($vars[$name] ?? $env)) && '' !== $env) { break; } } @@ -167,7 +167,7 @@ public function getEnv(string $prefix, string $name, \Closure $getEnv): mixed continue; } $this->loadedVars[] = $vars = $loader->loadEnvVars(); - if (false !== ($env = ($vars[$name] ?? false)) && '' !== $env) { + if (false !== ($env = ($vars[$name] ?? $env)) && '' !== $env) { $ended = false; break; } diff --git a/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php b/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php index 2992b1c6951e2..b24f84267d659 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php @@ -727,6 +727,7 @@ public static function validCsv() public function testEnvLoader() { $_ENV['BAZ_ENV_LOADER'] = ''; + $_ENV['BUZ_ENV_LOADER'] = ''; $loaders = function () { yield new class() implements EnvVarLoaderInterface { @@ -751,7 +752,7 @@ public function loadEnvVars(): array }; }; - $processor = new EnvVarProcessor(new Container(), $loaders()); + $processor = new EnvVarProcessor(new Container(), new RewindableGenerator($loaders, 2)); $result = $processor->getEnv('string', 'FOO_ENV_LOADER', function () {}); $this->assertSame('123', $result); @@ -762,10 +763,14 @@ public function loadEnvVars(): array $result = $processor->getEnv('string', 'BAZ_ENV_LOADER', function () {}); $this->assertSame('567', $result); + $result = $processor->getEnv('string', 'BUZ_ENV_LOADER', function () {}); + $this->assertSame('', $result); + $result = $processor->getEnv('string', 'FOO_ENV_LOADER', function () {}); $this->assertSame('123', $result); // check twice unset($_ENV['BAZ_ENV_LOADER']); + unset($_ENV['BUZ_ENV_LOADER']); } public function testCircularEnvLoader()