From 00336c5b1c9c60a6f7138731b12915cba84e0de0 Mon Sep 17 00:00:00 2001 From: Bryan Oltman Date: Fri, 31 Jan 2025 10:14:26 -0500 Subject: [PATCH 1/3] chore: clean up macOS preview log output --- .../lib/src/commands/preview_command.dart | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/packages/shorebird_cli/lib/src/commands/preview_command.dart b/packages/shorebird_cli/lib/src/commands/preview_command.dart index a46ca661b..47aad284d 100644 --- a/packages/shorebird_cli/lib/src/commands/preview_command.dart +++ b/packages/shorebird_cli/lib/src/commands/preview_command.dart @@ -550,8 +550,38 @@ This is only applicable when previewing Android releases.''', final logs = await open.newApplication(path: appDirectory.path); final completer = Completer(); + // Filter out extra noise from the logs. + final logFilters = [ + RegExp(r'\[com\.apple.*\]'), + RegExp(r'\(RunningBoardServices\)'), + RegExp(r'\(CoreFoundation\)'), + RegExp(r'\(TCC\)'), + RegExp(r'\(Metal\)'), + RegExp('^Timestamp'), + RegExp('^Filtering the log data'), + ]; + + final prefixRegex = RegExp( + r'^[\d-]+\W+[\d:\.]+\W+\w+\W+\w+\[[\da-f]+:[\da-f]+\]', + ); + + // Removes the log prefix from the log line. + // Example log line: + // ignore: lines_longer_than_80_chars + // 2025-01-31 09:53:22.889 Df macos_sandbox[22535:1d268] [dev.shorebird:updater::cache::patch_manager] [shorebird] No public key provided, skipping signature verification + String removeLogPrefix(String line) { + return line.trim().replaceFirst(prefixRegex, '').trim(); + } + logs.listen( - (log) => logger.info(utf8.decode(log)), + (log) { + final logLine = utf8.decode(log); + if (logFilters.any((filter) => filter.hasMatch(logLine))) { + return; + } + + logger.info(removeLogPrefix(logLine)); + }, onDone: completer.complete, ); From bc013160a3b0690fbf23e8b5543d3d6e3fbc5d4a Mon Sep 17 00:00:00 2001 From: Bryan Oltman Date: Fri, 31 Jan 2025 10:26:25 -0500 Subject: [PATCH 2/3] test --- .../lib/src/commands/preview_command.dart | 7 ++-- .../src/commands/preview_command_test.dart | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/packages/shorebird_cli/lib/src/commands/preview_command.dart b/packages/shorebird_cli/lib/src/commands/preview_command.dart index 47aad284d..60ce7e407 100644 --- a/packages/shorebird_cli/lib/src/commands/preview_command.dart +++ b/packages/shorebird_cli/lib/src/commands/preview_command.dart @@ -561,14 +561,13 @@ This is only applicable when previewing Android releases.''', RegExp('^Filtering the log data'), ]; - final prefixRegex = RegExp( - r'^[\d-]+\W+[\d:\.]+\W+\w+\W+\w+\[[\da-f]+:[\da-f]+\]', - ); - // Removes the log prefix from the log line. // Example log line: // ignore: lines_longer_than_80_chars // 2025-01-31 09:53:22.889 Df macos_sandbox[22535:1d268] [dev.shorebird:updater::cache::patch_manager] [shorebird] No public key provided, skipping signature verification + final prefixRegex = RegExp( + r'^[\d-]+\W+[\d:\.]+\W+\w+\W+\w+\[[\da-f]+:[\da-f]+\]', + ); String removeLogPrefix(String line) { return line.trim().replaceFirst(prefixRegex, '').trim(); } diff --git a/packages/shorebird_cli/test/src/commands/preview_command_test.dart b/packages/shorebird_cli/test/src/commands/preview_command_test.dart index 48b44d13c..892a9937d 100644 --- a/packages/shorebird_cli/test/src/commands/preview_command_test.dart +++ b/packages/shorebird_cli/test/src/commands/preview_command_test.dart @@ -2146,6 +2146,46 @@ channel: ${DeploymentTrack.staging.channel} verify(() => logger.info('hello world')).called(1); }); }); + + group('log output', () { + final rawLogOutput = ''' +2025-01-31 10:15:29.807 Df macos_sandbox[33557:2cc3d] [com.apple.network:] networkd_settings_read_from_file initialized networkd settings by reading plist directly + +2025-01-31 10:15:29.807 Df macos_sandbox[33557:2cc3d] [com.apple.network:path] nw_path_libinfo_path_check [5E11C960-BB0A-456A-8024-620DAB6CCF17 Hostname#941210b4:0 tcp, legacy-socket, attribution: developer] + libinfo check path: satisfied (Path is satisfied), interface: en0, ipv4, dns + +2025-01-31 10:15:29.808 Df macos_sandbox[33557:2cc12] [dev.shorebird:updater::updater] [shorebird] Reporting successful launch. +''' + .split('\n'); + + setUp(() { + setupMacosShorebirdYaml(); + when(() => open.newApplication(path: any(named: 'path'))).thenAnswer( + (_) async => Stream.fromIterable(rawLogOutput.map(utf8.encode)), + ); + }); + + test('removes noisy lines from log output', () async { + final result = await runWithOverrides(command.run); + expect(result, equals(ExitCode.success.code)); + + verify( + () => logger.info( + '''[dev.shorebird:updater::updater] [shorebird] Reporting successful launch.''', + ), + ).called(1); + verifyNever( + () => logger.info( + any(that: contains('networkd_settings_read_from_file')), + ), + ); + verifyNever( + () => logger.info( + any(that: contains('nw_path_libinfo_path_check')), + ), + ); + }); + }); }); group('windows', () { From 61cc182d65ff86f98a42e5168d34e6898a6c0cdb Mon Sep 17 00:00:00 2001 From: Bryan Oltman Date: Fri, 31 Jan 2025 10:28:06 -0500 Subject: [PATCH 3/3] cspell --- .../shorebird_cli/test/src/commands/preview_command_test.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/shorebird_cli/test/src/commands/preview_command_test.dart b/packages/shorebird_cli/test/src/commands/preview_command_test.dart index 892a9937d..2af074cff 100644 --- a/packages/shorebird_cli/test/src/commands/preview_command_test.dart +++ b/packages/shorebird_cli/test/src/commands/preview_command_test.dart @@ -1,3 +1,4 @@ +// cspell:words libinfo networkd import 'dart:async'; import 'dart:convert'; import 'dart:io' hide Platform;