diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart index b9f052bbc24..194ef5cef2c 100644 --- a/packages/flutter_tools/lib/executable.dart +++ b/packages/flutter_tools/lib/executable.dart @@ -65,7 +65,9 @@ Future main(List args) async { (args.isNotEmpty && args.first == 'help') || (args.length == 1 && verbose); final bool muteCommandLogging = help || doctor; final bool verboseHelp = help && verbose; - final bool daemon = args.contains('daemon'); + final bool daemon = args.contains('daemon') || + (args.contains('--machine') && args.contains('run')) || + (args.contains('--machine') && args.contains('attach')); await runner.run(args, () => [ AnalyzeCommand( diff --git a/packages/flutter_tools/lib/src/base/logger.dart b/packages/flutter_tools/lib/src/base/logger.dart index f3277a6b065..075c234c180 100644 --- a/packages/flutter_tools/lib/src/base/logger.dart +++ b/packages/flutter_tools/lib/src/base/logger.dart @@ -783,6 +783,13 @@ class SilentStatus extends Status { timeoutConfiguration: timeoutConfiguration, stopwatch: stopwatch, ); + + @override + void finish() { + if (onFinish != null) { + onFinish(); + } + } } /// Constructor writes [message] to [stdout]. On [cancel] or [stop], will call diff --git a/packages/flutter_tools/lib/src/commands/attach.dart b/packages/flutter_tools/lib/src/commands/attach.dart index e9c0adaeaef..6a1b20ad704 100644 --- a/packages/flutter_tools/lib/src/commands/attach.dart +++ b/packages/flutter_tools/lib/src/commands/attach.dart @@ -207,7 +207,9 @@ class AttachCommand extends FlutterCommand { ? Daemon( stdinCommandStream, stdoutCommandResponse, - notifyingLogger: NotifyingLogger(verbose: globals.logger.isVerbose), + notifyingLogger: (globals.logger is NotifyingLogger) + ? globals.logger as NotifyingLogger + : NotifyingLogger(verbose: globals.logger.isVerbose), logToStdout: true, ) : null; diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index cfc2dd0822b..ceba8ef0794 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart @@ -415,7 +415,9 @@ class RunCommand extends RunCommandBase { final Daemon daemon = Daemon( stdinCommandStream, stdoutCommandResponse, - notifyingLogger: NotifyingLogger(verbose: globals.logger.isVerbose), + notifyingLogger: (globals.logger is NotifyingLogger) + ? globals.logger as NotifyingLogger + : NotifyingLogger(verbose: globals.logger.isVerbose), logToStdout: true, ); AppInstance app; diff --git a/packages/flutter_tools/test/integration.shard/command_output_test.dart b/packages/flutter_tools/test/integration.shard/command_output_test.dart index 408f30ad396..086323deced 100644 --- a/packages/flutter_tools/test/integration.shard/command_output_test.dart +++ b/packages/flutter_tools/test/integration.shard/command_output_test.dart @@ -35,4 +35,26 @@ void main() { // Only printed by verbose tool. expect(result.stdout, isNot(contains('exiting with code 0'))); }); + + test('flutter run --machine uses NotifyingLogger', () async { + final String flutterBin = globals.fs.path.join(getFlutterRoot(), 'bin', 'flutter'); + final ProcessResult result = await const LocalProcessManager().run([ + flutterBin, + 'run', + '--machine', + ]); + + expect(result.stdout, isEmpty); + }); + + test('flutter attach --machine uses NotifyingLogger', () async { + final String flutterBin = globals.fs.path.join(getFlutterRoot(), 'bin', 'flutter'); + final ProcessResult result = await const LocalProcessManager().run([ + flutterBin, + 'attach', + '--machine', + ]); + + expect(result.stdout, isEmpty); + }); }