function ExternalCommandRequirementsTrait::checkExternalCommandRequirements
Same name in other branches
- 9 core/tests/Drupal/BuildTests/Framework/ExternalCommandRequirementsTrait.php \Drupal\BuildTests\Framework\ExternalCommandRequirementsTrait::checkExternalCommandRequirements()
- 8.9.x core/tests/Drupal/BuildTests/Framework/ExternalCommandRequirementsTrait.php \Drupal\BuildTests\Framework\ExternalCommandRequirementsTrait::checkExternalCommandRequirements()
Checks missing external command requirements.
Parameters
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.
2 calls to ExternalCommandRequirementsTrait::checkExternalCommandRequirements()
- ExternalCommandRequirementsTrait::checkClassCommandRequirements in core/
tests/ Drupal/ BuildTests/ Framework/ ExternalCommandRequirementsTrait.php - Checks whether required external commands are available per test class.
- ExternalCommandRequirementsTrait::checkMethodCommandRequirements in core/
tests/ Drupal/ BuildTests/ Framework/ ExternalCommandRequirementsTrait.php - Checks whether required external commands are available per method.
File
-
core/
tests/ Drupal/ BuildTests/ Framework/ ExternalCommandRequirementsTrait.php, line 70
Class
- ExternalCommandRequirementsTrait
- Allows test classes to require external command line applications.
Namespace
Drupal\BuildTests\FrameworkCode
private static function checkExternalCommandRequirements(array $annotations) {
@trigger_error(__METHOD__ . "() is deprecated in drupal:10.2.0 and is removed from drupal:11.0.0. Use Drupal\\TestTools\\Extension\\RequiresComposerTrait instead. See https://www.drupal.org/node/3362239", E_USER_DEPRECATED);
// Make a list of required commands.
$required_commands = [];
foreach ($annotations as $requirement) {
if (str_starts_with($requirement, 'externalCommand ')) {
@trigger_error("The '@require externalCommand' annotation for tests is deprecated in drupal:10.2.0 and is removed from drupal:11.0.0. Use Drupal\\TestTools\\Extension\\RequiresComposerTrait instead. See https://www.drupal.org/node/3362239", E_USER_DEPRECATED);
$command = trim(str_replace('externalCommand ', '', $requirement));
// Use named keys to avoid duplicates.
$required_commands[$command] = $command;
}
}
// Figure out which commands are not available.
$unavailable = [];
foreach ($required_commands as $required_command) {
if (!in_array($required_command, self::$existingCommands)) {
if (static::externalCommandIsAvailable($required_command)) {
// Cache existing commands so we don't have to ask again.
self::$existingCommands[] = $required_command;
}
else {
$unavailable[] = $required_command;
}
}
}
// Skip the test if there were some we couldn't find.
if (!empty($unavailable)) {
throw new SkippedTestError('Required external commands: ' . implode(', ', $unavailable));
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.