8000 Fixed support for Kernel as command · symfony/symfony@d92e21b · GitHub
[go: up one dir, main page]

Skip to content

Commit d92e21b

Browse files
committed
Fixed support for Kernel as command
1 parent cf5270c commit d92e21b

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Bundle\FrameworkBundle\Tests\Kernel;
13+
14+
use Symfony\Component\Console\Attribute\AsCommand;
15+
use Symfony\Component\Console\Output\OutputInterface;
16+
17+
#[AsCommand(name: 'kernel:hello')]
18+
final class KernelCommand extends MinimalKernel
19+
{
20+
public function __invoke(OutputInterface $output): int
21+
{
22+
$output->write('Hello Kernel!');
23+
24+
return 0;
25+
}
26+
}

src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/MicroKernelTraitTest.php

+16
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Psr\Log\NullLogger;
16+
use Symfony\Bundle\FrameworkBundle\Console\Application;
1617
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
18+
use Symfony\Component\Console\Input\ArrayInput;
19+
use Symfony\Component\Console\Output\BufferedOutput;
1720
use Symfony\Component\DependencyInjection\ContainerBuilder;
1821
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
1922
use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
@@ -152,6 +155,19 @@ public function testSimpleKernel()
152155
$this->assertSame('Hello World!', $response->getContent());
153156
}
154157

158+
public function testKernelCommand()
159+
{
160+
$kernel = $this->kernel = new KernelCommand('kernel_command');
161+
$application = new Application($kernel);
162+
163+
$input = new ArrayInput(['command' => 'kernel:hello']);
164+
$output = new BufferedOutput();
165+
166+
$this->assertTrue($application->has('kernel:hello'));
167+
$this->assertSame(0, $application->doRun($input, $output));
168+
$this->assertSame('Hello Kernel!', $output->fetch());
169+
}
170+
155171
public function testDefaultKernel()
156172
{
157173
$kernel = $this->kernel = new DefaultKernel('test', false);

src/Symfony/Component/Console/DependencyInjection/AddConsoleCommandPass.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public function process(ContainerBuilder $container): void
3939

4040
foreach ($commandServices as $id => $tags) {
4141
$definition = $container->getDefinition($id);
42-
$definition->addTag('container.no_preload');
4342
$class = $container->getParameterBag()->resolveValue($definition->getClass());
4443

4544
if (!$r = $container->getReflectionClass($class)) {
@@ -58,6 +57,8 @@ public function process(ContainerBuilder $container): void
5857
$invokableRef = null;
5958
}
6059

60+
$definition->addTag('container.no_preload');
61+
6162
/** @var AsCommand|null $attribute */
6263
$attribute = ($r->getAttributes(AsCommand::class)[0] ?? null)?->newInstance();
6364

0 commit comments

Comments
 (0)
0