1
0
Fork 0

Merge remote-tracking branch 'alcohol/output-script-command-in-verbose-mode'

pull/4217/head
Jordi Boggiano 2015-07-04 12:11:18 +01:00
commit 852e4f4e26
2 changed files with 35 additions and 12 deletions

View File

@ -172,7 +172,9 @@ class EventDispatcher
} }
} else { } else {
$args = implode(' ', array_map(array('Composer\Util\ProcessExecutor', 'escape'), $event->getArguments())); $args = implode(' ', array_map(array('Composer\Util\ProcessExecutor', 'escape'), $event->getArguments()));
if (0 !== ($exitCode = $this->process->execute($callable . ($args === '' ? '' : ' '.$args)))) { $exec = $callable . ($args === '' ? '' : ' '.$args);
$this->io->writeError(sprintf('> %s', $exec));
if (0 !== ($exitCode = $this->process->execute($exec))) {
$this->io->writeError(sprintf('<error>Script %s handling the %s event returned with an error</error>', $callable, $event->getName())); $this->io->writeError(sprintf('<error>Script %s handling the %s event returned with an error</error>', $callable, $event->getName()));
throw new \RuntimeException('Error Output: '.$this->process->getErrorOutput(), $exitCode); throw new \RuntimeException('Error Output: '.$this->process->getErrorOutput(), $exitCode);
@ -196,6 +198,8 @@ class EventDispatcher
{ {
$event = $this->checkListenerExpectedEvent(array($className, $methodName), $event); $event = $this->checkListenerExpectedEvent(array($className, $methodName), $event);
$this->io->writeError(sprintf('> %s::%s', $className, $methodName));
return $className::$methodName($event); return $className::$methodName($event);
} }

View File

@ -31,7 +31,11 @@ class EventDispatcherTest extends TestCase
'Composer\Test\EventDispatcher\EventDispatcherTest::call' 'Composer\Test\EventDispatcher\EventDispatcherTest::call'
), $io); ), $io);
$io->expects($this->once()) $io->expects($this->at(0))
->method('writeError')
->with('> Composer\Test\EventDispatcher\EventDispatcherTest::call');
$io->expects($this->at(1))
->method('writeError') ->method('writeError')
->with('<error>Script Composer\Test\EventDispatcher\EventDispatcherTest::call handling the post-install-cmd event terminated with an exception</error>'); ->with('<error>Script Composer\Test\EventDispatcher\EventDispatcherTest::call handling the post-install-cmd event terminated with an exception</error>');
@ -93,12 +97,11 @@ class EventDispatcherTest extends TestCase
$dispatcher = $this->getMockBuilder('Composer\EventDispatcher\EventDispatcher') $dispatcher = $this->getMockBuilder('Composer\EventDispatcher\EventDispatcher')
->setConstructorArgs(array( ->setConstructorArgs(array(
$this->getMock('Composer\Composer'), $this->getMock('Composer\Composer'),
$this->getMock('Composer\IO\IOInterface'), $io = $this->getMock('Composer\IO\IOInterface'),
$process, $process,
)) ))
->setMethods(array( ->setMethods(array(
'getListeners', 'getListeners',
'executeEventPhpScript',
)) ))
->getMock(); ->getMock();
@ -111,14 +114,22 @@ class EventDispatcherTest extends TestCase
'Composer\\Test\\EventDispatcher\\EventDispatcherTest::someMethod', 'Composer\\Test\\EventDispatcher\\EventDispatcherTest::someMethod',
'echo -n bar', 'echo -n bar',
); );
$dispatcher->expects($this->atLeastOnce()) $dispatcher->expects($this->atLeastOnce())
->method('getListeners') ->method('getListeners')
->will($this->returnValue($listeners)); ->will($this->returnValue($listeners));
$dispatcher->expects($this->once()) $io->expects($this->at(0))
->method('executeEventPhpScript') ->method('writeError')
->with('Composer\Test\EventDispatcher\EventDispatcherTest', 'someMethod') ->with($this->equalTo('> echo -n foo'));
->will($this->returnValue(true));
$io->expects($this->at(1))
->method('writeError')
->with($this->equalTo('> Composer\Test\EventDispatcher\EventDispatcherTest::someMethod'));
$io->expects($this->at(2))
->method('writeError')
->with($this->equalTo('> echo -n bar'));
$dispatcher->dispatchScript(ScriptEvents::POST_INSTALL_CMD, false); $dispatcher->dispatchScript(ScriptEvents::POST_INSTALL_CMD, false);
} }
@ -149,12 +160,12 @@ class EventDispatcherTest extends TestCase
); );
} }
public function testDispatcherOutputsCommands() public function testDispatcherOutputsCommand()
{ {
$dispatcher = $this->getMockBuilder('Composer\EventDispatcher\EventDispatcher') $dispatcher = $this->getMockBuilder('Composer\EventDispatcher\EventDispatcher')
->setConstructorArgs(array( ->setConstructorArgs(array(
$this->getMock('Composer\Composer'), $this->getMock('Composer\Composer'),
$this->getMock('Composer\IO\IOInterface'), $io = $this->getMock('Composer\IO\IOInterface'),
new ProcessExecutor, new ProcessExecutor,
)) ))
->setMethods(array('getListeners')) ->setMethods(array('getListeners'))
@ -165,6 +176,10 @@ class EventDispatcherTest extends TestCase
->method('getListeners') ->method('getListeners')
->will($this->returnValue($listener)); ->will($this->returnValue($listener));
$io->expects($this->once())
->method('writeError')
->with($this->equalTo('> echo foo'));
ob_start(); ob_start();
$dispatcher->dispatchScript(ScriptEvents::POST_INSTALL_CMD, false); $dispatcher->dispatchScript(ScriptEvents::POST_INSTALL_CMD, false);
$this->assertEquals('foo', trim(ob_get_clean())); $this->assertEquals('foo', trim(ob_get_clean()));
@ -187,7 +202,11 @@ class EventDispatcherTest extends TestCase
->method('getListeners') ->method('getListeners')
->will($this->returnValue($listener)); ->will($this->returnValue($listener));
$io->expects($this->once()) $io->expects($this->at(0))
->method('writeError')
->willReturn('> exit 1');
$io->expects($this->at(1))
->method('writeError') ->method('writeError')
->with($this->equalTo('<error>Script '.$code.' handling the post-install-cmd event returned with an error</error>')); ->with($this->equalTo('<error>Script '.$code.' handling the post-install-cmd event returned with an error</error>'));