From 08371d565e07e121baff568dc5cef03dd1f05d17 Mon Sep 17 00:00:00 2001
From: Benni Mack <benni@typo3.org>
Date: Sun, 30 Dec 2018 20:38:27 +0100
Subject: [PATCH] [!!!][TASK] Remove deprecated code in
 ExtensionManagementUtility

Various methods within ExtensionManagementUtility that was
previously deprecated have been removed.

Resolves: #87311
Releases: master
Change-Id: I38e557f46492cc2b3c14f97882266efa673d7349
Reviewed-on: https://review.typo3.org/59311
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
---
 .../Utility/ExtensionManagementUtility.php    | 134 +--------
 ...g-87193-DeprecatedFunctionalityRemoved.rst |   5 +
 .../ExtensionManagementUtilityTest.php        |   3 -
 .../ExtensionManagementUtilityTest.php        | 279 ------------------
 .../MethodArgumentDroppedStaticMatcher.php    |   1 +
 .../Php/MethodCallStaticMatcher.php           |   4 +
 6 files changed, 12 insertions(+), 414 deletions(-)
 delete mode 100644 typo3/sysext/core/Tests/UnitDeprecated/Utility/ExtensionManagementUtilityTest.php

diff --git a/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php b/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php
index 45dfcf413aca..aaa64a695b71 100644
--- a/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php
+++ b/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php
@@ -34,11 +34,6 @@ use TYPO3\CMS\Core\Preparations\TcaPreparation;
  */
 class ExtensionManagementUtility
 {
-    /**
-     * @var array
-     */
-    protected static $extensionKeyMap;
-
     /**
      * TRUE, if ext_tables file was read from cache for this script run.
      * The frontend tends to do that multiple times, but the caching framework does
@@ -113,26 +108,11 @@ class ExtensionManagementUtility
      * Returns TRUE if the extension with extension key $key is loaded.
      *
      * @param string $key Extension key to test
-     * @param bool $exitOnError If $exitOnError is TRUE and the extension is not loaded the function will die with an error message, this is deprecated and will be removed in TYPO3 v10.0.
      * @return bool
-     * @throws \BadFunctionCallException
      */
-    public static function isLoaded($key, $exitOnError = null)
+    public static function isLoaded($key)
     {
-        // safety net for extensions checking for "EXT:version", can be removed in TYPO3 v10.0.
-        if ($key === 'version') {
-            trigger_error('EXT:version has been moved into EXT:workspaces, you should check against "workspaces", as this might lead to unexpected behaviour in the future.', E_USER_DEPRECATED);
-            $key = 'workspaces';
-        }
-        if ($exitOnError !== null) {
-            trigger_error('Calling ExtensionManagementUtility::isLoaded() with a second argument via "exitOnError" will be removed in TYPO3 v10.0, handle an unloaded package yourself in the future.', E_USER_DEPRECATED);
-        }
-        $isLoaded = static::$packageManager->isPackageActive($key);
-        if ($exitOnError && !$isLoaded) {
-            // @deprecated, once $exitOnError is gone, this check can be removed.
-            throw new \BadFunctionCallException('TYPO3 Fatal Error: Extension "' . $key . '" is not loaded!', 1270853910);
-        }
-        return $isLoaded;
+        return static::$packageManager->isPackageActive($key);
     }
 
     /**
@@ -151,21 +131,6 @@ class ExtensionManagementUtility
         return static::$packageManager->getPackage($key)->getPackagePath() . $script;
     }
 
-    /**
-     * Returns the relative path to the extension as measured from the public web path
-     * If the extension is not loaded the function will die with an error message
-     * Useful for images and links from the frontend
-     *
-     * @param string $key Extension key
-     * @return string
-     * @deprecated use extPath() or GeneralUtility::getFileAbsFileName() together with PathUtility::getAbsoluteWebPath() instead.
-     */
-    public static function siteRelPath($key)
-    {
-        trigger_error('ExtensionManagementUtility::siteRelPath() will be removed in TYPO3 v10.0, use extPath() in conjunction with PathUtility::getAbsoluteWebPath() instead.', E_USER_DEPRECATED);
-        return PathUtility::stripPathSitePrefix(self::extPath($key));
-    }
-
     /**
      * Returns the correct class name prefix for the extension key $key
      *
@@ -178,41 +143,6 @@ class ExtensionManagementUtility
         return strpos($key, 'user_') === 0 ? 'user_' . str_replace('_', '', substr($key, 5)) : 'tx_' . str_replace('_', '', $key);
     }
 
-    /**
-     * Returns the real extension key like 'tt_news' from an extension prefix like 'tx_ttnews'.
-     *
-     * @param string $prefix The extension prefix (e.g. 'tx_ttnews')
-     * @return mixed Real extension key (string)or FALSE (bool) if something went wrong
-     * @deprecated since TYPO3 v9, just use the proper extension key directly
-     */
-    public static function getExtensionKeyByPrefix($prefix)
-    {
-        trigger_error('ExtensionManagementUtility::getExtensionKeyByPrefix() will be removed in TYPO3 v10.0. Use extension keys directly.', E_USER_DEPRECATED);
-        $result = false;
-        // Build map of short keys referencing to real keys:
-        if (!isset(self::$extensionKeyMap)) {
-            self::$extensionKeyMap = [];
-            foreach (static::$packageManager->getActivePackages() as $package) {
-                $shortKey = str_replace('_', '', $package->getPackageKey());
-                self::$extensionKeyMap[$shortKey] = $package->getPackageKey();
-            }
-        }
-        // Lookup by the given short key:
-        $parts = explode('_', $prefix);
-        if (isset(self::$extensionKeyMap[$parts[1]])) {
-            $result = self::$extensionKeyMap[$parts[1]];
-        }
-        return $result;
-    }
-
-    /**
-     * Clears the extension key map.
-     */
-    public static function clearExtensionKeyMap()
-    {
-        self::$extensionKeyMap = null;
-    }
-
     /**
      * Retrieves the version of an installed extension.
      * If the extension is not installed, this function returns an empty string.
@@ -817,36 +747,6 @@ class ExtensionManagementUtility
         $GLOBALS['PAGES_TYPES']['default']['allowedTables'] .= ',' . $table;
     }
 
-    /**
-     * This method is called from \TYPO3\CMS\Backend\Module\ModuleLoader::checkMod
-     * and it replaces old conf.php.
-     *
-     * @param string $moduleSignature The module name
-     * @return array Configuration of the module
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0, addModule() works the same way nowadays.
-     */
-    public static function configureModule($moduleSignature)
-    {
-        trigger_error('ExtensionManagementUtility::configureModule will be removed in TYPO3 v10.0, as the same functionality is found in addModule() as well.', E_USER_DEPRECATED);
-        $moduleConfiguration = $GLOBALS['TBE_MODULES']['_configuration'][$moduleSignature];
-
-        // Register the icon and move it too "iconIdentifier"
-        if (!empty($moduleConfiguration['icon'])) {
-            $iconRegistry = GeneralUtility::makeInstance(IconRegistry::class);
-            $iconIdentifier = 'module-' . $moduleSignature;
-            $iconProvider = $iconRegistry->detectIconProvider($moduleConfiguration['icon']);
-            $iconRegistry->registerIcon(
-                $iconIdentifier,
-                $iconProvider,
-                ['source' => GeneralUtility::getFileAbsFileName($moduleConfiguration['icon'])]
-            );
-            $moduleConfiguration['iconIdentifier'] = $iconIdentifier;
-            unset($moduleConfiguration['icon']);
-        }
-
-        return $moduleConfiguration;
-    }
-
     /**
      * Adds a module (main or sub) to the backend interface
      * FOR USE IN ext_tables.php FILES
@@ -859,15 +759,6 @@ class ExtensionManagementUtility
      */
     public static function addModule($main, $sub = '', $position = '', $path = null, $moduleConfiguration = [])
     {
-        if (($moduleConfiguration['navigationComponentId'] ?? '') === 'typo3-pagetree') {
-            trigger_error(
-                'Referencing the navigation component ID "typo3-pagetree" will be removed in TYPO3 v10.0.'
-                . 'Use "TYPO3/CMS/Backend/PageTree/PageTreeElement" instead. Module key: ' . $main . '-' . $sub,
-                E_USER_DEPRECATED
-            );
-            $moduleConfiguration['navigationComponentId'] = 'TYPO3/CMS/Backend/PageTree/PageTreeElement';
-        }
-
         // If there is already a main module by this name:
         // Adding the submodule to the correct position:
         if (isset($GLOBALS['TBE_MODULES'][$main]) && $sub) {
@@ -1871,27 +1762,6 @@ tt_content.' . $key . $suffix . ' {
         return 'ext_tables_' . sha1(TYPO3_version . Environment::getProjectPath() . 'extTables' . serialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['runtimeActivatedPackages']));
     }
 
-    /**
-     * Remove cache files from php code cache, grouped by 'system'
-     *
-     * This removes the following cache entries:
-     * - autoloader cache registry
-     * - cache loaded extension array
-     * - ext_localconf concatenation
-     * - ext_tables concatenation
-     *
-     * This method is usually only used by extension that fiddle
-     * with the loaded extensions. An example is the extension
-     * manager and the install tool.
-     *
-     * @deprecated CacheManager provides the functionality directly
-     */
-    public static function removeCacheFiles()
-    {
-        trigger_error('ExtensionManagementUtility::removeCacheFiles() will be removed in TYPO3 v10.0. Use CacheManager directly to flush all system caches.', E_USER_DEPRECATED);
-        self::getCacheManager()->flushCachesInGroup('system');
-    }
-
     /**
      * Gets an array of loaded extension keys
      *
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-87193-DeprecatedFunctionalityRemoved.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-87193-DeprecatedFunctionalityRemoved.rst
index ca0d96421bd6..81ee80f78c88 100644
--- a/typo3/sysext/core/Documentation/Changelog/master/Breaking-87193-DeprecatedFunctionalityRemoved.rst
+++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-87193-DeprecatedFunctionalityRemoved.rst
@@ -395,6 +395,10 @@ The following PHP static class methods that have been previously deprecated for
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory::determineSaltingHashingMethod()`
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory::getSaltingInstance()`
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory::setPreferredHashingMethod()`
+* :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::configureModule()`
+* :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getExtensionKeyByPrefix()`
+* :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::removeCacheFiles()`
+* :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath()`
 * :php:`TYPO3\CMS\Extbase\Mvc\Controller\ActionController::getActionMethodParameters()`
 
 
@@ -413,6 +417,7 @@ The following methods changed signature according to previous deprecations in v9
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\PhpassPasswordHash->getHashedPassword()` - Second argument dropped
 * :php:`TYPO3\CMS\Core\Http\Dispatcher->dispatch()` - Second argument dropped
 * :php:`TYPO3\CMS\Core\Package\PackageManager->__construct()` - First argument mandatory
+* :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded()` - Second argument dropped
 * :php:`TYPO3\CMS\Core\Utility\GeneralUtility->explodeUrl2Array()` - Second argument dropped
 * :php:`TYPO3\CMS\Core\Utility\GeneralUtility->getUrl()` - Third argument must be an array of arrays if given
 * :php:`TYPO3\CMS\Core\Utility\GeneralUtility->mkdir_deep()` - Second argument dropped
diff --git a/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php
index 1feef3a405be..69b4d5113cbb 100644
--- a/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php
+++ b/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php
@@ -54,7 +54,6 @@ class ExtensionManagementUtilityTest extends UnitTestCase
      */
     protected function tearDown()
     {
-        ExtensionManagementUtility::clearExtensionKeyMap();
         ExtensionManagementUtilityAccessibleProxy::setPackageManager($this->backUpPackageManager);
         ExtensionManagementUtilityAccessibleProxy::setCacheManager(null);
         parent::tearDown();
@@ -1664,7 +1663,6 @@ class ExtensionManagementUtilityTest extends UnitTestCase
      */
     public function getExtensionVersionForNotLoadedExtensionReturnsEmptyString()
     {
-        ExtensionManagementUtility::clearExtensionKeyMap();
         $uniqueSuffix = $this->getUniqueId('test');
         $extensionKey = 'unloadedextension' . $uniqueSuffix;
         $this->assertEquals('', ExtensionManagementUtility::getExtensionVersion($extensionKey));
@@ -1675,7 +1673,6 @@ class ExtensionManagementUtilityTest extends UnitTestCase
      */
     public function getExtensionVersionForLoadedExtensionReturnsExtensionVersion()
     {
-        ExtensionManagementUtility::clearExtensionKeyMap();
         $uniqueSuffix = $this->getUniqueId('test');
         $extensionKey = 'unloadedextension' . $uniqueSuffix;
         $packageMetaData = $this->getMockBuilder(MetaData::class)
diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Utility/ExtensionManagementUtilityTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Utility/ExtensionManagementUtilityTest.php
deleted file mode 100644
index 79a703b0a98e..000000000000
--- a/typo3/sysext/core/Tests/UnitDeprecated/Utility/ExtensionManagementUtilityTest.php
+++ /dev/null
@@ -1,279 +0,0 @@
-<?php
-namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Utility;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Core\Cache\CacheManager;
-use TYPO3\CMS\Core\Core\Environment;
-use TYPO3\CMS\Core\Package\Package;
-use TYPO3\CMS\Core\Package\PackageManager;
-use TYPO3\CMS\Core\Tests\Unit\Utility\AccessibleProxies\ExtensionManagementUtilityAccessibleProxy;
-use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
-
-/**
- * Test case
- */
-class ExtensionManagementUtilityTest extends UnitTestCase
-{
-    /**
-     * @var \TYPO3\CMS\Core\Package\PackageManager
-     */
-    protected $backUpPackageManager;
-
-    /**
-     * Set up
-     */
-    protected function setUp()
-    {
-        $this->backUpPackageManager = ExtensionManagementUtilityAccessibleProxy::getPackageManager();
-    }
-
-    /**
-     * Tear down
-     */
-    protected function tearDown()
-    {
-        ExtensionManagementUtility::clearExtensionKeyMap();
-        ExtensionManagementUtilityAccessibleProxy::setPackageManager($this->backUpPackageManager);
-        ExtensionManagementUtilityAccessibleProxy::setCacheManager(null);
-        parent::tearDown();
-    }
-
-    /**
-     * @param string $packageKey
-     * @param array $packageMethods
-     * @return PackageManager|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected function createMockPackageManagerWithMockPackage($packageKey, $packageMethods = ['getPackagePath', 'getPackageKey'])
-    {
-        $packagePath = Environment::getVarPath() . '/tests/' . $packageKey . '/';
-        GeneralUtility::mkdir_deep($packagePath);
-        $this->testFilesToDelete[] = $packagePath;
-        $package = $this->getMockBuilder(Package::class)
-                ->disableOriginalConstructor()
-                ->setMethods($packageMethods)
-                ->getMock();
-        $packageManager = $this->getMockBuilder(PackageManager::class)
-            ->setMethods(['isPackageActive', 'getPackage', 'getActivePackages'])
-            ->getMock();
-        $package->expects($this->any())
-                ->method('getPackagePath')
-                ->will($this->returnValue($packagePath));
-        $package->expects($this->any())
-                ->method('getPackageKey')
-                ->will($this->returnValue($packageKey));
-        $packageManager->expects($this->any())
-                ->method('isPackageActive')
-                ->will($this->returnValueMap([
-                    [null, false],
-                    [$packageKey, true]
-                ]));
-        $packageManager->expects($this->any())
-                ->method('getPackage')
-                ->with($this->equalTo($packageKey))
-                ->will($this->returnValue($package));
-        $packageManager->expects($this->any())
-                ->method('getActivePackages')
-                ->will($this->returnValue([$packageKey => $package]));
-        return $packageManager;
-    }
-
-    ///////////////////////////////
-    // Tests concerning isLoaded
-    ///////////////////////////////
-    /**
-     * @test
-     */
-    public function isLoadedReturnsFalseIfExtensionIsNotLoadedAndExitIsDisabled()
-    {
-        $this->assertFalse(ExtensionManagementUtility::isLoaded($this->getUniqueId('foobar'), false));
-    }
-
-    ///////////////////////////////
-    // Tests concerning extPath
-    ///////////////////////////////
-    /**
-     * @test
-     */
-    public function extPathThrowsExceptionIfExtensionIsNotLoaded()
-    {
-        $this->expectException(\BadFunctionCallException::class);
-        $this->expectExceptionCode(1365429656);
-
-        $packageName = $this->getUniqueId('foo');
-        /** @var PackageManager|\PHPUnit_Framework_MockObject_MockObject $packageManager */
-        $packageManager = $this->getMockBuilder(PackageManager::class)
-            ->disableOriginalConstructor()
-            ->setMethods(['isPackageActive'])
-            ->getMock();
-        $packageManager->expects($this->once())
-                ->method('isPackageActive')
-                ->with($this->equalTo($packageName))
-                ->will($this->returnValue(false));
-        ExtensionManagementUtility::setPackageManager($packageManager);
-        ExtensionManagementUtility::extPath($packageName);
-    }
-
-    /**
-     * @test
-     */
-    public function extPathAppendsScriptNameToPath()
-    {
-        $package = $this->getMockBuilder(Package::class)
-                ->disableOriginalConstructor()
-                ->setMethods(['getPackagePath'])
-                ->getMock();
-        /** @var PackageManager|\PHPUnit_Framework_MockObject_MockObject $packageManager */
-        $packageManager = $this->getMockBuilder(PackageManager::class)
-            ->disableOriginalConstructor()
-            ->setMethods(['isPackageActive', 'getPackage'])
-            ->getMock();
-        $package->expects($this->once())
-                ->method('getPackagePath')
-                ->will($this->returnValue(Environment::getPublicPath() . '/foo/'));
-        $packageManager->expects($this->once())
-                ->method('isPackageActive')
-                ->with($this->equalTo('foo'))
-                ->will($this->returnValue(true));
-        $packageManager->expects($this->once())
-                ->method('getPackage')
-                ->with('foo')
-                ->will($this->returnValue($package));
-        ExtensionManagementUtility::setPackageManager($packageManager);
-        $this->assertSame(Environment::getPublicPath() . '/foo/bar.txt', ExtensionManagementUtility::extPath('foo', 'bar.txt'));
-    }
-
-    //////////////////////
-    // Utility functions
-    //////////////////////
-    /**
-     * Generates a basic TCA for a given table.
-     *
-     * @param string $table name of the table, must not be empty
-     * @return array generated TCA for the given table, will not be empty
-     */
-    private function generateTCAForTable($table)
-    {
-        $tca = [];
-        $tca[$table] = [];
-        $tca[$table]['columns'] = [
-            'fieldA' => [],
-            'fieldC' => []
-        ];
-        $tca[$table]['types'] = [
-            'typeA' => ['showitem' => 'fieldA, fieldB, fieldC;labelC, --palette--;;paletteC, fieldC1, fieldD, fieldD1'],
-            'typeB' => ['showitem' => 'fieldA, fieldB, fieldC;labelC, --palette--;;paletteC, fieldC1, fieldD, fieldD1'],
-            'typeC' => ['showitem' => 'fieldC;;paletteD']
-        ];
-        $tca[$table]['palettes'] = [
-            'paletteA' => ['showitem' => 'fieldX, fieldX1, fieldY'],
-            'paletteB' => ['showitem' => 'fieldX, fieldX1, fieldY'],
-            'paletteC' => ['showitem' => 'fieldX, fieldX1, fieldY'],
-            'paletteD' => ['showitem' => 'fieldX, fieldX1, fieldY']
-        ];
-        return $tca;
-    }
-
-    /////////////////////////////////////////////
-    // Tests concerning getExtensionKeyByPrefix
-    /////////////////////////////////////////////
-    /**
-     * @test
-     * @see ExtensionManagementUtility::getExtensionKeyByPrefix
-     */
-    public function getExtensionKeyByPrefixForLoadedExtensionWithUnderscoresReturnsExtensionKey()
-    {
-        ExtensionManagementUtility::clearExtensionKeyMap();
-        $uniqueSuffix = $this->getUniqueId('test');
-        $extensionKey = 'tt_news' . $uniqueSuffix;
-        $extensionPrefix = 'tx_ttnews' . $uniqueSuffix;
-        $package = $this->getMockBuilder(Package::class)
-                ->disableOriginalConstructor()
-                ->setMethods(['getPackageKey'])
-                ->getMock();
-        $package->expects($this->exactly(2))
-                ->method('getPackageKey')
-                ->will($this->returnValue($extensionKey));
-        /** @var PackageManager|\PHPUnit_Framework_MockObject_MockObject $packageManager */
-        $packageManager = $this->getMockBuilder(PackageManager::class)
-            ->disableOriginalConstructor()
-            ->setMethods(['getActivePackages'])
-            ->getMock();
-        $packageManager->expects($this->once())
-                ->method('getActivePackages')
-                ->will($this->returnValue([$extensionKey => $package]));
-        ExtensionManagementUtility::setPackageManager($packageManager);
-        $this->assertEquals($extensionKey, ExtensionManagementUtility::getExtensionKeyByPrefix($extensionPrefix));
-    }
-
-    /**
-     * @test
-     * @see ExtensionManagementUtility::getExtensionKeyByPrefix
-     */
-    public function getExtensionKeyByPrefixForLoadedExtensionWithoutUnderscoresReturnsExtensionKey()
-    {
-        ExtensionManagementUtility::clearExtensionKeyMap();
-        $uniqueSuffix = $this->getUniqueId('test');
-        $extensionKey = 'kickstarter' . $uniqueSuffix;
-        $extensionPrefix = 'tx_kickstarter' . $uniqueSuffix;
-        $package = $this->getMockBuilder(Package::class)
-                ->disableOriginalConstructor()
-                ->setMethods(['getPackageKey'])
-                ->getMock();
-        $package->expects($this->exactly(2))
-                ->method('getPackageKey')
-                ->will($this->returnValue($extensionKey));
-        /** @var PackageManager|\PHPUnit_Framework_MockObject_MockObject $packageManager */
-        $packageManager = $this->getMockBuilder(PackageManager::class)
-            ->disableOriginalConstructor()
-            ->setMethods(['getActivePackages'])
-            ->getMock();
-        $packageManager->expects($this->once())
-                ->method('getActivePackages')
-                ->will($this->returnValue([$extensionKey => $package]));
-        ExtensionManagementUtility::setPackageManager($packageManager);
-        $this->assertEquals($extensionKey, ExtensionManagementUtility::getExtensionKeyByPrefix($extensionPrefix));
-    }
-
-    /**
-     * @test
-     * @see ExtensionManagementUtility::getExtensionKeyByPrefix
-     */
-    public function getExtensionKeyByPrefixForNotLoadedExtensionReturnsFalse()
-    {
-        ExtensionManagementUtility::clearExtensionKeyMap();
-        $uniqueSuffix = $this->getUniqueId('test');
-        $extensionPrefix = 'tx_unloadedextension' . $uniqueSuffix;
-        $this->assertFalse(ExtensionManagementUtility::getExtensionKeyByPrefix($extensionPrefix));
-    }
-
-    /////////////////////////////////////////
-    // Tests concerning removeCacheFiles
-    /////////////////////////////////////////
-    /**
-     * @test
-     */
-    public function removeCacheFilesFlushesSystemCaches()
-    {
-        /** @var CacheManager|\PHPUnit_Framework_MockObject_MockObject $mockCacheManager */
-        $mockCacheManager = $this->getMockBuilder(CacheManager::class)
-            ->setMethods(['flushCachesInGroup'])
-            ->getMock();
-        $mockCacheManager->expects($this->once())->method('flushCachesInGroup')->with('system');
-        ExtensionManagementUtilityAccessibleProxy::setCacheManager($mockCacheManager);
-        ExtensionManagementUtility::removeCacheFiles();
-    }
-}
diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodArgumentDroppedStaticMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodArgumentDroppedStaticMatcher.php
index dae990e25957..79533650c2de 100644
--- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodArgumentDroppedStaticMatcher.php
+++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodArgumentDroppedStaticMatcher.php
@@ -38,6 +38,7 @@ return [
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
             'Deprecation-82899-ExtensionManagementUtilityMethods.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Utility\GeneralUtility::explodeUrl2Array' => [
diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallStaticMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallStaticMatcher.php
index 0570c14f3868..2bfb21d8e94a 100644
--- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallStaticMatcher.php
+++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallStaticMatcher.php
@@ -475,6 +475,7 @@ return [
         'maximumNumberOfArguments' => 0,
         'restFiles' => [
             'Deprecation-82899-ExtensionManagementUtilityMethods.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getExtensionKeyByPrefix' => [
@@ -482,6 +483,7 @@ return [
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
             'Deprecation-82899-ExtensionManagementUtilityMethods.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Utility\ExtensionManagementUtility::removeCacheFiles' => [
@@ -489,6 +491,7 @@ return [
         'maximumNumberOfArguments' => 0,
         'restFiles' => [
             'Deprecation-82899-ExtensionManagementUtilityMethods.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Utility\ExtensionManagementUtility::configureModule' => [
@@ -496,6 +499,7 @@ return [
         'maximumNumberOfArguments' => 0,
         'restFiles' => [
             'Deprecation-82902-CustomBackendModuleRegistrationMethods.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Backend\Utility\BackendUtility::getOriginalTranslationTable' => [
-- 
GitLab