Unverified Commit 39c735f4 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] correctly forward error only stdout in non-verbose modes (#63815)

parent 2122fe1f
...@@ -301,7 +301,7 @@ ...@@ -301,7 +301,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh\ntouch Flutter/ephemeral/tripwire\n"; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
}; };
36C290D58D35783923B6B124 /* [CP] Check Pods Manifest.lock */ = { 36C290D58D35783923B6B124 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
......
...@@ -14,6 +14,10 @@ import '../ios/xcodeproj.dart'; ...@@ -14,6 +14,10 @@ import '../ios/xcodeproj.dart';
import '../project.dart'; import '../project.dart';
import 'cocoapod_utils.dart'; import 'cocoapod_utils.dart';
/// When run in -quiet mode, Xcode only prints from the underlying tasks to stdout.
/// Passing this regexp to trace moves the stdout output to stderr.
final RegExp _anyOutput = RegExp('.*');
/// Builds the macOS project through xcodebuild. /// Builds the macOS project through xcodebuild.
// TODO(jonahwilliams): refactor to share code with the existing iOS code. // TODO(jonahwilliams): refactor to share code with the existing iOS code.
Future<void> buildMacOS({ Future<void> buildMacOS({
...@@ -87,10 +91,15 @@ Future<void> buildMacOS({ ...@@ -87,10 +91,15 @@ Future<void> buildMacOS({
'OBJROOT=${globals.fs.path.join(flutterBuildDir.absolute.path, 'Build', 'Intermediates.noindex')}', 'OBJROOT=${globals.fs.path.join(flutterBuildDir.absolute.path, 'Build', 'Intermediates.noindex')}',
'SYMROOT=${globals.fs.path.join(flutterBuildDir.absolute.path, 'Build', 'Products')}', 'SYMROOT=${globals.fs.path.join(flutterBuildDir.absolute.path, 'Build', 'Products')}',
if (verboseLogging) if (verboseLogging)
'VERBOSE_SCRIPT_LOGGING=YES', 'VERBOSE_SCRIPT_LOGGING=YES'
else
'-quiet',
'COMPILER_INDEX_STORE_ENABLE=NO', 'COMPILER_INDEX_STORE_ENABLE=NO',
...environmentVariablesAsXcodeBuildSettings(globals.platform) ...environmentVariablesAsXcodeBuildSettings(globals.platform)
], trace: true); ],
trace: true,
stdoutErrorMatcher: verboseLogging ? null : _anyOutput,
);
} finally { } finally {
status.cancel(); status.cancel();
} }
......
...@@ -280,7 +280,7 @@ ...@@ -280,7 +280,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh\ntouch Flutter/ephemeral/tripwire\n"; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
}; };
/* End PBXShellScriptBuildPhase section */ /* End PBXShellScriptBuildPhase section */
......
...@@ -86,7 +86,9 @@ void main() { ...@@ -86,7 +86,9 @@ void main() {
'OBJROOT=${fileSystem.path.join(flutterBuildDir.absolute.path, 'Build', 'Intermediates.noindex')}', 'OBJROOT=${fileSystem.path.join(flutterBuildDir.absolute.path, 'Build', 'Intermediates.noindex')}',
'SYMROOT=${fileSystem.path.join(flutterBuildDir.absolute.path, 'Build', 'Products')}', 'SYMROOT=${fileSystem.path.join(flutterBuildDir.absolute.path, 'Build', 'Products')}',
if (verbose) if (verbose)
'VERBOSE_SCRIPT_LOGGING=YES', 'VERBOSE_SCRIPT_LOGGING=YES'
else
'-quiet',
'COMPILER_INDEX_STORE_ENABLE=NO', 'COMPILER_INDEX_STORE_ENABLE=NO',
], ],
stdout: 'STDOUT STUFF', stdout: 'STDOUT STUFF',
...@@ -129,7 +131,7 @@ void main() { ...@@ -129,7 +131,7 @@ void main() {
FeatureFlags: () => TestFeatureFlags(isMacOSEnabled: true), FeatureFlags: () => TestFeatureFlags(isMacOSEnabled: true),
}); });
testUsingContext('macOS build does not spew stdout to status logger', () async { testUsingContext('macOS build forwards error stdout to status logger error', () async {
final BuildCommand command = BuildCommand(); final BuildCommand command = BuildCommand();
createMinimalMockProjectFiles(); createMinimalMockProjectFiles();
...@@ -137,7 +139,8 @@ void main() { ...@@ -137,7 +139,8 @@ void main() {
const <String>['build', 'macos', '--debug'] const <String>['build', 'macos', '--debug']
); );
expect(testLogger.statusText, isNot(contains('STDOUT STUFF'))); expect(testLogger.statusText, isNot(contains('STDOUT STUFF')));
expect(testLogger.traceText, contains('STDOUT STUFF')); expect(testLogger.traceText, isNot(contains('STDOUT STUFF')));
expect(testLogger.errorText, contains('STDOUT STUFF'));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FileSystem: () => fileSystem, FileSystem: () => fileSystem,
ProcessManager: () => FakeProcessManager.list(<FakeCommand>[ ProcessManager: () => FakeProcessManager.list(<FakeCommand>[
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment