You are here

trait ExecTrait in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/Tests/Composer/Plugin/Scaffold/ExecTrait.php \Drupal\Tests\Composer\Plugin\Scaffold\ExecTrait
  2. 10 core/tests/Drupal/Tests/Composer/Plugin/Scaffold/ExecTrait.php \Drupal\Tests\Composer\Plugin\Scaffold\ExecTrait

Convenience class for creating fixtures.

Hierarchy

  • trait \Drupal\Tests\Composer\Plugin\Scaffold\ExecTrait
3 files declare their use of ExecTrait
ComposerHookTest.php in core/tests/Drupal/Tests/Composer/Plugin/Scaffold/Functional/ComposerHookTest.php
ManageGitIgnoreTest.php in core/tests/Drupal/Tests/Composer/Plugin/Scaffold/Functional/ManageGitIgnoreTest.php
ScaffoldUpgradeTest.php in core/tests/Drupal/Tests/Composer/Plugin/Scaffold/Functional/ScaffoldUpgradeTest.php

File

core/tests/Drupal/Tests/Composer/Plugin/Scaffold/ExecTrait.php, line 10

Namespace

Drupal\Tests\Composer\Plugin\Scaffold
View source
trait ExecTrait {

  /**
   * Runs an arbitrary command.
   *
   * @param string $cmd
   *   The command to execute (escaped as required)
   * @param string $cwd
   *   The current working directory to run the command from.
   * @param array $env
   *   Environment variables to define for the subprocess.
   *
   * @return string
   *   Standard output from the command
   */
  protected function mustExec($cmd, $cwd, array $env = []) {
    $process = Process::fromShellCommandline($cmd, $cwd, $env + [
      'PATH' => getenv('PATH'),
      'HOME' => getenv('HOME'),
    ]);
    $process
      ->setTimeout(300)
      ->setIdleTimeout(300)
      ->run();
    $exitCode = $process
      ->getExitCode();
    if (0 != $exitCode) {
      throw new \RuntimeException("Exit code: {$exitCode}\n\n" . $process
        ->getErrorOutput() . "\n\n" . $process
        ->getOutput());
    }
    return $process
      ->getOutput();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ExecTrait::mustExec protected function Runs an arbitrary command.