Unverified Commit dce8f712 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] do not use context logger in gradle (#75940)

parent 835c7fab
...@@ -65,7 +65,7 @@ class ApplicationPackageFactory { ...@@ -65,7 +65,7 @@ class ApplicationPackageFactory {
case TargetPlatform.android_x64: case TargetPlatform.android_x64:
case TargetPlatform.android_x86: case TargetPlatform.android_x86:
if (_androidSdk?.licensesAvailable == true && _androidSdk?.latestVersion == null) { if (_androidSdk?.licensesAvailable == true && _androidSdk?.latestVersion == null) {
await checkGradleDependencies(); await checkGradleDependencies(_logger);
} }
if (applicationBinary == null) { if (applicationBinary == null) {
return await AndroidApk.fromAndroidProject( return await AndroidApk.fromAndroidProject(
......
...@@ -413,7 +413,6 @@ class WindowsStdoutLogger extends StdoutLogger { ...@@ -413,7 +413,6 @@ class WindowsStdoutLogger extends StdoutLogger {
@override @override
void writeToStdOut(String message) { void writeToStdOut(String message) {
// TODO(jcollins-g): wrong abstraction layer for this, move to [Stdio].
final String windowsMessage = _terminal.supportsEmoji final String windowsMessage = _terminal.supportsEmoji
? message ? message
: message.replaceAll('🔥', '') : message.replaceAll('🔥', '')
...@@ -421,7 +420,8 @@ class WindowsStdoutLogger extends StdoutLogger { ...@@ -421,7 +420,8 @@ class WindowsStdoutLogger extends StdoutLogger {
.replaceAll('✗', 'X') .replaceAll('✗', 'X')
.replaceAll('✓', '√') .replaceAll('✓', '√')
.replaceAll('🔨', '') .replaceAll('🔨', '')
.replaceAll('💪', ''); .replaceAll('💪', '')
.replaceAll('✏️', '');
_stdio.stdoutWrite(windowsMessage); _stdio.stdoutWrite(windowsMessage);
} }
} }
......
...@@ -84,7 +84,7 @@ abstract class Terminal { ...@@ -84,7 +84,7 @@ abstract class Terminal {
/// Create a new test [Terminal]. /// Create a new test [Terminal].
/// ///
/// If not specified, [supportsColor] defaults to `false`. /// If not specified, [supportsColor] defaults to `false`.
factory Terminal.test({bool supportsColor}) = _TestTerminal; factory Terminal.test({bool supportsColor, bool supportsEmoji}) = _TestTerminal;
/// Whether the current terminal supports color escape codes. /// Whether the current terminal supports color escape codes.
bool get supportsColor; bool get supportsColor;
...@@ -317,7 +317,7 @@ class AnsiTerminal implements Terminal { ...@@ -317,7 +317,7 @@ class AnsiTerminal implements Terminal {
} }
class _TestTerminal implements Terminal { class _TestTerminal implements Terminal {
_TestTerminal({this.supportsColor = false}); _TestTerminal({this.supportsColor = false, this.supportsEmoji = false});
@override @override
bool usesTerminalUi; bool usesTerminalUi;
...@@ -351,7 +351,7 @@ class _TestTerminal implements Terminal { ...@@ -351,7 +351,7 @@ class _TestTerminal implements Terminal {
final bool supportsColor; final bool supportsColor;
@override @override
bool get supportsEmoji => false; final bool supportsEmoji;
@override @override
bool get stdinHasTerminal => false; bool get stdinHasTerminal => false;
......
...@@ -79,7 +79,9 @@ Future<T> runInContext<T>( ...@@ -79,7 +79,9 @@ Future<T> runInContext<T>(
body: runnerWrapper, body: runnerWrapper,
overrides: overrides, overrides: overrides,
fallbacks: <Type, Generator>{ fallbacks: <Type, Generator>{
AndroidBuilder: () => AndroidGradleBuilder(), AndroidBuilder: () => AndroidGradleBuilder(
logger: globals.logger,
),
AndroidLicenseValidator: () => AndroidLicenseValidator( AndroidLicenseValidator: () => AndroidLicenseValidator(
operatingSystemUtils: globals.os, operatingSystemUtils: globals.os,
platform: globals.platform, platform: globals.platform,
......
...@@ -14,6 +14,7 @@ import 'package:flutter_tools/src/artifacts.dart'; ...@@ -14,6 +14,7 @@ import 'package:flutter_tools/src/artifacts.dart';
import 'package:flutter_tools/src/base/context.dart'; import 'package:flutter_tools/src/base/context.dart';
import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/base/platform.dart';
import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/cache.dart';
...@@ -29,6 +30,7 @@ import '../../src/mocks.dart'; ...@@ -29,6 +30,7 @@ import '../../src/mocks.dart';
void main() { void main() {
group('gradle build', () { group('gradle build', () {
BufferLogger logger;
TestUsage testUsage; TestUsage testUsage;
MockAndroidSdk mockAndroidSdk; MockAndroidSdk mockAndroidSdk;
MockAndroidStudio mockAndroidStudio; MockAndroidStudio mockAndroidStudio;
...@@ -41,6 +43,7 @@ void main() { ...@@ -41,6 +43,7 @@ void main() {
AndroidGradleBuilder builder; AndroidGradleBuilder builder;
setUp(() { setUp(() {
logger = BufferLogger.test();
testUsage = TestUsage(); testUsage = TestUsage();
fileSystem = MemoryFileSystem.test(); fileSystem = MemoryFileSystem.test();
fileSystemUtils = MockFileSystemUtils(); fileSystemUtils = MockFileSystemUtils();
...@@ -49,7 +52,9 @@ void main() { ...@@ -49,7 +52,9 @@ void main() {
mockArtifacts = MockLocalEngineArtifacts(); mockArtifacts = MockLocalEngineArtifacts();
mockProcessManager = MockProcessManager(); mockProcessManager = MockProcessManager();
android = fakePlatform('android'); android = fakePlatform('android');
builder = AndroidGradleBuilder(); builder = AndroidGradleBuilder(
logger: logger,
);
when(mockAndroidSdk.directory).thenReturn('irrelevant'); when(mockAndroidSdk.directory).thenReturn('irrelevant');
...@@ -660,7 +665,7 @@ void main() { ...@@ -660,7 +665,7 @@ void main() {
); );
expect( expect(
testLogger.statusText, logger.statusText,
contains('Built build/app/outputs/flutter-apk/app-release.apk (0.0MB)'), contains('Built build/app/outputs/flutter-apk/app-release.apk (0.0MB)'),
); );
...@@ -708,11 +713,11 @@ void main() { ...@@ -708,11 +713,11 @@ void main() {
); );
expect( expect(
testLogger.statusText, logger.statusText,
contains('Built build/outputs/repo'), contains('Built build/outputs/repo'),
); );
expect( expect(
testLogger.statusText.contains('Consuming the Module'), logger.statusText.contains('Consuming the Module'),
isFalse, isFalse,
); );
......
...@@ -462,7 +462,7 @@ include ':app' ...@@ -462,7 +462,7 @@ include ':app'
globals.fs.file(globals.fs.path.join(toolGradlePath, 'settings_aar.gradle.tmpl')) globals.fs.file(globals.fs.path.join(toolGradlePath, 'settings_aar.gradle.tmpl'))
.writeAsStringSync(settingsAarFile); .writeAsStringSync(settingsAarFile);
createSettingsAarGradle(tempDir); createSettingsAarGradle(tempDir, testLogger);
expect(testLogger.statusText, contains('created successfully')); expect(testLogger.statusText, contains('created successfully'));
expect(tempDir.childFile('settings_aar.gradle').existsSync(), isTrue); expect(tempDir.childFile('settings_aar.gradle').existsSync(), isTrue);
...@@ -495,7 +495,7 @@ include ':app' ...@@ -495,7 +495,7 @@ include ':app'
globals.fs.file(globals.fs.path.join(toolGradlePath, 'settings_aar.gradle.tmpl')) globals.fs.file(globals.fs.path.join(toolGradlePath, 'settings_aar.gradle.tmpl'))
.writeAsStringSync(settingsAarFile); .writeAsStringSync(settingsAarFile);
createSettingsAarGradle(tempDir); createSettingsAarGradle(tempDir, testLogger);
expect(testLogger.statusText, contains('created successfully')); expect(testLogger.statusText, contains('created successfully'));
expect(tempDir.childFile('settings_aar.gradle').existsSync(), isTrue); expect(tempDir.childFile('settings_aar.gradle').existsSync(), isTrue);
...@@ -834,13 +834,15 @@ flutter: ...@@ -834,13 +834,15 @@ flutter:
FakeProcessManager fakeProcessManager; FakeProcessManager fakeProcessManager;
MockAndroidSdk mockAndroidSdk; MockAndroidSdk mockAndroidSdk;
AndroidGradleBuilder builder; AndroidGradleBuilder builder;
BufferLogger logger;
setUp(() { setUp(() {
logger = BufferLogger.test();
fs = MemoryFileSystem.test(); fs = MemoryFileSystem.test();
fakeProcessManager = FakeProcessManager.list(<FakeCommand>[]); fakeProcessManager = FakeProcessManager.list(<FakeCommand>[]);
mockAndroidSdk = MockAndroidSdk(); mockAndroidSdk = MockAndroidSdk();
when(mockAndroidSdk.directory).thenReturn('irrelevant'); when(mockAndroidSdk.directory).thenReturn('irrelevant');
builder = AndroidGradleBuilder(); builder = AndroidGradleBuilder(logger: logger);
}); });
testUsingContext('calls gradle', () async { testUsingContext('calls gradle', () async {
......
...@@ -87,6 +87,32 @@ void main() { ...@@ -87,6 +87,32 @@ void main() {
), isA<AppRunLogger>()); ), isA<AppRunLogger>());
}); });
testWithoutContext('WindowsStdoutLogger rewrites emojis when terminal does not support emoji', () {
final FakeStdio stdio = FakeStdio();
final WindowsStdoutLogger logger = WindowsStdoutLogger(
outputPreferences: OutputPreferences.test(),
stdio: stdio,
terminal: Terminal.test(supportsColor: false, supportsEmoji: false),
);
logger.printStatus('🔥🖼️✗✓🔨💪✏️');
expect(stdio.writtenToStdout, <String>['X√\n']);
});
testWithoutContext('WindowsStdoutLogger does not rewrite emojis when terminal does support emoji', () {
final FakeStdio stdio = FakeStdio();
final WindowsStdoutLogger logger = WindowsStdoutLogger(
outputPreferences: OutputPreferences.test(),
stdio: stdio,
terminal: Terminal.test(supportsColor: true, supportsEmoji: true),
);
logger.printStatus('🔥🖼️✗✓🔨💪✏️');
expect(stdio.writtenToStdout, <String>['🔥🖼️✗✓🔨💪✏️\n']);
});
testWithoutContext('DelegatingLogger delegates', () { testWithoutContext('DelegatingLogger delegates', () {
final FakeLogger fakeLogger = FakeLogger(); final FakeLogger fakeLogger = FakeLogger();
final DelegatingLogger delegatingLogger = DelegatingLogger(fakeLogger); final DelegatingLogger delegatingLogger = DelegatingLogger(fakeLogger);
......
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