You are here

ExecutableFinderTest.php in Zircon Profile 8.0

Same filename and directory in other branches
  1. 8 vendor/symfony/process/Tests/ExecutableFinderTest.php

File

vendor/symfony/process/Tests/ExecutableFinderTest.php
View source
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace Symfony\Component\Process\Tests;

use Symfony\Component\Process\ExecutableFinder;

/**
 * @author Chris Smith <chris@cs278.org>
 */
class ExecutableFinderTest extends \PHPUnit_Framework_TestCase {
  private $path;
  protected function tearDown() {
    if ($this->path) {

      // Restore path if it was changed.
      putenv('PATH=' . $this->path);
    }
  }
  private function setPath($path) {
    $this->path = getenv('PATH');
    putenv('PATH=' . $path);
  }
  public function testFind() {
    if (!defined('PHP_BINARY')) {
      $this
        ->markTestSkipped('Requires the PHP_BINARY constant');
    }
    if (ini_get('open_basedir')) {
      $this
        ->markTestSkipped('Cannot test when open_basedir is set');
    }
    $this
      ->setPath(dirname(PHP_BINARY));
    $finder = new ExecutableFinder();
    $result = $finder
      ->find($this
      ->getPhpBinaryName());
    $this
      ->assertSamePath(PHP_BINARY, $result);
  }
  public function testFindWithDefault() {
    if (ini_get('open_basedir')) {
      $this
        ->markTestSkipped('Cannot test when open_basedir is set');
    }
    $expected = 'defaultValue';
    $this
      ->setPath('');
    $finder = new ExecutableFinder();
    $result = $finder
      ->find('foo', $expected);
    $this
      ->assertEquals($expected, $result);
  }
  public function testFindWithExtraDirs() {
    if (!defined('PHP_BINARY')) {
      $this
        ->markTestSkipped('Requires the PHP_BINARY constant');
    }
    if (ini_get('open_basedir')) {
      $this
        ->markTestSkipped('Cannot test when open_basedir is set');
    }
    $this
      ->setPath('');
    $extraDirs = array(
      dirname(PHP_BINARY),
    );
    $finder = new ExecutableFinder();
    $result = $finder
      ->find($this
      ->getPhpBinaryName(), null, $extraDirs);
    $this
      ->assertSamePath(PHP_BINARY, $result);
  }
  public function testFindWithOpenBaseDir() {
    if (!defined('PHP_BINARY')) {
      $this
        ->markTestSkipped('Requires the PHP_BINARY constant');
    }
    if ('\\' === DIRECTORY_SEPARATOR) {
      $this
        ->markTestSkipped('Cannot run test on windows');
    }
    if (ini_get('open_basedir')) {
      $this
        ->markTestSkipped('Cannot test when open_basedir is set');
    }
    $this
      ->iniSet('open_basedir', dirname(PHP_BINARY) . (!defined('HHVM_VERSION') ? PATH_SEPARATOR . '/' : ''));
    $finder = new ExecutableFinder();
    $result = $finder
      ->find($this
      ->getPhpBinaryName());
    $this
      ->assertSamePath(PHP_BINARY, $result);
  }
  public function testFindProcessInOpenBasedir() {
    if (ini_get('open_basedir')) {
      $this
        ->markTestSkipped('Cannot test when open_basedir is set');
    }
    if (!defined('PHP_BINARY')) {
      $this
        ->markTestSkipped('Requires the PHP_BINARY constant');
    }
    if ('\\' === DIRECTORY_SEPARATOR) {
      $this
        ->markTestSkipped('Cannot run test on windows');
    }
    $this
      ->setPath('');
    $this
      ->iniSet('open_basedir', PHP_BINARY . (!defined('HHVM_VERSION') ? PATH_SEPARATOR . '/' : ''));
    $finder = new ExecutableFinder();
    $result = $finder
      ->find($this
      ->getPhpBinaryName(), false);
    $this
      ->assertSamePath(PHP_BINARY, $result);
  }
  private function assertSamePath($expected, $tested) {
    if ('\\' === DIRECTORY_SEPARATOR) {
      $this
        ->assertEquals(strtolower($expected), strtolower($tested));
    }
    else {
      $this
        ->assertEquals($expected, $tested);
    }
  }
  private function getPhpBinaryName() {
    return basename(PHP_BINARY, '\\' === DIRECTORY_SEPARATOR ? '.exe' : '');
  }

}

Classes

Namesort descending Description
ExecutableFinderTest @author Chris Smith <chris@cs278.org>