diff --git a/core/Config.php b/core/Config.php index e8b3c5346265a52e602cb7248cb1504228d33db4..48fff84be03fd94b12c2824281a63419dbde9fa5 100644 --- a/core/Config.php +++ b/core/Config.php @@ -91,6 +91,8 @@ class Config extends Singleton $this->init(); + // this proxy will not record any data in the production database. + // this provides security for Piwik installs and tests were setup. if (isset($this->configGlobal['database_tests']) || isset($this->configLocal['database_tests']) ) { @@ -113,10 +115,15 @@ class Config extends Singleton // the test initialization to create the plugins tables, execute ALTER queries, etc. $this->configCache['PluginsInstalled'] = array('PluginsInstalled' => array()); + // DevicesDetection plugin is not yet enabled by default if (isset($configGlobal['Plugins'])) { $this->configCache['Plugins'] = $this->configGlobal['Plugins']; $this->configCache['Plugins']['Plugins'][] = 'DevicesDetection'; } + if (isset($configGlobal['Plugins_Tracker'])) { + $this->configCache['Plugins_Tracker'] = $this->configGlobal['Plugins_Tracker']; + $this->configCache['Plugins_Tracker']['Plugins_Tracker'][] = 'DevicesDetection'; + } // to avoid weird session error in travis $this->configCache['General']['session_save_handler'] = 'dbtables'; diff --git a/tests/PHPUnit/Core/SegmentTest.php b/tests/PHPUnit/Core/SegmentTest.php index f611dcee0a8a818b5cc9111d7bf17e87d9825a96..5a61fe2b335a9330459a7ad7102dfa64a7600465 100644 --- a/tests/PHPUnit/Core/SegmentTest.php +++ b/tests/PHPUnit/Core/SegmentTest.php @@ -20,7 +20,6 @@ class SegmentTest extends PHPUnit_Framework_TestCase FakeAccess::$superUser = true; Access::setSingletonInstance($pseudoMockAccess); - // Load and install plugins IntegrationTestCase::loadAllPlugins(); } diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php index d54db6e778fd77f25318e0d80f608bd5409fff57..5ad7811a273f9b50845e99c80763575ed5199f13 100755 --- a/tests/PHPUnit/IntegrationTestCase.php +++ b/tests/PHPUnit/IntegrationTestCase.php @@ -88,9 +88,8 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase */ protected static function installAndLoadPlugins($installPlugins) { + $plugins = self::getPluginsToLoadDuringTests(); $pluginsManager = \Piwik\Plugin\Manager::getInstance(); - $plugins = $pluginsManager->readPluginsDirectory(); - $pluginsManager->loadPlugins($plugins); if ($installPlugins) { @@ -103,9 +102,8 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase public static function loadAllPlugins() { - $pluginsManager = \Piwik\Plugin\Manager::getInstance(); - $pluginsToLoad = $pluginsManager->getAllPluginsNames(); - $pluginsManager->loadPlugins($pluginsToLoad); + $pluginsToLoad = self::getPluginsToLoadDuringTests(); + \Piwik\Plugin\Manager::getInstance()->loadPlugins($pluginsToLoad); } public static function unloadAllPlugins() @@ -237,6 +235,18 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase Translate::unloadEnglishTranslation(); } + private static function getPluginsToLoadDuringTests() + { + $manager = \Piwik\Plugin\Manager::getInstance(); + $toLoad = array(); + foreach($manager->readPluginsDirectory() as $plugin) { + if($manager->isPluginBundledWithCore($plugin)) { + $toLoad[] = $plugin; + } + } + return $toLoad; + } + public function setUp() { // Make sure the browser running the test does not influence the Country detection code diff --git a/tests/PHPUnit/proxy/index.php b/tests/PHPUnit/proxy/index.php index 712c0c16566ed6fcb2ebe6c94bfe44e4eabf25ff..46941f0ddccbbb774e9368b05033e50888431d2a 100644 --- a/tests/PHPUnit/proxy/index.php +++ b/tests/PHPUnit/proxy/index.php @@ -15,22 +15,18 @@ ob_start(); Piwik_TestingEnvironment::addHooks(); \Piwik\Tracker::setTestEnvironment(); - - \Piwik\Profiler::setupProfilerXHProf(); - // Disable index.php dispatch since we do it manually below define('PIWIK_ENABLE_DISPATCH', false); include PIWIK_INCLUDE_PATH . '/index.php'; -$controller = \Piwik\FrontController::getInstance(); /** * @return bool */ function loadAllPluginsButOneTheme() { -// Load all plugins that are found so UI tests are really testing real world use case + // Load all plugins that are found so UI tests are really testing real world use case $pluginsToEnable = \Piwik\Plugin\Manager::getInstance()->getAllPluginsNames(); $themesNotToEnable = array('ExampleTheme', 'LeftMenu', 'PleineLune'); @@ -47,6 +43,7 @@ function loadAllPluginsButOneTheme() $enableMorpheus = loadAllPluginsButOneTheme(); +$controller = \Piwik\FrontController::getInstance(); $controller->init(); \Piwik\Filesystem::deleteAllCacheOnUpdate(); diff --git a/tests/PHPUnit/proxy/piwik.php b/tests/PHPUnit/proxy/piwik.php index 3679cdd7a9887ff386f2e7c2bcae1b646e177455..5a3f82df0a90a9adebef3d3dcc4d304d711fcb31 100755 --- a/tests/PHPUnit/proxy/piwik.php +++ b/tests/PHPUnit/proxy/piwik.php @@ -7,8 +7,6 @@ * */ -// Wrapping the request inside ob_start() calls to ensure that the Test -// calling us waits for the full request to process before unblocking use Piwik\Config; use Piwik\DataTable\Manager; use Piwik\Option; @@ -17,23 +15,13 @@ use Piwik\Site; use Piwik\Tracker; use Piwik\Tracker\Cache; - require realpath(dirname(__FILE__)) . "/includes.php"; +// Wrapping the request inside ob_start() calls to ensure that the Test +// calling us waits for the full request to process before unblocking ob_start(); -// Config files forced to use the test database -// Note that this also provides security for Piwik installs containing tests files: -// this proxy will not record any data in the production database. Config::getInstance()->setTestEnvironment(); -Config::getInstance()->PluginsInstalled['PluginsInstalled'] = array(); -try { - $trackerPlugins = Config::getInstance()->Plugins_Tracker['Plugins_Tracker']; -}catch(Exception $e) { - $trackerPlugins = array(); -} -$trackerPlugins[] = 'DevicesDetection'; -Config::getInstance()->Plugins_Tracker['Plugins_Tracker'] = $trackerPlugins; GeoIp::$geoIPDatabaseDir = 'tests/lib/geoip-files'; Tracker::setTestEnvironment();