From 027e1be2c565ff1b873a3e2b0891741ad9f5aa52 Mon Sep 17 00:00:00 2001 From: borjandev <64651636+borjandev@users.noreply.github.com> Date: Wed, 17 Apr 2024 19:09:17 +0200 Subject: [PATCH] fix(shorebird_cli): log stack trace only when using `--verbose` (#1918) Co-authored-by: Felix Angelov --- packages/shorebird_cli/lib/src/command_runner.dart | 4 ++-- .../shorebird_cli/test/src/command_runner_test.dart | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/shorebird_cli/lib/src/command_runner.dart b/packages/shorebird_cli/lib/src/command_runner.dart index e8904520..2825734d 100644 --- a/packages/shorebird_cli/lib/src/command_runner.dart +++ b/packages/shorebird_cli/lib/src/command_runner.dart @@ -135,7 +135,7 @@ class ShorebirdCliCommandRunner extends CompletionCommandRunner { // exit with an error code logger ..err(e.message) - ..err('$stackTrace') + ..detail('$stackTrace') ..info('') ..info(usage); return ExitCode.usage.code; @@ -210,7 +210,7 @@ Run ${lightCyan.wrap('shorebird upgrade')} to upgrade.'''); } catch (error, stackTrace) { logger ..err('$error') - ..info('$stackTrace'); + ..detail('$stackTrace'); exitCode = ExitCode.software.code; } } diff --git a/packages/shorebird_cli/test/src/command_runner_test.dart b/packages/shorebird_cli/test/src/command_runner_test.dart index ab7db98d..a16013b8 100644 --- a/packages/shorebird_cli/test/src/command_runner_test.dart +++ b/packages/shorebird_cli/test/src/command_runner_test.dart @@ -272,6 +272,18 @@ Run ${lightCyan.wrap('shorebird upgrade')} to upgrade.'''), }); group('on command failure', () { + test('logs a stack trace using detail', () async { + // This will fail due to the release android command missing scoped + // dependencies. + // Note: the --verbose flag is here for illustrative purposes only. + // Because logger is a mock, setting the log level in code does + // nothing. + await runWithOverrides( + () => commandRunner.run(['release', 'android', '--verbose']), + ); + verify(() => logger.detail(any(that: contains('#0')))).called(1); + }); + group('when running with --verbose', () { setUp(() { when(() => logger.level).thenReturn(Level.verbose);