diff --git a/src/App/Adapters/ConsoleAppAdapter.php b/src/App/Adapters/ConsoleAppAdapter.php index 2533c6241..4a5719289 100644 --- a/src/App/Adapters/ConsoleAppAdapter.php +++ b/src/App/Adapters/ConsoleAppAdapter.php @@ -17,7 +17,6 @@ namespace Quantum\App\Adapters; use Symfony\Component\Console\Output\ConsoleOutput; -use Quantum\App\Exceptions\StopExecutionException; use Symfony\Component\Console\Input\ArgvInput; use Quantum\App\Stages\SetupErrorHandlerStage; use Quantum\App\Stages\LoadEnvironmentStage; @@ -85,17 +84,13 @@ public function __construct(AppContext $context) */ public function start(): ?int { - try { - $this->registerCoreCommands(); - $this->registerAppCommands(); + $this->registerCoreCommands(); + $this->registerAppCommands(); - $this->validateCommand(); + $this->validateCommand(); - $exitCode = $this->application->run($this->input, $this->output); + $exitCode = $this->application->run($this->input, $this->output); - stop(null, $exitCode); - } catch (StopExecutionException $exception) { - return $exception->getCode() ?: ExitCode::SUCCESS; - } + return $exitCode ?: ExitCode::SUCCESS; } } diff --git a/tests/Unit/App/Adapters/ConsoleAppAdapterTest.php b/tests/Unit/App/Adapters/ConsoleAppAdapterTest.php index 21911c9a6..7107e1b29 100644 --- a/tests/Unit/App/Adapters/ConsoleAppAdapterTest.php +++ b/tests/Unit/App/Adapters/ConsoleAppAdapterTest.php @@ -44,6 +44,29 @@ public function testConsoleAppAdapterStartSuccessfully(): void $this->assertEquals(0, $result); } + public function testConsoleAppAdapterReturnsNonZeroExitCode(): void + { + $_SERVER['argv'] = ['qt', 'list', '--quiet']; + + $applicationMock = Mockery::mock(Application::class)->makePartial(); + $applicationMock->shouldReceive('getName')->andReturn('Qt Console Application'); + $applicationMock->shouldReceive('run')->andReturn(2); + + $consoleAppAdapter = Mockery::mock(ConsoleAppAdapter::class) + ->shouldAllowMockingProtectedMethods() + ->makePartial(); + + $consoleAppAdapter + ->shouldReceive('createApplication') + ->andReturn($applicationMock); + + $consoleAppAdapter->__construct($this->createContext()); + + $result = $consoleAppAdapter->start(); + + $this->assertEquals(2, $result); + } + public function testConsoleAppAdapterStartFails(): void { $_SERVER['argv'] = ['qt', 'unknown', '--quiet'];