Skip to content

Commit

Permalink
Fix command input handling
Browse files Browse the repository at this point in the history
  • Loading branch information
stayallive committed Oct 12, 2022
1 parent fd85d9b commit a4bf43d
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 9 deletions.
26 changes: 19 additions & 7 deletions src/Sentry/Laravel/EventHandler.php
Expand Up @@ -27,6 +27,9 @@
use Sentry\Breadcrumb;
use Sentry\SentrySdk;
use Sentry\State\Scope;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Input\InputInterface;

class EventHandler
{
Expand Down Expand Up @@ -568,9 +571,9 @@ protected function commandStartingHandler(CommandStarting $event)
Breadcrumb::TYPE_DEFAULT,
'artisan.command',
'Starting Artisan command: ' . $event->command,
method_exists($event->input, '__toString') ? [
'input' => (string)$event->input,
] : []
[
'input' => $this->extractCommandInput($event->input),
]
));
}
}
Expand All @@ -588,11 +591,10 @@ protected function commandFinishedHandler(CommandFinished $event)
Breadcrumb::TYPE_DEFAULT,
'artisan.command',
'Finished Artisan command: ' . $event->command,
array_merge([
[
'exit' => $event->exitCode,
], method_exists($event->input, '__toString') ? [
'input' => (string)$event->input,
] : [])
'input' => $this->extractCommandInput($event->input),
],
));
}

Expand All @@ -604,6 +606,16 @@ protected function commandFinishedHandler(CommandFinished $event)
Integration::flushEvents();
}

/** @return string|null */
private function extractCommandInput(InputInterface $input)
{
if ($input instanceof ArgvInput) {
return (string)$input;
}

return null;
}

protected function octaneRequestReceivedHandler(Octane\RequestReceived $event): void
{
$this->prepareScopeForOctane();
Expand Down
4 changes: 2 additions & 2 deletions test/Sentry/CommandInfoInBreadcrumbsTest.php
Expand Up @@ -3,7 +3,7 @@
namespace Sentry\Laravel\Tests;

use Illuminate\Console\Events\CommandStarting;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Output\BufferedOutput;

class CommandInfoInBreadcrumbsTest extends SentryLaravelTestCase
Expand Down Expand Up @@ -55,7 +55,7 @@ private function dispatchCommandStartEvent()
CommandStarting::class,
new CommandStarting(
'test:command',
new ArrayInput(['--foo' => 'bar']),
new ArgvInput(['artisan', '--foo=bar']),
new BufferedOutput()
)
);
Expand Down

0 comments on commit a4bf43d

Please sign in to comment.