From 53a62982b8c537f679b4d699c993dc655915d82d Mon Sep 17 00:00:00 2001 From: mattab <matthieu.aubry@gmail.com> Date: Fri, 21 Feb 2014 12:18:32 +1300 Subject: [PATCH] During tests, we shall load plugins that are in the .gitmodule file (official plugins found in marketplace), as well as loading those that are in the global.ini.php (official plugins bundled in piwik). --- .gitmodules | 4 +-- core/Plugin/Manager.php | 28 +++++++++++++++++---- core/Session.php | 3 ++- tests/PHPUnit/Core/ReleaseCheckListTest.php | 5 +++- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/.gitmodules b/.gitmodules index fcb5bf9c8e..26ff2ad741 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,8 +25,8 @@ [submodule "plugins/TasksTimetable"] path = plugins/TasksTimetable url = https://github.com/piwik/plugin-TasksTimetable.git - branch = master + branch = master [submodule "plugins/LoginHttpAuth"] path = plugins/LoginHttpAuth url = https://github.com/piwik/plugin-LoginHttpAuth.git - branch = master + branch = master diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php index 1a53da6365..e209e56166 100644 --- a/core/Plugin/Manager.php +++ b/core/Plugin/Manager.php @@ -16,9 +16,9 @@ use Piwik\Filesystem; use Piwik\Option; use Piwik\Plugin; use Piwik\Singleton; +use Piwik\Theme; use Piwik\Translate; use Piwik\Updater; -use Piwik\Theme; require_once PIWIK_INCLUDE_PATH . '/core/EventDispatcher.php'; @@ -72,12 +72,17 @@ class Manager extends Singleton 'LeftMenu' ); - public static function getPluginsToLoadDuringTests() + public function getPluginsToLoadDuringTests() { - $manager = \Piwik\Plugin\Manager::getInstance(); $toLoad = array(); - foreach($manager->readPluginsDirectory() as $plugin) { - if($manager->isPluginBundledWithCore($plugin)) { + foreach($this->readPluginsDirectory() as $plugin) { + $isPluginBundledWithCore = $this->isPluginBundledWithCore($plugin); + $isPluginOfficiallySupported = $this->isPluginOfficialAndNotBundledWithCore($plugin); + + // Do not enable other Login plugins + $isPluginOfficiallySupported = $isPluginOfficiallySupported && strpos($plugin, 'Login') === false; + + if($isPluginBundledWithCore || $isPluginOfficiallySupported) { $toLoad[] = $plugin; } } @@ -92,6 +97,19 @@ class Manager extends Singleton // If a plugin hooks onto at least an event starting with "Tracker.", we load the plugin during tracker const TRACKER_EVENT_PREFIX = 'Tracker.'; + /** + * @param $pluginName + * @return bool + */ + public function isPluginOfficialAndNotBundledWithCore($pluginName) + { + static $gitModules; + if(empty($gitModules)) { + $gitModules = file_get_contents(PIWIK_INCLUDE_PATH . '/.gitmodules'); + } + return false !== strpos($gitModules, "plugins/" . $pluginName); + } + /** * Update Plugins config * diff --git a/core/Session.php b/core/Session.php index 871ae1650a..7109dd0db2 100644 --- a/core/Session.php +++ b/core/Session.php @@ -39,7 +39,8 @@ class Session extends Zend_Session */ public static function start($options = false) { - if (self::$sessionStarted + if (headers_sent() + || self::$sessionStarted || (defined('PIWIK_ENABLE_SESSION_START') && !PIWIK_ENABLE_SESSION_START) ) { return; diff --git a/tests/PHPUnit/Core/ReleaseCheckListTest.php b/tests/PHPUnit/Core/ReleaseCheckListTest.php index 86166fa1e1..85ffbef354 100644 --- a/tests/PHPUnit/Core/ReleaseCheckListTest.php +++ b/tests/PHPUnit/Core/ReleaseCheckListTest.php @@ -1,5 +1,6 @@ <?php use Piwik\Filesystem; +use Piwik\Plugin\Manager; use Piwik\SettingsServer; /** @@ -192,7 +193,7 @@ class ReleaseCheckListTest extends PHPUnit_Framework_TestCase $manager = \Piwik\Plugin\Manager::getInstance(); $disabled = in_array($pluginName, $manager->getCorePluginsDisabledByDefault()); - $isGitSubmodule = false !== strpos( file_get_contents(PIWIK_INCLUDE_PATH . '/.gitmodules'), "plugins/" . $pluginName); + $isGitSubmodule = Manager::getInstance()->isPluginOfficialAndNotBundledWithCore($pluginName); $enabled = in_array($pluginName, $pluginsBundledWithPiwik) || $isGitSubmodule || $pluginName == $manager::DEFAULT_THEME; $this->assertTrue( $enabled + $disabled === 1, @@ -302,4 +303,6 @@ class ReleaseCheckListTest extends PHPUnit_Framework_TestCase $this->fail("$format format failed for following icons $icons \n"); } } + + } -- GitLab