Skip to content

Commit

Permalink
Add support for Application::setCatchErrors in symfony 6.4+, refs sym…
Browse files Browse the repository at this point in the history
  • Loading branch information
Seldaek committed Jul 28, 2023
1 parent ff70ab7 commit f4738d9
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/Composer/Console/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@ class Application extends BaseApplication

public function __construct(string $name = 'Composer', string $version = '')
{
if (method_exists($this, 'setCatchErrors')) {
$this->setCatchErrors(true);
}

static $shutdownRegistered = false;
if ($version === '') {
$version = Composer::getVersion();
Expand Down Expand Up @@ -395,9 +399,10 @@ function_exists('php_uname') ? php_uname('s') . ' / ' . php_uname('r') : 'Unknow

$this->hintCommonErrors($e, $output);

// symfony/console does not handle \Error subtypes so we have to renderThrowable ourselves
// symfony/console <6.4 does not handle \Error subtypes so we have to renderThrowable ourselves
// instead of rethrowing those for consumption by the parent class
if (!$e instanceof \Exception) {
// can be removed when Composer supports PHP 8.1+
if (!method_exists($this, 'setCatchErrors') && !$e instanceof \Exception) {
if ($output instanceof ConsoleOutputInterface) {
$this->renderThrowable($e, $output->getErrorOutput());
} else {
Expand Down
3 changes: 3 additions & 0 deletions src/Composer/EventDispatcher/EventDispatcher.php
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,9 @@ protected function doDispatch(Event $event)

$app = new Application();
$app->setCatchExceptions(false);
if (method_exists($app, 'setCatchErrors')) {
$app->setCatchErrors(false);
}
$app->setAutoExit(false);
$cmd = new $className($event->getName());
$app->add($cmd);
Expand Down
3 changes: 3 additions & 0 deletions tests/Composer/Test/DocumentationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ public static function provideCommandCases(): \Generator
{
$application = new Application();
$application->setAutoExit(false);
if (method_exists($application, 'setCatchErrors')) {
$application->setCatchErrors(false);
}
$application->setCatchExceptions(false);

$description = new ApplicationDescription($application);
Expand Down
3 changes: 3 additions & 0 deletions tests/Composer/Test/TestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,9 @@ public function getApplicationTester(): ApplicationTester
$application = new Application();
$application->setAutoExit(false);
$application->setCatchExceptions(false);
if (method_exists($application, 'setCatchErrors')) {
$application->setCatchErrors(false);
}

return new ApplicationTester($application);
}
Expand Down

0 comments on commit f4738d9

Please sign in to comment.