Skip to content

Commit 2da58e6

Browse files
committed
Fixed support for Kernel as command
1 parent a645ccc commit 2da58e6

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

Tests/Kernel/KernelCommand.php

Lines changed: 26 additions & 0 deletions
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 <[email protected]>
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+
}

Tests/Kernel/MicroKernelTraitTest.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@
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\Attribute\AsCommand;
19+
use Symfony\Component\Console\Input\ArrayInput;
20+
use Symfony\Component\Console\Output\BufferedOutput;
1721
use Symfony\Component\DependencyInjection\ContainerBuilder;
1822
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
1923
use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
@@ -152,6 +156,23 @@ public function testSimpleKernel()
152156
$this->assertSame('Hello World!', $response->getContent());
153157
}
154158

159+
public function testKernelCommand()
160+
{
161+
if (!property_exists(AsCommand::class, 'help')) {
162+
$this->markTestSkipped('Invokable command no available.');
163+
}
164+
165+
$kernel = $this->kernel = new KernelCommand('kernel_command');
166+
$application = new Application($kernel);
167+
168+
$input = new ArrayInput(['command' => 'kernel:hello']);
169+
$output = new BufferedOutput();
170+
171+
$this->assertTrue($application->has('kernel:hello'));
172+
$this->assertSame(0, $application->doRun($input, $output));
173+
$this->assertSame('Hello Kernel!', $output->fetch());
174+
}
175+
155176
public function testDefaultKernel()
156177
{
157178
$kernel = $this->kernel = new DefaultKernel('test', false);

0 commit comments

Comments
 (0)