Merge pull request #7886 from open-sausages/pulls/4.1/dont-log-me-out-bro

Improve Environment::getVariables() array copy
This commit is contained in:
Chris Joe 2018-02-26 15:17:11 +13:00 committed by GitHub
commit 225bda13f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 1 deletions

View File

@ -43,7 +43,13 @@ class Environment
public static function getVariables()
{
// Suppress return by-ref
return array_merge($GLOBALS, [ 'env' => static::$env ]);
$vars = [ 'env' => static::$env ];
// needs to use a for loop, using `array_merge([], $GLOBALS);` left reference traces somehow
foreach ($GLOBALS as $varName => $varValue) {
$vars[$varName] = $varValue;
}
return $vars;
}
/**

View File

@ -53,4 +53,17 @@ class EnvironmentTest extends SapphireTest
Environment::setVariables($vars);
$this->assertEquals('initial', Environment::getEnv('_ENVTEST_RESTORED'));
}
public function testGetVariables()
{
$GLOBALS['test'] = 'global';
$vars = Environment::getVariables();
$this->assertArrayHasKey('test', $vars);
$this->assertEquals('global', $vars['test']);
$this->assertEquals('global', $GLOBALS['test']);
$vars['test'] = 'fail';
$this->assertEquals('fail', $vars['test']);
$this->assertEquals('global', $GLOBALS['test']);
}
}