function TestRequirementsTrait::checkModuleRequirements

Same name in other branches
  1. 9 core/tests/Drupal/Tests/TestRequirementsTrait.php \Drupal\Tests\TestRequirementsTrait::checkModuleRequirements()
  2. 10 core/tests/Drupal/Tests/TestRequirementsTrait.php \Drupal\Tests\TestRequirementsTrait::checkModuleRequirements()

Checks missing module requirements.

Iterates through a list of requires annotations and looks for missing modules. The test will be skipped if any of the required modules is missing.

Parameters

string $root: The path to the root of the Drupal installation to scan.

string[] $annotations: A list of requires annotations from either a method or class annotation.

Throws

\PHPUnit\Framework\SkippedTestError Thrown when the requirements are not met, and this test should be skipped. Callers should not catch this exception.

1 call to TestRequirementsTrait::checkModuleRequirements()
TestRequirementsTrait::checkRequirements in core/tests/Drupal/Tests/TestRequirementsTrait.php
Check module requirements for the Drupal use case.

File

core/tests/Drupal/Tests/TestRequirementsTrait.php, line 79

Class

TestRequirementsTrait
Allows test classes to require Drupal modules as dependencies.

Namespace

Drupal\Tests

Code

private function checkModuleRequirements($root, array $annotations) {
    // drupal_valid_ua() might not be loaded.
    require_once $root . '/core/includes/bootstrap.inc';
    // Make a list of required modules.
    $required_modules = [];
    foreach ($annotations as $requirement) {
        if (strpos($requirement, 'module ') === 0) {
            $required_modules[] = trim(str_replace('module ', '', $requirement));
        }
    }
    // If there are required modules, check if they're available.
    if (!empty($required_modules)) {
        // Scan for modules.
        $discovery = new ExtensionDiscovery($root, FALSE);
        $discovery->setProfileDirectories([]);
        $list = array_keys($discovery->scan('module'));
        $not_available = array_diff($required_modules, $list);
        if (!empty($not_available)) {
            throw new SkippedTestError('Required modules: ' . implode(', ', $not_available));
        }
    }
}

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