From ed70b785f0a9a797a833048ae51f45a4d51c95c5 Mon Sep 17 00:00:00 2001 From: Thomas Calvet Date: Mon, 25 Oct 2021 13:20:21 +0200 Subject: [PATCH] [Dotenv] Fix testLoadEnv() to start from a fresh context --- .../Component/Dotenv/Tests/DotenvTest.php | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/Symfony/Component/Dotenv/Tests/DotenvTest.php b/src/Symfony/Component/Dotenv/Tests/DotenvTest.php index 3df51a5392e68..bfd22b1d192e2 100644 --- a/src/Symfony/Component/Dotenv/Tests/DotenvTest.php +++ b/src/Symfony/Component/Dotenv/Tests/DotenvTest.php @@ -226,12 +226,20 @@ public function testLoad() public function testLoadEnv() { - unset($_ENV['FOO']); - unset($_ENV['BAR']); - unset($_SERVER['FOO']); - unset($_SERVER['BAR']); - putenv('FOO'); - putenv('BAR'); + $resetContext = static function (): void { + unset($_ENV['SYMFONY_DOTENV_VARS']); + unset($_ENV['FOO']); + unset($_ENV['BAR']); + unset($_ENV['TEST_APP_ENV']); + unset($_SERVER['SYMFONY_DOTENV_VARS']); + unset($_SERVER['FOO']); + unset($_SERVER['BAR']); + unset($_SERVER['TEST_APP_ENV']); + putenv('SYMFONY_DOTENV_VARS'); + putenv('FOO'); + putenv('BAR'); + putenv('TEST_APP_ENV'); + }; @mkdir($tmpdir = sys_get_temp_dir().'/dotenv'); @@ -239,6 +247,7 @@ public function testLoadEnv() // .env + $resetContext(); file_put_contents($path, 'FOO=BAR'); (new Dotenv(true))->loadEnv($path, 'TEST_APP_ENV'); $this->assertSame('BAR', getenv('FOO')); @@ -246,6 +255,7 @@ public function testLoadEnv() // .env.local + $resetContext(); $_SERVER['TEST_APP_ENV'] = 'local'; file_put_contents("$path.local", 'FOO=localBAR'); (new Dotenv(true))->loadEnv($path, 'TEST_APP_ENV'); @@ -253,32 +263,34 @@ public function testLoadEnv() // special case for test + $resetContext(); $_SERVER['TEST_APP_ENV'] = 'test'; (new Dotenv(true))->loadEnv($path, 'TEST_APP_ENV'); $this->assertSame('BAR', getenv('FOO')); // .env.dev - unset($_SERVER['TEST_APP_ENV']); + $resetContext(); file_put_contents("$path.dev", 'FOO=devBAR'); (new Dotenv(true))->loadEnv($path, 'TEST_APP_ENV'); $this->assertSame('devBAR', getenv('FOO')); // .env.dev.local + $resetContext(); file_put_contents("$path.dev.local", 'FOO=devlocalBAR'); (new Dotenv(true))->loadEnv($path, 'TEST_APP_ENV'); $this->assertSame('devlocalBAR', getenv('FOO')); // .env.dist + $resetContext(); unlink($path); file_put_contents("$path.dist", 'BAR=distBAR'); (new Dotenv(true))->loadEnv($path, 'TEST_APP_ENV'); $this->assertSame('distBAR', getenv('BAR')); - putenv('FOO'); - putenv('BAR'); + $resetContext(); unlink("$path.dist"); unlink("$path.local"); unlink("$path.dev");