1
0
Fork 0

Merge pull request #5852 from fabpot/io-fix

Remove usage of echo when executing Composer script
pull/5836/merge
Jordi Boggiano 2016-11-06 16:49:08 +01:00 committed by GitHub
commit 9801d831ed
3 changed files with 27 additions and 4 deletions

View File

@ -99,7 +99,17 @@ class ProcessExecutor
return; return;
} }
echo $buffer; if (null === $this->io) {
echo $buffer;
return;
}
if (Process::ERR === $type) {
$this->io->writeError($buffer);
} else {
$this->io->write($buffer);
}
} }
public static function getTimeout() public static function getTimeout()

View File

@ -340,7 +340,7 @@ class EventDispatcherTest extends TestCase
->setConstructorArgs(array( ->setConstructorArgs(array(
$this->createComposerInstance(), $this->createComposerInstance(),
$io = $this->getMock('Composer\IO\IOInterface'), $io = $this->getMock('Composer\IO\IOInterface'),
new ProcessExecutor, new ProcessExecutor($io),
)) ))
->setMethods(array('getListeners')) ->setMethods(array('getListeners'))
->getMock(); ->getMock();
@ -354,9 +354,11 @@ class EventDispatcherTest extends TestCase
->method('writeError') ->method('writeError')
->with($this->equalTo('> echo foo')); ->with($this->equalTo('> echo foo'));
ob_start(); $io->expects($this->once())
->method('write')
->with($this->equalTo('foo'.PHP_EOL));
$dispatcher->dispatchScript(ScriptEvents::POST_INSTALL_CMD, false); $dispatcher->dispatchScript(ScriptEvents::POST_INSTALL_CMD, false);
$this->assertEquals('foo', trim(ob_get_clean()));
} }
public function testDispatcherOutputsErrorOnFailedCommand() public function testDispatcherOutputsErrorOnFailedCommand()

View File

@ -35,6 +35,17 @@ class ProcessExecutorTest extends TestCase
$this->assertEquals("foo".PHP_EOL, $output); $this->assertEquals("foo".PHP_EOL, $output);
} }
public function testUseIOIsNotNullAndIfNotCaptured()
{
$io = $this->getMock('Composer\IO\IOInterface');
$io->expects($this->once())
->method('write')
->with($this->equalTo('foo'.PHP_EOL));
$process = new ProcessExecutor($io);
$process->execute('echo foo');
}
public function testExecuteCapturesStderr() public function testExecuteCapturesStderr()
{ {
$process = new ProcessExecutor; $process = new ProcessExecutor;