You are here

public function PhpUnitTestRunner::phpUnitCommand in Drupal 10

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Test/PhpUnitTestRunner.php \Drupal\Core\Test\PhpUnitTestRunner::phpUnitCommand()
  2. 9 core/lib/Drupal/Core/Test/PhpUnitTestRunner.php \Drupal\Core\Test\PhpUnitTestRunner::phpUnitCommand()

Returns the command to run PHPUnit.

@internal

Return value

string The command that can be run through exec().

File

core/lib/Drupal/Core/Test/PhpUnitTestRunner.php, line 88

Class

PhpUnitTestRunner
Run PHPUnit-based tests.

Namespace

Drupal\Core\Test

Code

public function phpUnitCommand() {

  // Load the actual autoloader being used and determine its filename using
  // reflection. We can determine the vendor directory based on that filename.
  $autoloader = (require $this->appRoot . '/autoload.php');
  $reflector = new \ReflectionClass($autoloader);
  $vendor_dir = dirname($reflector
    ->getFileName(), 2);

  // The file in Composer's bin dir is a *nix link, which does not work when
  // extracted from a tarball and generally not on Windows.
  $command = $vendor_dir . '/phpunit/phpunit/phpunit';
  if (substr(PHP_OS, 0, 3) == 'WIN') {

    // On Windows it is necessary to run the script using the PHP executable.
    $php_executable_finder = new PhpExecutableFinder();
    $php = $php_executable_finder
      ->find();
    $command = $php . ' -f ' . escapeshellarg($command) . ' --';
  }
  return $command;
}