diff --git a/src/Symfony/Component/Process/Process.php b/src/Symfony/Component/Process/Process.php index 66310026b3..11a00c10b8 100644 --- a/src/Symfony/Component/Process/Process.php +++ b/src/Symfony/Component/Process/Process.php @@ -774,9 +774,15 @@ class Process * @param bool $tty True to enabled and false to disable * * @return self The current Process instance + * + * @throws RuntimeException In case the TTY mode is not supported */ public function setTty($tty) { + if (defined('PHP_WINDOWS_VERSION_BUILD') && $tty) { + throw new RuntimeException('TTY mode is not supported on Windows platform.'); + } + $this->tty = (bool) $tty; return $this; diff --git a/src/Symfony/Component/Process/Tests/AbstractProcessTest.php b/src/Symfony/Component/Process/Tests/AbstractProcessTest.php index 738319e24c..1f83a68ddd 100644 --- a/src/Symfony/Component/Process/Tests/AbstractProcessTest.php +++ b/src/Symfony/Component/Process/Tests/AbstractProcessTest.php @@ -251,7 +251,7 @@ abstract class AbstractProcessTest extends \PHPUnit_Framework_TestCase } $process = $this->getProcess('echo "foo" >> /dev/null && php -r "usleep(100000);"'); - $process->setTTY(true); + $process->setTty(true); $process->start(); $this->assertTrue($process->isRunning()); $process->wait(); @@ -266,12 +266,24 @@ abstract class AbstractProcessTest extends \PHPUnit_Framework_TestCase } $process = $this->getProcess('echo "foo" >> /dev/null'); - $process->setTTY(true); + $process->setTty(true); $process->run(); $this->assertTrue($process->isSuccessful()); } + public function testTTYInWindowsEnvironment() + { + if (!defined('PHP_WINDOWS_VERSION_BUILD')) { + $this->markTestSkipped('This test is for Windows platform only'); + } + + $process = $this->getProcess('echo "foo" >> /dev/null'); + $process->setTty(false); + $this->setExpectedException('Symfony\Component\Process\Exception\RuntimeException', 'TTY mode is not supported on Windows platform.'); + $process->setTty(true); + } + public function testExitCodeTextIsNullWhenExitCodeIsNull() { $process = $this->getProcess('');