123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
- use PHPUnit\Framework\TestCase;
- use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConsoleCommandPass;
- use Symfony\Component\Console\Command\Command;
- use Symfony\Component\DependencyInjection\ContainerBuilder;
- use Symfony\Component\DependencyInjection\Definition;
- use Symfony\Component\HttpKernel\Bundle\Bundle;
- class AddConsoleCommandPassTest extends TestCase
- {
- public function testProcess()
- {
- $container = new ContainerBuilder();
- $container->addCompilerPass(new AddConsoleCommandPass());
- $container->setParameter('my-command.class', 'Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\MyCommand');
- $definition = new Definition('%my-command.class%');
- $definition->addTag('console.command');
- $container->setDefinition('my-command', $definition);
- $container->compile();
- $alias = 'console.command.symfony_bundle_frameworkbundle_tests_dependencyinjection_compiler_mycommand';
- $this->assertTrue($container->hasAlias($alias));
- $this->assertSame('my-command', (string) $container->getAlias($alias));
- $this->assertTrue($container->hasParameter('console.command.ids'));
- $this->assertSame(array('my-command'), $container->getParameter('console.command.ids'));
- }
- /**
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage The service "my-command" tagged "console.command" must be public.
- */
- public function testProcessThrowAnExceptionIfTheServiceIsNotPublic()
- {
- $container = new ContainerBuilder();
- $container->addCompilerPass(new AddConsoleCommandPass());
- $definition = new Definition('Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\MyCommand');
- $definition->addTag('console.command');
- $definition->setPublic(false);
- $container->setDefinition('my-command', $definition);
- $container->compile();
- }
- /**
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage The service "my-command" tagged "console.command" must not be abstract.
- */
- public function testProcessThrowAnExceptionIfTheServiceIsAbstract()
- {
- $container = new ContainerBuilder();
- $container->addCompilerPass(new AddConsoleCommandPass());
- $definition = new Definition('Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\MyCommand');
- $definition->addTag('console.command');
- $definition->setAbstract(true);
- $container->setDefinition('my-command', $definition);
- $container->compile();
- }
- /**
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage The service "my-command" tagged "console.command" must be a subclass of "Symfony\Component\Console\Command\Command".
- */
- public function testProcessThrowAnExceptionIfTheServiceIsNotASubclassOfCommand()
- {
- $container = new ContainerBuilder();
- $container->addCompilerPass(new AddConsoleCommandPass());
- $definition = new Definition('SplObjectStorage');
- $definition->addTag('console.command');
- $container->setDefinition('my-command', $definition);
- $container->compile();
- }
- }
- class MyCommand extends Command
- {
- }
- class ExtensionPresentBundle extends Bundle
- {
- }
|