From bbe3549bb17ee17e2c076ba4ec109a82796f4de2 Mon Sep 17 00:00:00 2001 From: Christian Kuhn Date: Tue, 31 May 2016 16:06:49 +0200 Subject: [PATCH] [BUGFIX] Properly reset package manager in unit tests Package manager is a static property in ExtensionManagementUtility that needs proper reset if a test fiddled with it. Use the proxy class at places where this is not done yet. Change-Id: I86d3813e1a4cbcb24c05507923694e498ffcb03d Resolves: #76402 Releases: master Reviewed-on: https://review.typo3.org/48421 Reviewed-by: Morton Jonuschat Tested-by: Morton Jonuschat Reviewed-by: Wouter Wolters Tested-by: Wouter Wolters --- .../Unit/TypoScript/TemplateServiceTest.php | 23 ++++++++++++++----- .../Tests/Unit/Utility/GeneralUtilityTest.php | 17 +++++++++++--- .../Ajax/ExtensionCompatibilityTesterTest.php | 12 +++------- .../SilentConfigurationUpgradeServiceTest.php | 23 +++++++++++++++++++ .../ContentTypesToTextMediaUpdateTest.php | 16 ++++++++++++- 5 files changed, 72 insertions(+), 19 deletions(-) diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/TemplateServiceTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/TemplateServiceTest.php index 4c09f761822d..5ed14d28052b 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/TemplateServiceTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/TemplateServiceTest.php @@ -14,8 +14,8 @@ namespace TYPO3\CMS\Core\Tests\Unit\TypoScript; * The TYPO3 project - inspiring people to share! */ +use TYPO3\CMS\Core\Tests\Unit\Utility\AccessibleProxies\ExtensionManagementUtilityAccessibleProxy; use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; -use TYPO3\CMS\Core\Utility\GeneralUtility; /** * Testcase for \TYPO3\CMS\Core\TypoScript\TemplateService @@ -33,9 +33,12 @@ class TemplateServiceTest extends \TYPO3\CMS\Core\Tests\UnitTestCase protected $templateServiceMock; /** - * Sets up this test case. - * - * @return void + * @var \TYPO3\CMS\Core\Package\PackageManager + */ + protected $backupPackageManager; + + /** + * Set up */ protected function setUp() { @@ -44,6 +47,16 @@ class TemplateServiceTest extends \TYPO3\CMS\Core\Tests\UnitTestCase $this->templateService->tt_track = false; $this->templateServiceMock = $this->getAccessibleMock(\TYPO3\CMS\Core\TypoScript\TemplateService::class, array('dummy')); $this->templateServiceMock->tt_track = false; + $this->backupPackageManager = ExtensionManagementUtilityAccessibleProxy::getPackageManager(); + } + + /** + * Tear down + */ + public function tearDown() + { + ExtensionManagementUtilityAccessibleProxy::setPackageManager($this->backupPackageManager); + parent::tearDown(); } /** @@ -108,8 +121,6 @@ class TemplateServiceTest extends \TYPO3\CMS\Core\Tests\UnitTestCase $this->assertTrue( in_array('test.Core.TypoScript = 1', $this->templateService->config) ); - - ExtensionManagementUtility::setPackageManager(GeneralUtility::makeInstance(\TYPO3\CMS\Core\Package\PackageManager::class)); } /** diff --git a/typo3/sysext/core/Tests/Unit/Utility/GeneralUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/GeneralUtilityTest.php index faa9aa084ce9..a5b8322042e2 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/GeneralUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/GeneralUtilityTest.php @@ -20,6 +20,7 @@ use org\bovigo\vfs\vfsStreamWrapper; use TYPO3\CMS\Core\Package\Package; use TYPO3\CMS\Core\Package\PackageManager; use TYPO3\CMS\Core\Tests\FileStreamWrapper; +use TYPO3\CMS\Core\Tests\Unit\Utility\AccessibleProxies\ExtensionManagementUtilityAccessibleProxy; use TYPO3\CMS\Core\Tests\Unit\Utility\Fixtures\GeneralUtilityFilesystemFixture; use TYPO3\CMS\Core\Tests\Unit\Utility\Fixtures\GeneralUtilityFixture; use TYPO3\CMS\Core\Tests\Unit\Utility\Fixtures\GeneralUtilityMinifyJavaScriptFixture; @@ -41,6 +42,14 @@ class GeneralUtilityTest extends \TYPO3\CMS\Core\Tests\UnitTestCase */ protected $singletonInstances = array(); + /** + * @var \TYPO3\CMS\Core\Package\PackageManager + */ + protected $backupPackageManager; + + /** + * Set up + */ protected function setUp() { GeneralUtilityFixture::flushInternalRuntimeCaches(); @@ -48,11 +57,16 @@ class GeneralUtilityTest extends \TYPO3\CMS\Core\Tests\UnitTestCase GeneralUtilityFixture::setAllowHostHeaderValue(false); $GLOBALS['TYPO3_CONF_VARS']['SYS']['trustedHostsPattern'] = GeneralUtility::ENV_TRUSTED_HOSTS_PATTERN_ALLOW_ALL; $this->singletonInstances = GeneralUtility::getSingletonInstances(); + $this->backupPackageManager = ExtensionManagementUtilityAccessibleProxy::getPackageManager(); } + /** + * Tear down + */ protected function tearDown() { GeneralUtility::resetSingletonInstances($this->singletonInstances); + ExtensionManagementUtilityAccessibleProxy::setPackageManager($this->backupPackageManager); parent::tearDown(); } @@ -4227,9 +4241,6 @@ class GeneralUtilityTest extends \TYPO3\CMS\Core\Tests\UnitTestCase $result = GeneralUtility::getFileAbsFileName($path); $this->assertEquals($expected, $result); - - // Reset the package manager to use the original one again - ExtensionManagementUtility::setPackageManager(GeneralUtility::makeInstance(\TYPO3\CMS\Core\Package\PackageManager::class)); } /** diff --git a/typo3/sysext/install/Tests/Unit/Controller/Action/Ajax/ExtensionCompatibilityTesterTest.php b/typo3/sysext/install/Tests/Unit/Controller/Action/Ajax/ExtensionCompatibilityTesterTest.php index 013b1618614b..60c50ec3723f 100644 --- a/typo3/sysext/install/Tests/Unit/Controller/Action/Ajax/ExtensionCompatibilityTesterTest.php +++ b/typo3/sysext/install/Tests/Unit/Controller/Action/Ajax/ExtensionCompatibilityTesterTest.php @@ -14,6 +14,7 @@ namespace TYPO3\CMS\Install\Tests\Unit\Controller\Action\Ajax; * The TYPO3 project - inspiring people to share! */ +use TYPO3\CMS\Core\Tests\Unit\Utility\AccessibleProxies\ExtensionManagementUtilityAccessibleProxy; use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -29,25 +30,18 @@ class ExtensionCompatibilityTesterTest extends \TYPO3\CMS\Core\Tests\UnitTestCas /** * Set up - * - * @return void */ protected function setUp() { - // Package manager is mocked in some tests. Backup the original one here to re-inject it to - // ExtensionManagementUtility in tearDown() again. makeInstance() is allowed to be used here - // since the PackageManager is registered as singleton by bootstrap. - $this->backupPackageManager = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Package\PackageManager::class); + $this->backupPackageManager = ExtensionManagementUtilityAccessibleProxy::getPackageManager(); } /** * Tear down - * - * @return void */ protected function tearDown() { - ExtensionManagementUtility::setPackageManager($this->backupPackageManager); + ExtensionManagementUtilityAccessibleProxy::setPackageManager($this->backupPackageManager); if (file_exists(PATH_site . 'typo3temp/assets/ExtensionCompatibilityTester.txt')) { unlink(PATH_site . 'typo3temp/assets/ExtensionCompatibilityTester.txt'); } diff --git a/typo3/sysext/install/Tests/Unit/Service/SilentConfigurationUpgradeServiceTest.php b/typo3/sysext/install/Tests/Unit/Service/SilentConfigurationUpgradeServiceTest.php index 359da5de869b..5413dbe0f719 100644 --- a/typo3/sysext/install/Tests/Unit/Service/SilentConfigurationUpgradeServiceTest.php +++ b/typo3/sysext/install/Tests/Unit/Service/SilentConfigurationUpgradeServiceTest.php @@ -16,6 +16,7 @@ namespace TYPO3\CMS\Install\Service; use TYPO3\CMS\Core\Configuration\ConfigurationManager; use TYPO3\CMS\Core\Package\PackageManager; +use TYPO3\CMS\Core\Tests\Unit\Utility\AccessibleProxies\ExtensionManagementUtilityAccessibleProxy; use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; use TYPO3\CMS\Install\Controller\Exception\RedirectException; @@ -29,6 +30,28 @@ class SilentConfigurationUpgradeServiceTest extends \TYPO3\CMS\Core\Tests\UnitTe */ protected $configurationManager; + /** + * @var \TYPO3\CMS\Core\Package\UnitTestPackageManager A backup of unit test package manager + */ + protected $backupPackageManager; + + /** + * Set up + */ + protected function setUp() + { + $this->backupPackageManager = ExtensionManagementUtilityAccessibleProxy::getPackageManager(); + } + + /** + * Tear down + */ + protected function tearDown() + { + ExtensionManagementUtilityAccessibleProxy::setPackageManager($this->backupPackageManager); + parent::tearDown(); + } + /** * @param array $methods */ diff --git a/typo3/sysext/install/Tests/Unit/Updates/ContentTypesToTextMediaUpdateTest.php b/typo3/sysext/install/Tests/Unit/Updates/ContentTypesToTextMediaUpdateTest.php index b69699031cb0..02362d7f95a6 100644 --- a/typo3/sysext/install/Tests/Unit/Updates/ContentTypesToTextMediaUpdateTest.php +++ b/typo3/sysext/install/Tests/Unit/Updates/ContentTypesToTextMediaUpdateTest.php @@ -18,6 +18,7 @@ use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Prophet; use TYPO3\CMS\Core\Package\PackageManager; use TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCase; +use TYPO3\CMS\Core\Tests\Unit\Utility\AccessibleProxies\ExtensionManagementUtilityAccessibleProxy; use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; use TYPO3\CMS\Install\Updates\ContentTypesToTextMediaUpdate as UpdateWizard; @@ -36,11 +37,19 @@ class ContentTypesToTextMediaUpdateTest extends BaseTestCase */ protected $dbProphecy; + /** + * @var \TYPO3\CMS\Core\Package\PackageManager + */ + protected $backupPackageManager; + /** * @var ObjectProphecy */ protected $updateWizard; + /** + * Set up + */ public function setUp() { unset($GLOBALS['TYPO3_CONF_VARS']['INSTALL']['wizardDone']); @@ -49,12 +58,17 @@ class ContentTypesToTextMediaUpdateTest extends BaseTestCase $this->dbProphecy = $prophet->prophesize(\TYPO3\CMS\Core\Database\DatabaseConnection::class); $GLOBALS['TYPO3_DB'] = $this->dbProphecy->reveal(); $this->updateWizard = new UpdateWizard(); + $this->backupPackageManager = ExtensionManagementUtilityAccessibleProxy::getPackageManager(); ExtensionManagementUtility::setPackageManager($this->packageManagerProphecy->reveal()); } + /** + * Tear down + */ public function tearDown() { - ExtensionManagementUtility::setPackageManager(new PackageManager()); + ExtensionManagementUtilityAccessibleProxy::setPackageManager($this->backupPackageManager); + parent::tearDown(); } /** -- 2.20.1