From accb37555018eb619db4a4be24083d6161f5462a Mon Sep 17 00:00:00 2001
From: Stefan Giehl <stefan@piwik.org>
Date: Mon, 6 Jun 2016 11:33:08 +0200
Subject: [PATCH] ensure to reset translated categories for each system test
 (#10210)

---
 plugins/API/ProcessedReport.php               | 22 ++++++++++++++-----
 tests/PHPUnit/Framework/Fixture.php           |  3 +++
 .../Framework/TestCase/SystemTestCase.php     |  1 -
 3 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/plugins/API/ProcessedReport.php b/plugins/API/ProcessedReport.php
index 9c6893057d..772ff911f4 100644
--- a/plugins/API/ProcessedReport.php
+++ b/plugins/API/ProcessedReport.php
@@ -339,6 +339,17 @@ class ProcessedReport
         return $actualReports; // make sure array has contiguous key values
     }
 
+    private static $translatedOrderOfReports = null;
+
+    /**
+     * Resets translated reports.
+     * FOR TESTING ONLY
+     */
+    public static function reset()
+    {
+        self::$translatedOrderOfReports = null;
+    }
+
     /**
      * API metadata are sorted by category/name,
      * with a little tweak to replicate the standard Piwik category ordering
@@ -349,16 +360,15 @@ class ProcessedReport
      */
     private static function sortReports($a, $b)
     {
-        static $order = null;
-        if (is_null($order)) {
-            $order = array();
+        if (is_null(self::$translatedOrderOfReports)) {
+            self::$translatedOrderOfReports = array();
             foreach (Report::$orderOfReports as $category) {
-                $order[] = Piwik::translate($category);
+                self::$translatedOrderOfReports[] = Piwik::translate($category);
             }
         }
 
-        $posA = array_search($a['category'], $order);
-        $posB = array_search($b['category'], $order);
+        $posA = array_search($a['category'], self::$translatedOrderOfReports);
+        $posB = array_search($b['category'], self::$translatedOrderOfReports);
 
         if ($posA === false && $posB === false) {
             return strcmp($a['category'], $b['category']);
diff --git a/tests/PHPUnit/Framework/Fixture.php b/tests/PHPUnit/Framework/Fixture.php
index fdd4ceb1e0..2da59d83e0 100644
--- a/tests/PHPUnit/Framework/Fixture.php
+++ b/tests/PHPUnit/Framework/Fixture.php
@@ -28,6 +28,7 @@ use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Plugin;
 use Piwik\Plugin\Manager;
+use Piwik\Plugins\API\ProcessedReport;
 use Piwik\Plugins\LanguagesManager\API as APILanguageManager;
 use Piwik\Plugins\MobileMessaging\MobileMessaging;
 use Piwik\Plugins\PrivacyManager\DoNotTrackHeaderChecker;
@@ -255,6 +256,8 @@ class Fixture extends \PHPUnit_Framework_Assert
 
         Cache::deleteTrackerCache();
 
+        ProcessedReport::reset();
+
         self::resetPluginsInstalledConfig();
 
         $testEnvironment = $this->getTestEnvironment();
diff --git a/tests/PHPUnit/Framework/TestCase/SystemTestCase.php b/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
index 0dd79873ab..470582cbbd 100755
--- a/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
+++ b/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
@@ -22,7 +22,6 @@ use Piwik\Tests\Framework\Constraint\HttpResponseText;
 use Piwik\Tests\Framework\TestRequest\ApiTestConfig;
 use Piwik\Tests\Framework\TestRequest\Collection;
 use Piwik\Tests\Framework\TestRequest\Response;
-use Piwik\Translate;
 use Piwik\Log;
 use PHPUnit_Framework_TestCase;
 use Piwik\Tests\Framework\Fixture;
-- 
GitLab