diff options
Diffstat (limited to 'tests/PHPUnit/Framework/Fixture.php')
-rw-r--r-- | tests/PHPUnit/Framework/Fixture.php | 71 |
1 files changed, 53 insertions, 18 deletions
diff --git a/tests/PHPUnit/Framework/Fixture.php b/tests/PHPUnit/Framework/Fixture.php index 29b4625465..f421ba5658 100644 --- a/tests/PHPUnit/Framework/Fixture.php +++ b/tests/PHPUnit/Framework/Fixture.php @@ -181,7 +181,7 @@ class Fixture extends \PHPUnit_Framework_Assert return $id; } - return Config::getInstance()->database_tests['dbname']; + return self::getConfig()->database_tests['dbname']; } public function performSetUp($setupEnvironmentOnly = false) @@ -213,7 +213,7 @@ class Fixture extends \PHPUnit_Framework_Assert $this->createEnvironmentInstance(); if ($this->dbName === false) { // must be after test config is created - $this->dbName = Config::getInstance()->database['dbname']; + $this->dbName = self::getConfig()->database['dbname']; } try { @@ -230,14 +230,14 @@ class Fixture extends \PHPUnit_Framework_Assert Tracker::disconnectCachedDbConnection(); // reconnect once we're sure the database exists - Config::getInstance()->database['dbname'] = $this->dbName; + self::getConfig()->database['dbname'] = $this->dbName; Db::createDatabaseObject(); Db::get()->query("SET wait_timeout=28800;"); DbHelper::createTables(); - Manager::getInstance()->unloadPlugins(); + self::getPluginManager()->unloadPlugins(); } catch (Exception $e) { static::fail("TEST INITIALIZATION FAILED: " . $e->getMessage() . "\n" . $e->getTraceAsString()); @@ -254,11 +254,12 @@ class Fixture extends \PHPUnit_Framework_Assert Cache::deleteTrackerCache(); - static::loadAllPlugins($this->getTestEnvironment(), $this->testCaseClass, $this->extraPluginsToLoad); + self::resetPluginsInstalledConfig(); + $testEnvironment = $this->getTestEnvironment(); + static::loadAllPlugins($testEnvironment, $this->testCaseClass, $this->extraPluginsToLoad); self::updateDatabase(); - - self::installAndActivatePlugins(); + self::installAndActivatePlugins($testEnvironment); $_GET = $_REQUEST = array(); $_SERVER['HTTP_REFERER'] = ''; @@ -364,10 +365,26 @@ class Fixture extends \PHPUnit_Framework_Assert $_GET = $_REQUEST = array(); Translate::reset(); - Config::getInstance()->Plugins; // make sure Plugins exists in a config object for next tests that use Plugin\Manager + self::getConfig()->Plugins; // make sure Plugins exists in a config object for next tests that use Plugin\Manager // since Plugin\Manager uses getFromGlobalConfig which doesn't init the config object } + protected static function resetPluginsInstalledConfig() + { + $config = self::getConfig(); + $installed = $config->PluginsInstalled; + $installed['PluginsInstalled'] = array(); + $config->PluginsInstalled = $installed; + } + + protected static function rememberCurrentlyInstalledPluginsAcrossRequests(TestingEnvironmentVariables $testEnvironment) + { + $plugins = self::getPluginManager()->getInstalledPluginsName(); + + $testEnvironment->overrideConfig('PluginsInstalled', 'PluginsInstalled', $plugins); + $testEnvironment->save(); + } + /** * @param \Piwik\Tests\Framework\TestingEnvironmentVariables|null $testEnvironment Ignored. * @param bool|false $testCaseClass Ignored. @@ -376,12 +393,12 @@ class Fixture extends \PHPUnit_Framework_Assert public static function loadAllPlugins(TestingEnvironmentVariables $testEnvironment = null, $testCaseClass = false, $extraPluginsToLoad = array()) { DbHelper::createTables(); - Plugin\Manager::getInstance()->loadActivatedPlugins(); + self::getPluginManager()->loadActivatedPlugins(); } - public static function installAndActivatePlugins() + public static function installAndActivatePlugins(TestingEnvironmentVariables $testEnvironment) { - $pluginsManager = Manager::getInstance(); + $pluginsManager = self::getPluginManager(); // Install plugins $messages = $pluginsManager->installLoadedPlugins(); @@ -398,19 +415,35 @@ class Fixture extends \PHPUnit_Framework_Assert } $pluginsManager->loadPluginTranslations(); + + self::rememberCurrentlyInstalledPluginsAcrossRequests($testEnvironment); + } + + private static function getPluginManager() + { + return Manager::getInstance(); + } + + private static function getConfig() + { + return Config::getInstance(); } public static function unloadAllPlugins() { try { - $manager = Manager::getInstance(); + $manager = self::getPluginManager(); $plugins = $manager->getLoadedPlugins(); foreach ($plugins as $plugin) { $plugin->uninstall(); } - Manager::getInstance()->unloadPlugins(); + + $manager->unloadPlugins(); } catch (Exception $e) { } + + self::resetPluginsInstalledConfig(); + self::rememberCurrentlyInstalledPluginsAcrossRequests(new TestingEnvironmentVariables()); } /** @@ -460,6 +493,7 @@ class Fixture extends \PHPUnit_Framework_Assert // Clear the memory Website cache Site::clearCache(); + Cache::deleteCacheWebsiteAttributes($idSite); return $idSite; } @@ -471,9 +505,10 @@ class Fixture extends \PHPUnit_Framework_Assert */ public static function getRootUrl() { - $piwikUrl = Config::getInstance()->tests['http_host']; - $piwikUri = Config::getInstance()->tests['request_uri']; - $piwikPort = Config::getInstance()->tests['port']; + $config = self::getConfig(); + $piwikUrl = $config->tests['http_host']; + $piwikUri = $config->tests['request_uri']; + $piwikPort = $config->tests['port']; if($piwikUri == '@REQUEST_URI@') { throw new Exception("Piwik is mis-configured. Remove (or fix) the 'request_uri' entry below [tests] section in your config.ini.php. "); @@ -870,7 +905,7 @@ class Fixture extends \PHPUnit_Framework_Assert */ public static function connectWithoutDatabase() { - $dbConfig = Config::getInstance()->database; + $dbConfig = self::getConfig()->database; $oldDbName = $dbConfig['dbname']; $dbConfig['dbname'] = null; @@ -888,7 +923,7 @@ class Fixture extends \PHPUnit_Framework_Assert public function dropDatabase($dbName = null) { - $dbName = $dbName ?: $this->dbName ?: Config::getInstance()->database_tests['dbname']; + $dbName = $dbName ?: $this->dbName ?: self::getConfig()->database_tests['dbname']; $this->log("Dropping database '$dbName'..."); |