From 49311eb3482c4e0e3811e104507da68ee963678c Mon Sep 17 00:00:00 2001 From: diosmosis Date: Thu, 18 Jun 2015 01:28:11 -0700 Subject: [PATCH] Make TEstingEnvironmentManipulator override the global settings provider ONLY if were custom paths used. This allows other Environment classes to provide their own custom provider, w/o it being overridden by tests. Also when getting DI overrides from a fixture, use the fixture that is configured by the test class, so any fixture properties will be correctly initialized. --- core/Application/Environment.php | 10 ++++--- core/Application/EnvironmentManipulator.php | 2 +- core/Tracker.php | 2 ++ .../TestingEnvironmentManipulator.php | 26 ++++++++++--------- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/core/Application/Environment.php b/core/Application/Environment.php index 692d2a51804..743883585f9 100644 --- a/core/Application/Environment.php +++ b/core/Application/Environment.php @@ -138,8 +138,10 @@ private function createContainer() protected function getGlobalSettingsCached() { if ($this->globalSettingsProvider === null) { - $globalSettingsProvider = $this->getGlobalSettingsProviderOverride(); - $this->globalSettingsProvider = $globalSettingsProvider ?: $this->getGlobalSettings(); + $original = $this->getGlobalSettings(); + $globalSettingsProvider = $this->getGlobalSettingsProviderOverride($original); + + $this->globalSettingsProvider = $globalSettingsProvider ?: $original; } return $this->globalSettingsProvider; } @@ -192,10 +194,10 @@ public static function setGlobalEnvironmentManipulator(EnvironmentManipulator $m self::$globalEnvironmentManipulator = $manipulator; } - private function getGlobalSettingsProviderOverride() + private function getGlobalSettingsProviderOverride(GlobalSettingsProvider $original) { if (self::$globalEnvironmentManipulator) { - return self::$globalEnvironmentManipulator->makeGlobalSettingsProvider(); + return self::$globalEnvironmentManipulator->makeGlobalSettingsProvider($original); } else { return null; } diff --git a/core/Application/EnvironmentManipulator.php b/core/Application/EnvironmentManipulator.php index d740096fd9d..15be5ac0751 100644 --- a/core/Application/EnvironmentManipulator.php +++ b/core/Application/EnvironmentManipulator.php @@ -23,7 +23,7 @@ interface EnvironmentManipulator * * @return GlobalSettingsProvider */ - public function makeGlobalSettingsProvider(); + public function makeGlobalSettingsProvider(GlobalSettingsProvider $original); /** * Create a custom PluginList kernel object, overriding the default behavior.@deprecated diff --git a/core/Tracker.php b/core/Tracker.php index ddc62a9d0ec..fa774112c37 100644 --- a/core/Tracker.php +++ b/core/Tracker.php @@ -11,6 +11,8 @@ use Exception; use Piwik\Plugins\BulkTracking\Tracker\Requests; use Piwik\Plugins\PrivacyManager\Config as PrivacyManagerConfig; +use Piwik\Config; +use Piwik\Tests\Framework\TestingEnvironmentVariables; use Piwik\Tracker\Db as TrackerDb; use Piwik\Tracker\Db\DbException; use Piwik\Tracker\Handler; diff --git a/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php b/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php index 640b522fb22..d26c1576b9b 100644 --- a/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php +++ b/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php @@ -55,9 +55,16 @@ public function __construct(TestingEnvironmentVariables $testingEnvironment, arr $this->globalObservers = $globalObservers; } - public function makeGlobalSettingsProvider() + public function makeGlobalSettingsProvider(GlobalSettingsProvider $original) { - return new GlobalSettingsProvider($this->vars->configFileGlobal, $this->vars->configFileLocal, $this->vars->configFileCommon); + if ($this->vars->configFileGlobal + || $this->vars->configFileLocal + || $this->vars->configFileCommon + ) { + return new GlobalSettingsProvider($this->vars->configFileGlobal, $this->vars->configFileLocal, $this->vars->configFileCommon); + } else { + return $original; + } } public function makePluginList(GlobalSettingsProvider $globalSettingsProvider) @@ -128,22 +135,17 @@ public function getExtraDefinitions() { $testVarDefinitionSource = new TestingEnvironmentVariablesDefinitionSource($this->vars); - // Apply DI config from the fixture $diConfig = array(); - if ($this->vars->fixtureClass) { - $fixtureClass = $this->vars->fixtureClass; - if (class_exists($fixtureClass)) { - /** @var Fixture $fixture */ - $fixture = new $fixtureClass; - $diConfig = $fixture->provideContainerConfig(); - } - } - if ($this->vars->testCaseClass) { $testCaseClass = $this->vars->testCaseClass; if (class_exists($testCaseClass)) { $testCase = new $testCaseClass(); + // Apply DI config from the fixture + if (isset($testCaseClass::$fixture)) { + $diConfig = array_merge($diConfig, $testCaseClass::$fixture->provideContainerConfig()); + } + if (method_exists($testCase, 'provideContainerConfigBeforeClass')) { $diConfig = array_merge($diConfig, $testCaseClass::provideContainerConfigBeforeClass()); }