use PHPUnit\Framework\TestCase;
use Symfony\Component\Process\ProcessBuilder;
+/**
+ * @group legacy
+ */
class ProcessBuilderTest extends TestCase
{
public function testInheritEnvironmentVars()
{
- $_ENV['MY_VAR_1'] = 'foo';
-
$proc = ProcessBuilder::create()
->add('foo')
->getProcess();
- unset($_ENV['MY_VAR_1']);
+ $this->assertTrue($proc->areEnvironmentVariablesInherited());
+
+ $proc = ProcessBuilder::create()
+ ->add('foo')
+ ->inheritEnvironmentVariables(false)
+ ->getProcess();
- $env = $proc->getEnv();
- $this->assertArrayHasKey('MY_VAR_1', $env);
- $this->assertEquals('foo', $env['MY_VAR_1']);
+ $this->assertFalse($proc->areEnvironmentVariablesInherited());
}
public function testAddEnvironmentVariables()
->add('command')
->setEnv('foo', 'bar2')
->addEnvironmentVariables($env)
- ->inheritEnvironmentVariables(false)
->getProcess()
;
$this->assertSame($env, $proc->getEnv());
}
- public function testProcessShouldInheritAndOverrideEnvironmentVars()
- {
- $_ENV['MY_VAR_1'] = 'foo';
-
- $proc = ProcessBuilder::create()
- ->setEnv('MY_VAR_1', 'bar')
- ->add('foo')
- ->getProcess();
-
- unset($_ENV['MY_VAR_1']);
-
- $env = $proc->getEnv();
- $this->assertArrayHasKey('MY_VAR_1', $env);
- $this->assertEquals('bar', $env['MY_VAR_1']);
- }
-
/**
* @expectedException \Symfony\Component\Process\Exception\InvalidArgumentException
*/
$pb->setPrefix('/usr/bin/php');
$proc = $pb->setArguments(array('-v'))->getProcess();
- if ('\\' === DIRECTORY_SEPARATOR) {
- $this->assertEquals('"/usr/bin/php" "-v"', $proc->getCommandLine());
+ if ('\\' === \DIRECTORY_SEPARATOR) {
+ $this->assertEquals('"/usr/bin/php" -v', $proc->getCommandLine());
} else {
$this->assertEquals("'/usr/bin/php' '-v'", $proc->getCommandLine());
}
$proc = $pb->setArguments(array('-i'))->getProcess();
- if ('\\' === DIRECTORY_SEPARATOR) {
- $this->assertEquals('"/usr/bin/php" "-i"', $proc->getCommandLine());
+ if ('\\' === \DIRECTORY_SEPARATOR) {
+ $this->assertEquals('"/usr/bin/php" -i', $proc->getCommandLine());
} else {
$this->assertEquals("'/usr/bin/php' '-i'", $proc->getCommandLine());
}
$pb->setPrefix(array('/usr/bin/php', 'composer.phar'));
$proc = $pb->setArguments(array('-v'))->getProcess();
- if ('\\' === DIRECTORY_SEPARATOR) {
- $this->assertEquals('"/usr/bin/php" "composer.phar" "-v"', $proc->getCommandLine());
+ if ('\\' === \DIRECTORY_SEPARATOR) {
+ $this->assertEquals('"/usr/bin/php" composer.phar -v', $proc->getCommandLine());
} else {
$this->assertEquals("'/usr/bin/php' 'composer.phar' '-v'", $proc->getCommandLine());
}
$proc = $pb->setArguments(array('-i'))->getProcess();
- if ('\\' === DIRECTORY_SEPARATOR) {
- $this->assertEquals('"/usr/bin/php" "composer.phar" "-i"', $proc->getCommandLine());
+ if ('\\' === \DIRECTORY_SEPARATOR) {
+ $this->assertEquals('"/usr/bin/php" composer.phar -i', $proc->getCommandLine());
} else {
$this->assertEquals("'/usr/bin/php' 'composer.phar' '-i'", $proc->getCommandLine());
}
$pb = new ProcessBuilder(array('%path%', 'foo " bar', '%baz%baz'));
$proc = $pb->getProcess();
- if ('\\' === DIRECTORY_SEPARATOR) {
- $this->assertSame('^%"path"^% "foo \\" bar" "%baz%baz"', $proc->getCommandLine());
+ if ('\\' === \DIRECTORY_SEPARATOR) {
+ $this->assertSame('""^%"path"^%"" "foo "" bar" ""^%"baz"^%"baz"', $proc->getCommandLine());
} else {
$this->assertSame("'%path%' 'foo \" bar' '%baz%baz'", $proc->getCommandLine());
}
$pb->setPrefix('%prefix%');
$proc = $pb->getProcess();
- if ('\\' === DIRECTORY_SEPARATOR) {
- $this->assertSame('^%"prefix"^% "arg"', $proc->getCommandLine());
+ if ('\\' === \DIRECTORY_SEPARATOR) {
+ $this->assertSame('""^%"prefix"^%"" arg', $proc->getCommandLine());
} else {
$this->assertSame("'%prefix%' 'arg'", $proc->getCommandLine());
}
->setPrefix('/usr/bin/php')
->getProcess();
- if ('\\' === DIRECTORY_SEPARATOR) {
+ if ('\\' === \DIRECTORY_SEPARATOR) {
$this->assertEquals('"/usr/bin/php"', $process->getCommandLine());
} else {
$this->assertEquals("'/usr/bin/php'", $process->getCommandLine());
$process = ProcessBuilder::create(array('/usr/bin/php'))
->getProcess();
- if ('\\' === DIRECTORY_SEPARATOR) {
+ if ('\\' === \DIRECTORY_SEPARATOR) {
$this->assertEquals('"/usr/bin/php"', $process->getCommandLine());
} else {
$this->assertEquals("'/usr/bin/php'", $process->getCommandLine());
/**
* @expectedException \Symfony\Component\Process\Exception\InvalidArgumentException
- * @expectedExceptionMessage Symfony\Component\Process\ProcessBuilder::setInput only accepts strings or stream resources.
+ * @expectedExceptionMessage Symfony\Component\Process\ProcessBuilder::setInput only accepts strings, Traversable objects or stream resources.
*/
public function testInvalidInput()
{
$builder = ProcessBuilder::create();
$builder->setInput(array());
}
+
+ public function testDoesNotPrefixExec()
+ {
+ if ('\\' === \DIRECTORY_SEPARATOR) {
+ $this->markTestSkipped('This test cannot run on Windows.');
+ }
+
+ $builder = ProcessBuilder::create(array('command', '-v', 'ls'));
+ $process = $builder->getProcess();
+ $process->run();
+
+ $this->assertTrue($process->isSuccessful());
+ }
}