Skip to content

Commit

Permalink
Read environment variable from superglobals
Browse files Browse the repository at this point in the history
The Dotenv component has recently been switched to using superglobals
instead of putenv(). Let us support both and give priority to
superglobals.

Closes symfony#31857
  • Loading branch information
greg0ire committed Jun 8, 2019
1 parent 3b0e9df commit 72cb77a
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 5 deletions.
23 changes: 22 additions & 1 deletion src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php
Expand Up @@ -90,6 +90,11 @@ public static function register($mode = 0)
}
}

public static function registerAndConfigureFromEnvironment()
{
self::register(self::getModeFromEnvironment());
}

public static function collectDeprecations($outputFile)
{
$deprecations = [];
Expand Down Expand Up @@ -209,12 +214,28 @@ public function shutdown()
});
}

/**
* @return mixed string|false
*/
private static function getModeFromEnvironment()
{
if (isset($_SERVER['SYMFONY_DEPRECATIONS_HELPER'])) {
return $_SERVER['SYMFONY_DEPRECATIONS_HELPER'];
}

if (isset($_ENV['SYMFONY_DEPRECATIONS_HELPER'])) {
return $_ENV['SYMFONY_DEPRECATIONS_HELPER'];
}

return getenv('SYMFONY_DEPRECATIONS_HELPER');
}

private function getConfiguration()
{
if (null !== $this->configuration) {
return $this->configuration;
}
$mode = getenv('SYMFONY_DEPRECATIONS_HELPER');
$mode = self::getModeFromEnvironment();
if ('strict' === $mode) {
return $this->configuration = Configuration::inStrictMode();
}
Expand Down
@@ -1,9 +1,9 @@
--TEST--
Test DeprecationErrorHandler in weak mode
Test DeprecationErrorHandler in disabled mode
--FILE--
<?php

putenv('SYMFONY_DEPRECATIONS_HELPER=disabled');
$_SERVER['SYMFONY_DEPRECATIONS_HELPER'] = 'disabled';
putenv('ANSICON');
putenv('ConEmuANSI');
putenv('TERM');
Expand Down
@@ -0,0 +1,24 @@
--TEST--
Test DeprecationErrorHandler in disabled mode (via putenv)
--FILE--
<?php

$_ENV['SYMFONY_DEPRECATIONS_HELPER'] = 'disabled';
putenv('ANSICON');
putenv('ConEmuANSI');
putenv('TERM');

$vendor = __DIR__;
while (!file_exists($vendor.'/vendor')) {
$vendor = dirname($vendor);
}
define('PHPUNIT_COMPOSER_INSTALL', $vendor.'/vendor/autoload.php');
require PHPUNIT_COMPOSER_INSTALL;
require_once __DIR__.'/../../bootstrap.php';

echo (int) set_error_handler('var_dump');
echo (int) class_exists('Symfony\Bridge\PhpUnit\DeprecationErrorHandler', false);

?>
--EXPECTF--
00
@@ -0,0 +1,24 @@
--TEST--
Test DeprecationErrorHandler in disabled mode (via putenv)
--FILE--
<?php

putenv('SYMFONY_DEPRECATIONS_HELPER=disabled');
putenv('ANSICON');
putenv('ConEmuANSI');
putenv('TERM');

$vendor = __DIR__;
while (!file_exists($vendor.'/vendor')) {
$vendor = dirname($vendor);
}
define('PHPUNIT_COMPOSER_INSTALL', $vendor.'/vendor/autoload.php');
require PHPUNIT_COMPOSER_INSTALL;
require_once __DIR__.'/../../bootstrap.php';

echo (int) set_error_handler('var_dump');
echo (int) class_exists('Symfony\Bridge\PhpUnit\DeprecationErrorHandler', false);

?>
--EXPECTF--
00
14 changes: 12 additions & 2 deletions src/Symfony/Bridge/PhpUnit/bootstrap.php
Expand Up @@ -35,6 +35,16 @@
}
}

if ('disabled' !== getenv('SYMFONY_DEPRECATIONS_HELPER')) {
DeprecationErrorHandler::register(getenv('SYMFONY_DEPRECATIONS_HELPER'));
if (isset($_SERVER['SYMFONY_DEPRECATIONS_HELPER']) && 'disabled' === $_SERVER['SYMFONY_DEPRECATIONS_HELPER']) {
return;
}

if (isset($_ENV['SYMFONY_DEPRECATIONS_HELPER']) && 'disabled' === $_ENV['SYMFONY_DEPRECATIONS_HELPER']) {
return;
}

if ('disabled' === getenv('SYMFONY_DEPRECATIONS_HELPER')) {
return;
}

DeprecationErrorHandler::registerAndConfigureFromEnvironment();

0 comments on commit 72cb77a

Please sign in to comment.