[Process] Consider \"executable\" suffixes first on Windows
This commit is contained in:
parent
05d69bb739
commit
9372e7a813
@ -73,7 +73,7 @@ class ExecutableFinder
|
|||||||
$suffixes = array('');
|
$suffixes = array('');
|
||||||
if ('\\' === DIRECTORY_SEPARATOR) {
|
if ('\\' === DIRECTORY_SEPARATOR) {
|
||||||
$pathExt = getenv('PATHEXT');
|
$pathExt = getenv('PATHEXT');
|
||||||
$suffixes = array_merge($suffixes, $pathExt ? explode(PATH_SEPARATOR, $pathExt) : $this->suffixes);
|
$suffixes = array_merge($pathExt ? explode(PATH_SEPARATOR, $pathExt) : $this->suffixes, $suffixes);
|
||||||
}
|
}
|
||||||
foreach ($suffixes as $suffix) {
|
foreach ($suffixes as $suffix) {
|
||||||
foreach ($dirs as $dir) {
|
foreach ($dirs as $dir) {
|
||||||
|
@ -129,6 +129,36 @@ class ExecutableFinderTest extends TestCase
|
|||||||
$this->assertSamePath(PHP_BINARY, $result);
|
$this->assertSamePath(PHP_BINARY, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @requires PHP 5.4
|
||||||
|
*/
|
||||||
|
public function testFindBatchExecutableOnWindows()
|
||||||
|
{
|
||||||
|
if (ini_get('open_basedir')) {
|
||||||
|
$this->markTestSkipped('Cannot test when open_basedir is set');
|
||||||
|
}
|
||||||
|
if ('\\' !== DIRECTORY_SEPARATOR) {
|
||||||
|
$this->markTestSkipped('Can be only tested on windows');
|
||||||
|
}
|
||||||
|
|
||||||
|
$target = tempnam(sys_get_temp_dir(), 'example-windows-executable');
|
||||||
|
|
||||||
|
touch($target);
|
||||||
|
touch($target.'.BAT');
|
||||||
|
|
||||||
|
$this->assertFalse(is_executable($target));
|
||||||
|
|
||||||
|
$this->setPath(sys_get_temp_dir());
|
||||||
|
|
||||||
|
$finder = new ExecutableFinder();
|
||||||
|
$result = $finder->find(basename($target), false);
|
||||||
|
|
||||||
|
unlink($target);
|
||||||
|
unlink($target.'.BAT');
|
||||||
|
|
||||||
|
$this->assertSamePath($target.'.BAT', $result);
|
||||||
|
}
|
||||||
|
|
||||||
private function assertSamePath($expected, $tested)
|
private function assertSamePath($expected, $tested)
|
||||||
{
|
{
|
||||||
if ('\\' === DIRECTORY_SEPARATOR) {
|
if ('\\' === DIRECTORY_SEPARATOR) {
|
||||||
|
Reference in New Issue
Block a user