function PharLoader::loadPharExtensionsInDirectory
@psalm-param non-empty-string $directory
@psalm-return list<string>
File
-
vendor/
phpunit/ phpunit/ src/ Runner/ Extension/ PharLoader.php, line 40
Class
- PharLoader
- @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
Namespace
PHPUnit\Runner\ExtensionCode
public function loadPharExtensionsInDirectory(string $directory) : array {
$pharExtensionLoaded = extension_loaded('phar');
$loadedExtensions = [];
foreach ((new FileIteratorFacade())->getFilesAsArray($directory, '.phar') as $file) {
if (!$pharExtensionLoaded) {
Event\Facade::emitter()->testRunnerTriggeredWarning(sprintf('Cannot load extension from %s because the PHAR extension is not available', $file));
continue;
}
if (!is_file('phar://' . $file . '/manifest.xml')) {
Event\Facade::emitter()->testRunnerTriggeredWarning(sprintf('%s is not an extension for PHPUnit', $file));
continue;
}
try {
$applicationName = new ApplicationName('phpunit/phpunit');
$version = new PharIoVersion($this->phpunitVersion());
$manifest = ManifestLoader::fromFile('phar://' . $file . '/manifest.xml');
if (!$manifest->isExtensionFor($applicationName)) {
Event\Facade::emitter()->testRunnerTriggeredWarning(sprintf('%s is not an extension for PHPUnit', $file));
continue;
}
if (!$manifest->isExtensionFor($applicationName, $version)) {
Event\Facade::emitter()->testRunnerTriggeredWarning(sprintf('%s is not compatible with PHPUnit %s', $file, Version::series()));
continue;
}
} catch (ManifestException $e) {
Event\Facade::emitter()->testRunnerTriggeredWarning(sprintf('Cannot load extension from %s: %s', $file, $e->getMessage()));
continue;
}
try {
/** @psalm-suppress UnresolvableInclude */
@(require $file);
} catch (Throwable $t) {
Event\Facade::emitter()->testRunnerTriggeredWarning(sprintf('Cannot load extension from %s: %s', $file, $t->getMessage()));
continue;
}
$loadedExtensions[] = $manifest->getName()
->asString() . ' ' . $manifest->getVersion()
->getVersionString();
Event\Facade::emitter()->testRunnerLoadedExtensionFromPhar($file, $manifest->getName()
->asString(), $manifest->getVersion()
->getVersionString());
}
return $loadedExtensions;
}