public static function setUpBeforeClass() { parent::setUpBeforeClass(); // Temporarily disable the purge of old archives so that getNumeric('nb_visits') // in _addReportData does not trigger the data purge of data we've just imported \Piwik\ArchiveProcessor\Rules::disablePurgeOutdatedArchives(); self::_addLogData(); self::_addReportData(); \Piwik\ArchiveProcessor\Rules::enablePurgeOutdatedArchives(); self::$dbData = self::getDbTablesWithData(); }
/** * Runs API tests. */ protected function runApiTests($api, $params) { $testConfig = new ApiTestConfig($params); // make sure that the reports we process here are not directly deleted in ArchiveProcessor/PluginsArchiver // (because we process reports in the past, they would sometimes be invalid, and would have been deleted) \Piwik\ArchiveProcessor\Rules::disablePurgeOutdatedArchives(); $testName = 'test_' . static::getOutputPrefix(); $this->missingExpectedFiles = array(); $this->comparisonFailures = array(); if ($testConfig->disableArchiving) { Rules::$archivingDisabledByTests = true; Config::getInstance()->General['browser_archiving_disabled_enforce'] = 1; } else { Rules::$archivingDisabledByTests = false; Config::getInstance()->General['browser_archiving_disabled_enforce'] = 0; } if ($testConfig->language) { $this->changeLanguage($testConfig->language); } $testRequests = new TestRequestCollection($api, $testConfig, $api); foreach ($testRequests->getRequestUrls() as $apiId => $requestUrl) { $this->_testApiUrl($testName . $testConfig->testSuffix, $apiId, $requestUrl, $testConfig->compareAgainst, $testConfig->xmlFieldsToRemove, $params); } // Restore normal purge behavior \Piwik\ArchiveProcessor\Rules::enablePurgeOutdatedArchives(); // change the language back to en if ($this->lastLanguage != 'en') { $this->changeLanguage('en'); } if (!empty($this->missingExpectedFiles)) { $expectedDir = dirname(reset($this->missingExpectedFiles)); $this->fail(" ERROR: Could not find expected API output '" . implode("', '", $this->missingExpectedFiles) . "'. For new tests, to pass the test, you can copy files from the processed/ directory into" . " {$expectedDir} after checking that the output is valid. %s "); } // Display as one error all sub-failures if (!empty($this->comparisonFailures)) { $this->printComparisonFailures(); throw reset($this->comparisonFailures); } return count($this->comparisonFailures) == 0; }