Skip to content
Extraits de code Groupes Projets
Valider ab7df85f rédigé par mattab's avatar mattab
Parcourir les fichiers

Tests will load plugins which are bundled with core.

Before it was loading everything from plugins/* directory, causing tests to fail when tests plugins are there.
parent 93d5d1f7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -91,6 +91,8 @@ class Config extends Singleton ...@@ -91,6 +91,8 @@ class Config extends Singleton
$this->init(); $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']) if (isset($this->configGlobal['database_tests'])
|| isset($this->configLocal['database_tests']) || isset($this->configLocal['database_tests'])
) { ) {
...@@ -113,10 +115,15 @@ class Config extends Singleton ...@@ -113,10 +115,15 @@ class Config extends Singleton
// the test initialization to create the plugins tables, execute ALTER queries, etc. // the test initialization to create the plugins tables, execute ALTER queries, etc.
$this->configCache['PluginsInstalled'] = array('PluginsInstalled' => array()); $this->configCache['PluginsInstalled'] = array('PluginsInstalled' => array());
// DevicesDetection plugin is not yet enabled by default
if (isset($configGlobal['Plugins'])) { if (isset($configGlobal['Plugins'])) {
$this->configCache['Plugins'] = $this->configGlobal['Plugins']; $this->configCache['Plugins'] = $this->configGlobal['Plugins'];
$this->configCache['Plugins']['Plugins'][] = 'DevicesDetection'; $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 // to avoid weird session error in travis
$this->configCache['General']['session_save_handler'] = 'dbtables'; $this->configCache['General']['session_save_handler'] = 'dbtables';
......
...@@ -20,7 +20,6 @@ class SegmentTest extends PHPUnit_Framework_TestCase ...@@ -20,7 +20,6 @@ class SegmentTest extends PHPUnit_Framework_TestCase
FakeAccess::$superUser = true; FakeAccess::$superUser = true;
Access::setSingletonInstance($pseudoMockAccess); Access::setSingletonInstance($pseudoMockAccess);
// Load and install plugins
IntegrationTestCase::loadAllPlugins(); IntegrationTestCase::loadAllPlugins();
} }
......
...@@ -88,9 +88,8 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase ...@@ -88,9 +88,8 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
*/ */
protected static function installAndLoadPlugins($installPlugins) protected static function installAndLoadPlugins($installPlugins)
{ {
$plugins = self::getPluginsToLoadDuringTests();
$pluginsManager = \Piwik\Plugin\Manager::getInstance(); $pluginsManager = \Piwik\Plugin\Manager::getInstance();
$plugins = $pluginsManager->readPluginsDirectory();
$pluginsManager->loadPlugins($plugins); $pluginsManager->loadPlugins($plugins);
if ($installPlugins) if ($installPlugins)
{ {
...@@ -103,9 +102,8 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase ...@@ -103,9 +102,8 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
public static function loadAllPlugins() public static function loadAllPlugins()
{ {
$pluginsManager = \Piwik\Plugin\Manager::getInstance(); $pluginsToLoad = self::getPluginsToLoadDuringTests();
$pluginsToLoad = $pluginsManager->getAllPluginsNames(); \Piwik\Plugin\Manager::getInstance()->loadPlugins($pluginsToLoad);
$pluginsManager->loadPlugins($pluginsToLoad);
} }
public static function unloadAllPlugins() public static function unloadAllPlugins()
...@@ -237,6 +235,18 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase ...@@ -237,6 +235,18 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
Translate::unloadEnglishTranslation(); 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() public function setUp()
{ {
// Make sure the browser running the test does not influence the Country detection code // Make sure the browser running the test does not influence the Country detection code
......
...@@ -15,22 +15,18 @@ ob_start(); ...@@ -15,22 +15,18 @@ ob_start();
Piwik_TestingEnvironment::addHooks(); Piwik_TestingEnvironment::addHooks();
\Piwik\Tracker::setTestEnvironment(); \Piwik\Tracker::setTestEnvironment();
\Piwik\Profiler::setupProfilerXHProf(); \Piwik\Profiler::setupProfilerXHProf();
// Disable index.php dispatch since we do it manually below // Disable index.php dispatch since we do it manually below
define('PIWIK_ENABLE_DISPATCH', false); define('PIWIK_ENABLE_DISPATCH', false);
include PIWIK_INCLUDE_PATH . '/index.php'; include PIWIK_INCLUDE_PATH . '/index.php';
$controller = \Piwik\FrontController::getInstance();
/** /**
* @return bool * @return bool
*/ */
function loadAllPluginsButOneTheme() 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(); $pluginsToEnable = \Piwik\Plugin\Manager::getInstance()->getAllPluginsNames();
$themesNotToEnable = array('ExampleTheme', 'LeftMenu', 'PleineLune'); $themesNotToEnable = array('ExampleTheme', 'LeftMenu', 'PleineLune');
...@@ -47,6 +43,7 @@ function loadAllPluginsButOneTheme() ...@@ -47,6 +43,7 @@ function loadAllPluginsButOneTheme()
$enableMorpheus = loadAllPluginsButOneTheme(); $enableMorpheus = loadAllPluginsButOneTheme();
$controller = \Piwik\FrontController::getInstance();
$controller->init(); $controller->init();
\Piwik\Filesystem::deleteAllCacheOnUpdate(); \Piwik\Filesystem::deleteAllCacheOnUpdate();
......
...@@ -7,8 +7,6 @@ ...@@ -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\Config;
use Piwik\DataTable\Manager; use Piwik\DataTable\Manager;
use Piwik\Option; use Piwik\Option;
...@@ -17,23 +15,13 @@ use Piwik\Site; ...@@ -17,23 +15,13 @@ use Piwik\Site;
use Piwik\Tracker; use Piwik\Tracker;
use Piwik\Tracker\Cache; use Piwik\Tracker\Cache;
require realpath(dirname(__FILE__)) . "/includes.php"; 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(); 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()->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'; GeoIp::$geoIPDatabaseDir = 'tests/lib/geoip-files';
Tracker::setTestEnvironment(); Tracker::setTestEnvironment();
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter