2011-05-09 21:40:18 +01:00
< ? 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 .
*/
2012-03-28 14:43:52 +01:00
namespace Symfony\Component\Process\Tests ;
2011-05-09 21:40:18 +01:00
use Symfony\Component\Process\PhpExecutableFinder ;
/**
* @ author Robert Schönthal < seroscho @ googlemail . com >
*/
class PhpExecutableFinderTest extends \PHPUnit_Framework_TestCase
{
/**
* tests find () with the env var PHP_PATH
*/
2013-01-11 00:31:43 +00:00
public function testFindWithPhpPath ()
2011-05-09 21:40:18 +01:00
{
2011-12-20 19:16:11 +00:00
if ( defined ( 'PHP_BINARY' )) {
$this -> markTestSkipped ( 'The PHP binary is easily available as of PHP 5.4' );
}
2011-05-09 21:40:18 +01:00
$f = new PhpExecutableFinder ();
$current = $f -> find ();
2011-06-08 18:56:59 +01:00
2011-05-09 21:40:18 +01:00
//not executable PHP_PATH
putenv ( 'PHP_PATH=/not/executable/php' );
2013-12-27 15:08:19 +00:00
$this -> assertFalse ( $f -> find (), '::find() returns false for not executable PHP' );
2014-07-28 14:26:43 +01:00
$this -> assertFalse ( $f -> find ( false ), '::find() returns false for not executable PHP' );
2011-06-08 18:56:59 +01:00
2011-05-09 21:40:18 +01:00
//executable PHP_PATH
2011-06-08 18:56:59 +01:00
putenv ( 'PHP_PATH=' . $current );
2013-12-27 15:08:19 +00:00
$this -> assertEquals ( $f -> find (), $current , '::find() returns the executable PHP' );
2014-07-28 14:26:43 +01:00
$this -> assertEquals ( $f -> find ( false ), $current , '::find() returns the executable PHP' );
}
/**
* tests find () with the env var PHP_PATH
*/
public function testFindWithHHVM ()
{
if ( ! defined ( 'HHVM_VERSION' )) {
$this -> markTestSkipped ( 'Should be executed in HHVM context.' );
}
$f = new PhpExecutableFinder ();
$current = $f -> find ();
$this -> assertEquals ( $f -> find (), $current . ' --php' , '::find() returns the executable PHP' );
$this -> assertEquals ( $f -> find ( false ), $current , '::find() returns the executable PHP' );
}
/**
* tests find () with the env var PHP_PATH
*/
public function testFindArguments ()
{
$f = new PhpExecutableFinder ();
if ( defined ( 'HHVM_VERSION' )) {
$this -> assertEquals ( $f -> findArguments (), array ( '--php' ), '::findArguments() returns HHVM arguments' );
} else {
$this -> assertEquals ( $f -> findArguments (), array (), '::findArguments() returns no arguments' );
}
2011-05-09 21:40:18 +01:00
}
/**
* tests find () with default executable
*/
public function testFindWithSuffix ()
{
2011-12-20 19:16:11 +00:00
if ( defined ( 'PHP_BINARY' )) {
$this -> markTestSkipped ( 'The PHP binary is easily available as of PHP 5.4' );
}
2011-05-09 21:40:18 +01:00
putenv ( 'PHP_PATH=' );
putenv ( 'PHP_PEAR_PHP_BIN=' );
$f = new PhpExecutableFinder ();
$current = $f -> find ();
2011-06-08 18:56:59 +01:00
2013-12-27 15:08:19 +00:00
//TODO maybe php executable is custom or even Windows
2011-12-01 14:45:30 +00:00
if ( defined ( 'PHP_WINDOWS_VERSION_BUILD' )) {
2011-12-11 11:11:07 +00:00
$this -> assertTrue ( is_executable ( $current ));
2013-12-27 15:08:19 +00:00
$this -> assertTrue (( bool ) preg_match ( '/' . addSlashes ( DIRECTORY_SEPARATOR ) . 'php\.(exe|bat|cmd|com)$/i' , $current ), '::find() returns the executable PHP with suffixes' );
2011-05-22 15:57:37 +01:00
}
2011-05-09 21:40:18 +01:00
}
}