function I18nQueryTraitTest::disablePsr4ForUninstalledModules

Same name and namespace in other branches
  1. 11.x core/modules/migrate_drupal/tests/src/Kernel/I18nQueryTraitTest.php \Drupal\Tests\migrate_drupal\Kernel\I18nQueryTraitTest::disablePsr4ForUninstalledModules()

Removes PSR-4 namespaces from class loader for uninstalled modules.

TestRunnerKernel registers namespaces for all modules, including uninstalled modules. This method removes the PSR-4 namespace for the list of modules passed in after confirming they are all uninstalled.

Parameters

string[] $remove_psr4_modules: List of machine names of modules that are uninstalled and whose PSR-4 namespaces should be removed from the class loader.

1 call to I18nQueryTraitTest::disablePsr4ForUninstalledModules()
I18nQueryTraitTest::testMigrateSourcePluginUsingI18nQueryTraitDiscovery in core/modules/migrate_drupal/tests/src/Kernel/I18nQueryTraitTest.php
Tests instantiating migrate source plugins using I18nQueryTrait.

File

core/modules/migrate_drupal/tests/src/Kernel/I18nQueryTraitTest.php, line 63

Class

I18nQueryTraitTest
Tests instantiating migrate source plugins using I18nQueryTrait.

Namespace

Drupal\Tests\migrate_drupal\Kernel

Code

protected function disablePsr4ForUninstalledModules(array $remove_psr4_modules) : void {
  /** @var \Drupal\Core\Extension\ModuleExtensionList $module_list */
  $module_list = \Drupal::service('extension.list.module');
  $available_modules = $module_list->getAllAvailableInfo();
  $installed_modules = $module_list->getAllInstalledInfo();
  $prefixes = $this->classLoader
    ->getPrefixesPsr4();
  foreach ($remove_psr4_modules as $module) {
    $this->assertArrayHasKey($module, $available_modules);
    $this->assertArrayNotHasKey($module, $installed_modules);
    if (isset($prefixes["Drupal\\{$module}\\"])) {
      // Cannot actually remove the PSR4 prefix from the class loader, so set
      // the path to a wrong location.
      $this->classLoader
        ->setPsr4("Drupal\\{$module}\\", '');
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.