From 548a33d380bf51cd9e36cd41701368f66de2e94c Mon Sep 17 00:00:00 2001 From: diosmosis <benaka@piwik.pro> Date: Tue, 4 Nov 2014 10:55:41 -0800 Subject: [PATCH] Allow UI tests to delete archiving tables. --- core/DbHelper.php | 16 +++++++++++++++- tests/PHPUnit/Fixtures/UITestFixture.php | 1 + .../Framework/TestCase/SystemTestCase.php | 8 +------- tests/PHPUnit/TestingEnvironment.php | 11 +++++++++++ 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/core/DbHelper.php b/core/DbHelper.php index 8dbf7d0a9e..0c5ed79059 100644 --- a/core/DbHelper.php +++ b/core/DbHelper.php @@ -11,6 +11,7 @@ namespace Piwik; use Exception; use Piwik\Db\Adapter; use Piwik\Db\Schema; +use Piwik\DataAccess\ArchiveTableCreator; /** * Contains database related helper functions. @@ -173,4 +174,17 @@ class DbHelper return Schema::getInstance()->getTableCreateSql($tableName); } -} + /** + * Deletes archive tables. For use in tests. + */ + public static function deleteArchiveTables() + { + foreach (ArchiveTableCreator::getTablesArchivesInstalled() as $table) { + Log::debug("Dropping table $table"); + + Db::query("DROP TABLE IF EXISTS `$table`"); + } + + ArchiveTableCreator::refreshTableList($forceReload = true); + } +} \ No newline at end of file diff --git a/tests/PHPUnit/Fixtures/UITestFixture.php b/tests/PHPUnit/Fixtures/UITestFixture.php index 88921238fa..8ff2282402 100644 --- a/tests/PHPUnit/Fixtures/UITestFixture.php +++ b/tests/PHPUnit/Fixtures/UITestFixture.php @@ -21,6 +21,7 @@ use Piwik\Plugins\UsersManager\API as UsersManagerAPI; use Piwik\Plugins\SitesManager\API as SitesManagerAPI; use Piwik\WidgetsList; use Piwik\Tests\Framework\OverrideLogin; +use Piwik\Tests\Framework\TestCase\SystemTestCase; /** * Fixture for UI tests. diff --git a/tests/PHPUnit/Framework/TestCase/SystemTestCase.php b/tests/PHPUnit/Framework/TestCase/SystemTestCase.php index b515cad839..e153dc5f2f 100755 --- a/tests/PHPUnit/Framework/TestCase/SystemTestCase.php +++ b/tests/PHPUnit/Framework/TestCase/SystemTestCase.php @@ -569,13 +569,7 @@ abstract class SystemTestCase extends PHPUnit_Framework_TestCase */ public static function deleteArchiveTables() { - foreach (ArchiveTableCreator::getTablesArchivesInstalled() as $table) { - Log::debug("Dropping table $table"); - - Db::query("DROP TABLE IF EXISTS `$table`"); - } - - ArchiveTableCreator::refreshTableList($forceReload = true); + DbHelper::deleteArchiveTables(); } protected function skipWhenPhp53() diff --git a/tests/PHPUnit/TestingEnvironment.php b/tests/PHPUnit/TestingEnvironment.php index b2b875d7fc..c52556fa7d 100644 --- a/tests/PHPUnit/TestingEnvironment.php +++ b/tests/PHPUnit/TestingEnvironment.php @@ -5,6 +5,7 @@ use Piwik\Config; use Piwik\Piwik; use Piwik\Option; use Piwik\Plugin\Manager as PluginManager; +use Piwik\DbHelper; require_once PIWIK_INCLUDE_PATH . "/core/Config.php"; @@ -217,6 +218,16 @@ class Piwik_TestingEnvironment // pass } }); + Piwik::addAction('Platform.initialized', function () use ($testingEnvironment) { + static $archivingTablesDeleted = false; + + if ($testingEnvironment->deleteArchiveTables + && !$archivingTablesDeleted + ) { + $archivingTablesDeleted = true; + DbHelper::deleteArchiveTables(); + } + }); $testingEnvironment->logVariables(); $testingEnvironment->executeSetupTestEnvHook(); -- GitLab