From b6cbade9324e1761b0206559f7d7efe2812c23be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20B=C3=BCrk?= <stefan@buerk.tech>
Date: Sat, 9 Oct 2021 14:49:26 +0200
Subject: [PATCH] [BUGFIX] PHP8.0 warning from ext:recycler tests

Initializing LanguageService in $GLOBALS['LANG'] with
Bootstrap::initalizeLanguageObject() needs a proper setup
$GLOBALS['BE_USER'].

The patch moves Bootstrap::initialzeLanguageObject() from
abstract testcase to the corresponding setUp() methods
user and admin recycler tests after the corresponding
backend user is set up.

Furthermore some assertions are fine tuned to prevent
array access warnings in tests.

Resolves: #95549
Releases: master
Change-Id: I3a9fed0a6f83e9481b169fb4a476ba2e2235e483
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/71519
Tested-by: Nikita Hovratov <nikita.h@live.de>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Jochen <rothjochen@gmail.com>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Nikita Hovratov <nikita.h@live.de>
Reviewed-by: Jochen <rothjochen@gmail.com>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
---
 .../Functional/Recycle/AbstractRecycleTestCase.php     |  2 --
 .../Functional/Recycle/Pages/AdminRecycleTest.php      | 10 ++++++++--
 .../Tests/Functional/Recycle/Pages/UserRecycleTest.php | 10 ++++++++--
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/typo3/sysext/recycler/Tests/Functional/Recycle/AbstractRecycleTestCase.php b/typo3/sysext/recycler/Tests/Functional/Recycle/AbstractRecycleTestCase.php
index 5d0927d3baad..202156cf652f 100644
--- a/typo3/sysext/recycler/Tests/Functional/Recycle/AbstractRecycleTestCase.php
+++ b/typo3/sysext/recycler/Tests/Functional/Recycle/AbstractRecycleTestCase.php
@@ -17,7 +17,6 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Recycler\Tests\Functional\Recycle;
 
-use TYPO3\CMS\Core\Core\Bootstrap;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Recycler\Domain\Model\DeletedRecords;
 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
@@ -47,7 +46,6 @@ abstract class AbstractRecycleTestCase extends FunctionalTestCase
     {
         parent::setUp();
         $this->importDataSet(__DIR__ . '/../Fixtures/Database/be_groups.xml');
-        Bootstrap::initializeLanguageObject();
     }
 
     /**
diff --git a/typo3/sysext/recycler/Tests/Functional/Recycle/Pages/AdminRecycleTest.php b/typo3/sysext/recycler/Tests/Functional/Recycle/Pages/AdminRecycleTest.php
index d1f57d8e59f0..aec524ace5e2 100644
--- a/typo3/sysext/recycler/Tests/Functional/Recycle/Pages/AdminRecycleTest.php
+++ b/typo3/sysext/recycler/Tests/Functional/Recycle/Pages/AdminRecycleTest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Recycler\Tests\Functional\Recycle\Pages;
 
+use TYPO3\CMS\Core\Core\Bootstrap;
 use TYPO3\CMS\Recycler\Tests\Functional\Recycle\AbstractRecycleTestCase;
 
 /**
@@ -40,6 +41,7 @@ class AdminRecycleTest extends AbstractRecycleTestCase
         $this->importDataSet(__DIR__ . '/../../Fixtures/Database/pages.xml');
         // Set up "admin" user
         $this->setUpBackendUserFromFixture(1);
+        Bootstrap::initializeLanguageObject();
     }
 
     /**
@@ -52,7 +54,9 @@ class AdminRecycleTest extends AbstractRecycleTestCase
         self::assertCount(1, $deletedPages);
         self::assertArrayHasKey('pages', $deletedPages);
         self::assertCount(3, $deletedPages['pages']);
-        self::assertSame($assertData[0]['uid'], $deletedPages[0]['uid']);
+        self::assertTrue(0 < (int)($assertData['pages'][0]['uid'] ?? 0));
+        self::assertTrue(0 < (int)($deletedPages['pages'][0]['uid'] ?? 0));
+        self::assertSame((int)$assertData['pages'][0]['uid'], (int)$deletedPages['pages'][0]['uid']);
     }
 
     /**
@@ -65,6 +69,8 @@ class AdminRecycleTest extends AbstractRecycleTestCase
         self::assertCount(1, $deletedPages);
         self::assertArrayHasKey('pages', $deletedPages);
         self::assertCount(4, $deletedPages['pages']);
-        self::assertSame($assertData[0]['uid'], $deletedPages[0]['uid']);
+        self::assertTrue(0 < (int)($assertData['pages'][0]['uid'] ?? 0));
+        self::assertTrue(0 < (int)($deletedPages['pages'][0]['uid'] ?? 0));
+        self::assertSame((int)$assertData['pages'][0]['uid'], (int)$deletedPages['pages'][0]['uid']);
     }
 }
diff --git a/typo3/sysext/recycler/Tests/Functional/Recycle/Pages/UserRecycleTest.php b/typo3/sysext/recycler/Tests/Functional/Recycle/Pages/UserRecycleTest.php
index 0095db576e3c..58ec1390f53b 100644
--- a/typo3/sysext/recycler/Tests/Functional/Recycle/Pages/UserRecycleTest.php
+++ b/typo3/sysext/recycler/Tests/Functional/Recycle/Pages/UserRecycleTest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Recycler\Tests\Functional\Recycle\Pages;
 
+use TYPO3\CMS\Core\Core\Bootstrap;
 use TYPO3\CMS\Recycler\Tests\Functional\Recycle\AbstractRecycleTestCase;
 
 /**
@@ -40,6 +41,7 @@ class UserRecycleTest extends AbstractRecycleTestCase
         $this->importDataSet(__DIR__ . '/../../Fixtures/Database/pages.xml');
         // Set up "editor" user
         $this->setUpBackendUserFromFixture(2);
+        Bootstrap::initializeLanguageObject();
     }
 
     /**
@@ -52,7 +54,9 @@ class UserRecycleTest extends AbstractRecycleTestCase
         self::assertCount(1, $deletedPages);
         self::assertArrayHasKey('pages', $deletedPages);
         self::assertCount(2, $deletedPages['pages']);
-        self::assertSame($assertData[0]['uid'], $deletedPages[0]['uid']);
+        self::assertTrue(0 < (int)($assertData['pages'][0]['uid'] ?? 0));
+        self::assertTrue(0 < (int)($deletedPages['pages'][0]['uid'] ?? 0));
+        self::assertSame((int)$assertData['pages'][0]['uid'], (int)$deletedPages['pages'][0]['uid']);
     }
 
     /**
@@ -65,7 +69,9 @@ class UserRecycleTest extends AbstractRecycleTestCase
         self::assertCount(1, $deletedPages);
         self::assertArrayHasKey('pages', $deletedPages);
         self::assertCount(3, $deletedPages['pages']);
-        self::assertSame($assertData[0]['uid'], $deletedPages[0]['uid']);
+        self::assertTrue(0 < (int)($assertData['pages'][0]['uid'] ?? 0));
+        self::assertTrue(0 < (int)($deletedPages['pages'][0]['uid'] ?? 0));
+        self::assertSame((int)$assertData['pages'][0]['uid'], (int)$deletedPages['pages'][0]['uid']);
     }
 
     /**
-- 
GitLab