diff --git a/core/DbHelper.php b/core/DbHelper.php index 8dbf7d0a9e299bcb5cfd6bcf07c2142c1a239009..0c5ed7905973ca7f37f325c962b45350bcf63858 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 88921238fa3d4c7e39d78cb670aa022460bcc1d9..8ff22824029203cf523fa92ccff7d13b9b6d7bb4 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 b515cad8396f077b090e886a00e60f5ce9081d04..e153dc5f2fa037d62886085c3428de5b1439046b 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 b2b875d7fced9225c3d2efd9ecf0731ed56f613c..c52556fa7d2d28273b91d6c50296cf7600ca46e1 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();