Show Xcode workspace clean output with verbose flag (#52860)
diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart index 5640105..2fe79ba 100644 --- a/packages/flutter_tools/lib/executable.dart +++ b/packages/flutter_tools/lib/executable.dart
@@ -79,7 +79,7 @@ AttachCommand(verboseHelp: verboseHelp), BuildCommand(verboseHelp: verboseHelp), ChannelCommand(verboseHelp: verboseHelp), - CleanCommand(), + CleanCommand(verbose: verbose), ConfigCommand(verboseHelp: verboseHelp), CreateCommand(), DaemonCommand(hidden: !verboseHelp),
diff --git a/packages/flutter_tools/lib/src/commands/clean.dart b/packages/flutter_tools/lib/src/commands/clean.dart index 6c23d45..fa2734a 100644 --- a/packages/flutter_tools/lib/src/commands/clean.dart +++ b/packages/flutter_tools/lib/src/commands/clean.dart
@@ -15,10 +15,14 @@ import '../runner/flutter_command.dart'; class CleanCommand extends FlutterCommand { - CleanCommand() { + CleanCommand({ + bool verbose = false, + }) : _verbose = verbose { requiresPubspecYaml(); } + final bool _verbose; + @override final String name = 'clean'; @@ -69,7 +73,7 @@ final Directory xcodeWorkspace = xcodeProject.xcodeWorkspace; final XcodeProjectInfo projectInfo = await globals.xcodeProjectInterpreter.getInfo(xcodeWorkspace.parent.path); for (final String scheme in projectInfo.schemes) { - await globals.xcodeProjectInterpreter.cleanWorkspace(xcodeWorkspace.path, scheme); + await globals.xcodeProjectInterpreter.cleanWorkspace(xcodeWorkspace.path, scheme, verbose: _verbose); } } on Exception catch (error) { globals.printTrace('Could not clean Xcode workspace: $error');
diff --git a/packages/flutter_tools/lib/src/ios/xcodeproj.dart b/packages/flutter_tools/lib/src/ios/xcodeproj.dart index 0c8b643..09081ec 100644 --- a/packages/flutter_tools/lib/src/ios/xcodeproj.dart +++ b/packages/flutter_tools/lib/src/ios/xcodeproj.dart
@@ -364,14 +364,15 @@ } } - Future<void> cleanWorkspace(String workspacePath, String scheme) async { + Future<void> cleanWorkspace(String workspacePath, String scheme, { bool verbose = false }) async { await _processUtils.run(<String>[ _executable, '-workspace', workspacePath, '-scheme', scheme, - '-quiet', + if (!verbose) + '-quiet', 'clean', ...environmentVariablesAsXcodeBuildSettings(_platform) ], workingDirectory: _fileSystem.currentDirectory.path);
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart index aeaabf5..38aecdd 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart
@@ -72,7 +72,18 @@ expect(projectUnderTest.macos.ephemeralDirectory.existsSync(), isFalse); expect(projectUnderTest.windows.ephemeralDirectory.existsSync(), isFalse); - verify(mockXcodeProjectInterpreter.cleanWorkspace(any, 'Runner')).called(2); + verify(mockXcodeProjectInterpreter.cleanWorkspace(any, 'Runner', verbose: false)).called(2); + }, overrides: <Type, Generator>{ + FileSystem: () => fs, + ProcessManager: () => FakeProcessManager.any(), + Xcode: () => mockXcode, + XcodeProjectInterpreter: () => mockXcodeProjectInterpreter, + }); + + testUsingContext('$CleanCommand cleans Xcode verbosely', () async { + when(mockXcode.isInstalledAndMeetsVersionCheck).thenReturn(true); + await CleanCommand(verbose: true).runCommand(); + verify(mockXcodeProjectInterpreter.cleanWorkspace(any, 'Runner', verbose: true)).called(2); }, overrides: <Type, Generator>{ FileSystem: () => fs, ProcessManager: () => FakeProcessManager.any(),
diff --git a/packages/flutter_tools/test/src/context.dart b/packages/flutter_tools/test/src/context.dart index ab61de9..2680cfd 100644 --- a/packages/flutter_tools/test/src/context.dart +++ b/packages/flutter_tools/test/src/context.dart
@@ -401,7 +401,7 @@ } @override - Future<void> cleanWorkspace(String workspacePath, String scheme) { + Future<void> cleanWorkspace(String workspacePath, String scheme, { bool verbose = false }) { return null; }