Fix bundle commands are not available via find()
This commit is contained in:
parent
40dc73aa28
commit
dd69b8875d
|
@ -90,6 +90,16 @@ class Application extends BaseApplication
|
|||
return parent::doRun($input, $output);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function find($name)
|
||||
{
|
||||
$this->registerCommands();
|
||||
|
||||
return parent::find($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
|
|
@ -32,8 +32,7 @@ class ApplicationTest extends TestCase
|
|||
|
||||
public function testBundleCommandsAreRegistered()
|
||||
{
|
||||
$bundle = $this->getMock('Symfony\Component\HttpKernel\Bundle\Bundle');
|
||||
$bundle->expects($this->once())->method('registerCommands');
|
||||
$bundle = $this->createBundleMock(array());
|
||||
|
||||
$kernel = $this->getKernel(array($bundle), true);
|
||||
|
||||
|
@ -46,8 +45,7 @@ class ApplicationTest extends TestCase
|
|||
|
||||
public function testBundleCommandsAreRetrievable()
|
||||
{
|
||||
$bundle = $this->getMock('Symfony\Component\HttpKernel\Bundle\Bundle');
|
||||
$bundle->expects($this->once())->method('registerCommands');
|
||||
$bundle = $this->createBundleMock(array());
|
||||
|
||||
$kernel = $this->getKernel(array($bundle));
|
||||
|
||||
|
@ -60,47 +58,41 @@ class ApplicationTest extends TestCase
|
|||
|
||||
public function testBundleSingleCommandIsRetrievable()
|
||||
{
|
||||
$bundle = $this->getMock('Symfony\Component\HttpKernel\Bundle\Bundle');
|
||||
$bundle->expects($this->once())->method('registerCommands');
|
||||
$command = new Command('example');
|
||||
|
||||
$bundle = $this->createBundleMock(array($command));
|
||||
|
||||
$kernel = $this->getKernel(array($bundle));
|
||||
|
||||
$application = new Application($kernel);
|
||||
|
||||
$command = new Command('example');
|
||||
$application->add($command);
|
||||
|
||||
$this->assertSame($command, $application->get('example'));
|
||||
}
|
||||
|
||||
public function testBundleCommandCanBeFound()
|
||||
{
|
||||
$bundle = $this->getMock('Symfony\Component\HttpKernel\Bundle\Bundle');
|
||||
$bundle->expects($this->once())->method('registerCommands');
|
||||
$command = new Command('example');
|
||||
|
||||
$bundle = $this->createBundleMock(array($command));
|
||||
|
||||
$kernel = $this->getKernel(array($bundle));
|
||||
|
||||
$application = new Application($kernel);
|
||||
|
||||
$command = new Command('example');
|
||||
$application->add($command);
|
||||
|
||||
$this->assertSame($command, $application->find('example'));
|
||||
}
|
||||
|
||||
public function testBundleCommandCanBeFoundByAlias()
|
||||
{
|
||||
$bundle = $this->getMock('Symfony\Component\HttpKernel\Bundle\Bundle');
|
||||
$bundle->expects($this->once())->method('registerCommands');
|
||||
$command = new Command('example');
|
||||
$command->setAliases(array('alias'));
|
||||
|
||||
$bundle = $this->createBundleMock(array($command));
|
||||
|
||||
$kernel = $this->getKernel(array($bundle));
|
||||
|
||||
$application = new Application($kernel);
|
||||
|
||||
$command = new Command('example');
|
||||
$command->setAliases(array('alias'));
|
||||
$application->add($command);
|
||||
|
||||
$this->assertSame($command, $application->find('alias'));
|
||||
}
|
||||
|
||||
|
@ -167,4 +159,18 @@ class ApplicationTest extends TestCase
|
|||
|
||||
return $kernel;
|
||||
}
|
||||
|
||||
private function createBundleMock(array $commands)
|
||||
{
|
||||
$bundle = $this->getMock('Symfony\Component\HttpKernel\Bundle\Bundle');
|
||||
$bundle
|
||||
->expects($this->once())
|
||||
->method('registerCommands')
|
||||
->will($this->returnCallback(function (Application $application) use ($commands) {
|
||||
$application->addCommands($commands);
|
||||
}))
|
||||
;
|
||||
|
||||
return $bundle;
|
||||
}
|
||||
}
|
||||
|
|
Reference in New Issue