Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. PharLoader.php

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\Extension

Code

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;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal