55import 'dart:async' ;
66
77import 'package:file/memory.dart' ;
8+ import 'package:flutter_tools/executable.dart' ;
89import 'package:flutter_tools/runner.dart' as runner;
910import 'package:flutter_tools/src/artifacts.dart' ;
1011import 'package:flutter_tools/src/base/bot_detector.dart' ;
@@ -17,6 +18,7 @@ import 'package:flutter_tools/src/base/platform.dart';
1718import 'package:flutter_tools/src/base/process.dart' ;
1819import 'package:flutter_tools/src/base/user_messages.dart' ;
1920import 'package:flutter_tools/src/cache.dart' ;
21+ import 'package:flutter_tools/src/commands/devices.dart' ;
2022import 'package:flutter_tools/src/globals.dart' as globals;
2123import 'package:flutter_tools/src/reporting/crash_reporting.dart' ;
2224import 'package:flutter_tools/src/runner/flutter_command.dart' ;
@@ -576,6 +578,47 @@ void main() {
576578 BotDetector : () => const FakeBotDetector (true ),
577579 },
578580 );
581+
582+ testUsingContext (
583+ 'do not print download messages when --machine is provided' ,
584+ () async {
585+ // Regression test for https://github.com/flutter/flutter/issues/154119.
586+ final stdio = FakeStdio ();
587+ await runner.run (
588+ < String > ['devices' , '--machine' ],
589+ () => < FlutterCommand > [DevicesCommand ()],
590+ // This flutterVersion disables crash reporting.
591+ flutterVersion: '[user-branch]/' ,
592+ shutdownHooks: ShutdownHooks (),
593+ overrides: {
594+ Logger : () {
595+ final loggerFactory = LoggerFactory (
596+ outputPreferences: globals.outputPreferences,
597+ terminal: globals.terminal,
598+ stdio: stdio,
599+ );
600+ return loggerFactory.createLogger (
601+ daemon: false ,
602+ // This is set to true when --machine is detected as an argument in
603+ // executable.dart.
604+ machine: true ,
605+ verbose: false ,
606+ prefixedErrors: false ,
607+ windows: globals.platform.isWindows,
608+ );
609+ },
610+ },
611+ );
612+ expect (stdio.writtenToStdout.join (), isNot (contains ('Downloading' )));
613+ expect (stdio.writtenToStderr.join (), isNot (contains ('Downloading' )));
614+ },
615+ overrides: < Type , Generator > {
616+ Cache : () => FakeCache (),
617+ FileSystem : () => MemoryFileSystem .test (),
618+ ProcessManager : () => FakeProcessManager .any (),
619+ BotDetector : () => const FakeBotDetector (true ),
620+ },
621+ );
579622 });
580623
581624 group ('unified_analytics' , () {
@@ -822,3 +865,16 @@ class _ErrorOnCanRunFakeProcessManager extends Fake implements FakeProcessManage
822865 return delegate.canRun (executable, workingDirectory: workingDirectory);
823866 }
824867}
868+
869+ class FakeCache extends Fake implements Cache {
870+ @override
871+ Future <void > lock () async {}
872+
873+ @override
874+ void releaseLock () {}
875+
876+ @override
877+ Future <void > updateAll (Set <DevelopmentArtifact > requiredArtifacts, {bool offline = false }) async {
878+ globals.logger.startProgress ('Downloading package Foo' ).stop ();
879+ }
880+ }
0 commit comments