function GenericModuleTestBase::testModuleGenericIssues

Same name in this branch
  1. 11.x core/modules/system/tests/src/Functional/Module/GenericModuleTestBase.php \Drupal\Tests\system\Functional\Module\GenericModuleTestBase::testModuleGenericIssues()
Same name and namespace in other branches
  1. 10 core/modules/system/tests/src/Functional/Module/GenericModuleTestBase.php \Drupal\Tests\system\Functional\Module\GenericModuleTestBase::testModuleGenericIssues()
  2. main core/modules/system/tests/src/Functional/Module/GenericModuleTestBase.php \Drupal\Tests\system\Functional\Module\GenericModuleTestBase::testModuleGenericIssues()
  3. main core/modules/system/tests/src/Kernel/Module/GenericModuleTestBase.php \Drupal\Tests\system\Kernel\Module\GenericModuleTestBase::testModuleGenericIssues()

Checks some generic things about a module.

File

core/modules/system/tests/src/Kernel/Module/GenericModuleTestBase.php, line 68

Class

GenericModuleTestBase
Runs a series of generic tests for one module.

Namespace

Drupal\Tests\system\Kernel\Module

Code

public function testModuleGenericIssues() : void {
  $module = $this->getModule();
  $info = \Drupal::service('extension.list.module')->getExtensionInfo($module);
  if (!empty($info['required']) && !empty($info['hidden'])) {
    $this->markTestSkipped('Nothing to assert for hidden, required modules.');
  }
  $anonymous_role = $this->container
    ->get('entity_type.manager')
    ->getStorage('user_role')
    ->loadOverrideFree(AccountInterface::ANONYMOUS_ROLE);
  $anonymous_role->grantPermission('access help pages')
    ->save();
  $this->assertHookHelp($module);
  if (empty($info['required'])) {
    $connection = Database::getConnection();
    // The module that provides the database driver, or is a dependency of
    // the database driver, cannot be uninstalled.
    $database_module_extension = \Drupal::service(ModuleExtensionList::class)->get($connection->getProvider());
    $database_modules_required = $database_module_extension->requires ? array_keys($database_module_extension->requires) : [];
    $database_modules_required[] = $connection->getProvider();
    if (!in_array($module, $database_modules_required)) {
      // Check that the module can be uninstalled and then re-installed again.
      $this->preUnInstallSteps();
      $this->assertTrue(\Drupal::service('module_installer')->uninstall([
        $module,
      ]), "Failed to uninstall '{$module}' module");
      $this->assertTrue(\Drupal::service('module_installer')->install([
        $module,
      ]), "Failed to install '{$module}' module");
    }
    elseif (!empty($info['hidden'])) {
      // If a database driver is hidden, there will have been no assertions at
      // all, so mark the test skipped.
      $this->markTestSkipped('Nothing to assert for database driver modules.');
    }
  }
}

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