diff --git a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart index 034a5ecca4..9a597bc91e 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart @@ -227,7 +227,7 @@ void main() { FileSystem: () => MemoryFileSystem.test(), ProcessManager: () => FakeProcessManager.any(), DeviceManager: () => mockDeviceManager, - Stdio: () => FakeStdio(hasFakeTerminal: true), + Stdio: () => MockStdio(), }); testUsingContext('shows unsupported devices when no supported devices are found', () async { diff --git a/packages/flutter_tools/test/commands.shard/hermetic/symbolize_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/symbolize_test.dart index cf246e7041..f656c58292 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/symbolize_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/symbolize_test.dart @@ -17,12 +17,12 @@ import 'package:mockito/mockito.dart'; import '../../src/common.dart'; import '../../src/context.dart'; -import '../../src/fakes.dart'; +import '../../src/mocks.dart'; void main() { MemoryFileSystem fileSystem; - FakeStdio stdio; + MockStdio stdio; SymbolizeCommand command; MockDwarfSymbolizationService mockDwarfSymbolizationService; @@ -32,7 +32,7 @@ void main() { setUp(() { fileSystem = MemoryFileSystem.test(); - stdio = FakeStdio(); + stdio = MockStdio(); mockDwarfSymbolizationService = MockDwarfSymbolizationService(); command = SymbolizeCommand( stdio: stdio, diff --git a/packages/flutter_tools/test/general.shard/analytics_test.dart b/packages/flutter_tools/test/general.shard/analytics_test.dart index c95a1998f8..fea1b517f8 100644 --- a/packages/flutter_tools/test/general.shard/analytics_test.dart +++ b/packages/flutter_tools/test/general.shard/analytics_test.dart @@ -26,7 +26,7 @@ import 'package:usage/usage_io.dart'; import '../src/common.dart'; import '../src/context.dart'; -import '../src/fakes.dart'; +import '../src/mocks.dart'; void main() { setUpAll(() { @@ -152,7 +152,7 @@ void main() { group('analytics with mocks', () { MemoryFileSystem memoryFileSystem; - FakeStdio fakeStdio; + MockStdio mockStdio; Usage mockUsage; SystemClock mockClock; Doctor mockDoctor; @@ -160,7 +160,7 @@ void main() { setUp(() { memoryFileSystem = MemoryFileSystem.test(); - fakeStdio = FakeStdio(); + mockStdio = MockStdio(); mockUsage = MockUsage(); mockClock = MockClock(); mockDoctor = MockDoctor(); @@ -266,7 +266,7 @@ void main() { 'FLUTTER_ANALYTICS_LOG_FILE': 'analytics.log', }, ), - Stdio: () => fakeStdio, + Stdio: () => mockStdio, }); testUsingContext('event sends localtime', () async { @@ -296,7 +296,7 @@ void main() { 'FLUTTER_ANALYTICS_LOG_FILE': 'analytics.log', }, ), - Stdio: () => fakeStdio, + Stdio: () => mockStdio, }); }); diff --git a/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart b/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart index 67ae80b832..a964622c75 100644 --- a/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart +++ b/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart @@ -18,8 +18,7 @@ import 'package:mockito/mockito.dart'; import '../../src/common.dart'; import '../../src/context.dart'; -import '../../src/fakes.dart'; -import '../../src/mocks.dart' show MockAndroidSdk, MockProcess, MockProcessManager; +import '../../src/mocks.dart' show MockAndroidSdk, MockProcess, MockProcessManager, MockStdio; import '../../src/testbed.dart'; class MockAndroidSdkVersion extends Mock implements AndroidSdkVersion {} @@ -30,7 +29,7 @@ void main() { Logger logger; MemoryFileSystem fileSystem; MockProcessManager processManager; - FakeStdio stdio; + MockStdio stdio; setUp(() { sdk = MockAndroidSdk(); @@ -38,7 +37,7 @@ void main() { fileSystem.directory('/home/me').createSync(recursive: true); logger = BufferLogger.test(); processManager = MockProcessManager(); - stdio = FakeStdio(); + stdio = MockStdio(); }); MockProcess Function(List) processMetaFactory(List stdout) { diff --git a/packages/flutter_tools/test/general.shard/artifact_updater_test.dart b/packages/flutter_tools/test/general.shard/artifact_updater_test.dart index a75fb3ecee..ef9db567de 100644 --- a/packages/flutter_tools/test/general.shard/artifact_updater_test.dart +++ b/packages/flutter_tools/test/general.shard/artifact_updater_test.dart @@ -18,7 +18,7 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:mockito/mockito.dart'; import '../src/common.dart'; -import '../src/fakes.dart'; +import '../src/mocks.dart'; final Platform testPlatform = FakePlatform(environment: const {}); @@ -171,7 +171,7 @@ void main() { final MemoryFileSystem fileSystem = MemoryFileSystem.test(); final Logger logger = StdoutLogger( terminal: Terminal.test(supportsColor: true), - stdio: FakeStdio(), + stdio: MockStdio(), outputPreferences: OutputPreferences.test(), ); final ArtifactUpdater artifactUpdater = ArtifactUpdater( diff --git a/packages/flutter_tools/test/general.shard/base/bot_detector_test.dart b/packages/flutter_tools/test/general.shard/base/bot_detector_test.dart index 24fcd65bcc..ff0122f582 100644 --- a/packages/flutter_tools/test/general.shard/base/bot_detector_test.dart +++ b/packages/flutter_tools/test/general.shard/base/bot_detector_test.dart @@ -16,10 +16,12 @@ import 'package:mockito/mockito.dart'; import 'package:fake_async/fake_async.dart'; import '../../src/common.dart'; +import '../../src/mocks.dart'; void main() { group('BotDetector', () { FakePlatform fakePlatform; + MockStdio mockStdio; MockHttpClient mockHttpClient; MockHttpClientRequest mockHttpClientRequest; MockHttpHeaders mockHttpHeaders; @@ -28,6 +30,7 @@ void main() { setUp(() { fakePlatform = FakePlatform()..environment = {}; + mockStdio = MockStdio(); mockHttpClient = MockHttpClient(); mockHttpClientRequest = MockHttpClientRequest(); mockHttpHeaders = MockHttpHeaders(); @@ -59,6 +62,17 @@ void main() { expect(persistentToolState.isRunningOnBot, isFalse); }); + testWithoutContext('returns false with and without a terminal attached', () async { + when(mockHttpClient.getUrl(any)).thenAnswer((_) { + throw const SocketException('HTTP connection timed out'); + }); + mockStdio.stdout.hasTerminal = true; + expect(await botDetector.isRunningOnBot, isFalse); + mockStdio.stdout.hasTerminal = false; + expect(await botDetector.isRunningOnBot, isFalse); + expect(persistentToolState.isRunningOnBot, isFalse); + }); + testWithoutContext('can test analytics outputs on bots when outputting to a file', () async { fakePlatform.environment['TRAVIS'] = 'true'; fakePlatform.environment['FLUTTER_ANALYTICS_LOG_FILE'] = '/some/file'; diff --git a/packages/flutter_tools/test/general.shard/base/command_help_test.dart b/packages/flutter_tools/test/general.shard/base/command_help_test.dart index e16d88858f..4ad556baeb 100644 --- a/packages/flutter_tools/test/general.shard/base/command_help_test.dart +++ b/packages/flutter_tools/test/general.shard/base/command_help_test.dart @@ -11,7 +11,7 @@ import 'package:flutter_tools/src/base/terminal.dart' show AnsiTerminal, OutputP import 'package:meta/meta.dart'; import '../../src/common.dart'; -import '../../src/fakes.dart'; +import '../../src/mocks.dart' show MockStdio; CommandHelp _createCommandHelp({ @required bool ansi, @@ -23,7 +23,7 @@ CommandHelp _createCommandHelp({ return CommandHelp( logger: BufferLogger.test(), terminal: AnsiTerminal( - stdio: FakeStdio(), + stdio: MockStdio(), platform: platform, ), platform: platform, diff --git a/packages/flutter_tools/test/general.shard/base/net_test.dart b/packages/flutter_tools/test/general.shard/base/net_test.dart index 1480a3c7c5..c25915e65a 100644 --- a/packages/flutter_tools/test/general.shard/base/net_test.dart +++ b/packages/flutter_tools/test/general.shard/base/net_test.dart @@ -18,7 +18,7 @@ import 'package:flutter_tools/src/base/terminal.dart'; import 'package:fake_async/fake_async.dart'; import '../../src/common.dart'; -import '../../src/fakes.dart'; +import '../../src/mocks.dart' show MockStdio; void main() { BufferLogger testLogger; @@ -26,7 +26,7 @@ void main() { setUp(() { testLogger = BufferLogger( terminal: AnsiTerminal( - stdio: FakeStdio(), + stdio: MockStdio(), platform: FakePlatform(stdoutSupportsAnsi: false), ), outputPreferences: OutputPreferences.test(), diff --git a/packages/flutter_tools/test/general.shard/base/process_test.dart b/packages/flutter_tools/test/general.shard/base/process_test.dart index bb9b7a6769..e9a924a1ed 100644 --- a/packages/flutter_tools/test/general.shard/base/process_test.dart +++ b/packages/flutter_tools/test/general.shard/base/process_test.dart @@ -15,9 +15,9 @@ import 'package:mockito/mockito.dart'; import 'package:fake_async/fake_async.dart'; import '../../src/common.dart'; import '../../src/context.dart'; -import '../../src/fakes.dart'; import '../../src/mocks.dart' show MockProcess, MockProcessManager, + MockStdio, flakyProcessFactory; void main() { @@ -90,7 +90,7 @@ void main() { mockProcessManager = MockProcessManager(); mockLogger = BufferLogger( terminal: AnsiTerminal( - stdio: FakeStdio(), + stdio: MockStdio(), platform: FakePlatform(stdoutSupportsAnsi: false), ), outputPreferences: OutputPreferences(wrapText: true, wrapColumn: 40), @@ -280,7 +280,7 @@ void main() { fakeProcessManager = FakeProcessManager.list([]); testLogger = BufferLogger( terminal: AnsiTerminal( - stdio: FakeStdio(), + stdio: MockStdio(), platform: FakePlatform(stdinSupportsAnsi: false), ), outputPreferences: OutputPreferences(wrapText: true, wrapColumn: 40), diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/icon_tree_shaker_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/icon_tree_shaker_test.dart index d472b7a873..75c070cb8f 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/icon_tree_shaker_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/icon_tree_shaker_test.dart @@ -22,7 +22,6 @@ import 'package:mockito/mockito.dart'; import '../../../src/common.dart'; import '../../../src/context.dart'; -import '../../../src/fakes.dart'; import '../../../src/mocks.dart' as mocks; final Platform kNoAnsiPlatform = FakePlatform(stdoutSupportsAnsi: false); @@ -91,7 +90,7 @@ void main() { fileSystem = MemoryFileSystem.test(); logger = BufferLogger( terminal: AnsiTerminal( - stdio: FakeStdio(), + stdio: mocks.MockStdio(), platform: kNoAnsiPlatform, ), outputPreferences: OutputPreferences.test(showColor: false), diff --git a/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart b/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart index 96c8ae4c88..f6ea741e3f 100644 --- a/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart @@ -20,7 +20,6 @@ import 'package:process/process.dart'; import '../../src/common.dart'; import '../../src/context.dart'; -import '../../src/fakes.dart'; import 'utils.dart'; const String _kFlutterRoot = '/flutter/flutter'; @@ -254,3 +253,20 @@ class FakeFlutterCommand extends FlutterCommand { @override String get name => 'fake'; } + +class FakeStdio extends Stdio { + FakeStdio({this.hasFakeTerminal}); + + final bool hasFakeTerminal; + + @override + bool get hasTerminal => hasFakeTerminal; + + @override + int get terminalColumns => hasFakeTerminal ? 80 : null; + + @override + int get terminalLines => hasFakeTerminal ? 24 : null; + @override + bool get supportsAnsiEscapes => hasFakeTerminal; +} diff --git a/packages/flutter_tools/test/src/fakes.dart b/packages/flutter_tools/test/src/fakes.dart index c7bbc51700..af297e5ec3 100644 --- a/packages/flutter_tools/test/src/fakes.dart +++ b/packages/flutter_tools/test/src/fakes.dart @@ -7,7 +7,6 @@ import 'dart:async'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/os.dart'; import 'package:flutter_tools/src/cache.dart'; @@ -66,20 +65,3 @@ class FakeDyldEnvironmentArtifact extends ArtifactSet { Future update(ArtifactUpdater artifactUpdater, Logger logger, FileSystem fileSystem, OperatingSystemUtils operatingSystemUtils) async { } } - -class FakeStdio extends Stdio { - FakeStdio({this.hasFakeTerminal}); - - final bool hasFakeTerminal; - - @override - bool get hasTerminal => hasFakeTerminal; - - @override - int get terminalColumns => hasFakeTerminal ? 80 : null; - - @override - int get terminalLines => hasFakeTerminal ? 24 : null; - @override - bool get supportsAnsiEscapes => hasFakeTerminal; -}