From 106a8476b16f1cd4ce0920ff429a5c6d58878847 Mon Sep 17 00:00:00 2001 From: Christopher Fujino Date: Mon, 6 Jun 2022 12:50:39 -0700 Subject: [PATCH 1/5] get run_tests passing locally --- .../commands.shard/hermetic/run_test.dart | 3 +- packages/flutter_tools/test/src/fakes.dart | 40 +++++++++++++++++-- 2 files changed, 38 insertions(+), 5 deletions(-) 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 aab19dfc28e5d..9561eec76480b 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart @@ -431,7 +431,7 @@ void main() { expect(usage.commands, contains( TestUsageCommand('run', parameters: CustomDimensions.fromMap({ 'cd3': 'false', 'cd4': 'ios', 'cd22': 'iOS 13', - 'cd23': 'debug', 'cd18': 'false', 'cd15': 'swift', 'cd31': 'false', + 'cd23': 'debug', 'cd18': 'false', 'cd15': 'swift', 'cd31': 'true', 'cd56': 'false', }) ))); @@ -441,6 +441,7 @@ void main() { DeviceManager: () => mockDeviceManager, FileSystem: () => fs, ProcessManager: () => FakeProcessManager.any(), + Stdio: () => FakeStdio()..stdout, Usage: () => usage, }); diff --git a/packages/flutter_tools/test/src/fakes.dart b/packages/flutter_tools/test/src/fakes.dart index 9939f2f6a975d..35563dc95d1bc 100644 --- a/packages/flutter_tools/test/src/fakes.dart +++ b/packages/flutter_tools/test/src/fakes.dart @@ -222,9 +222,10 @@ class MemoryStdout extends MemoryIOSink implements io.Stdout { /// A Stdio that collects stdout and supports simulated stdin. class FakeStdio extends Stdio { - final MemoryStdout _stdout = MemoryStdout(); + final MemoryStdout _stdout = MemoryStdout()..terminalColumns = 80; final MemoryIOSink _stderr = MemoryIOSink(); - final StreamController> _stdin = StreamController>(); + //final StreamController> _stdin = StreamController>(); + final FakeStdin _stdin = FakeStdin(); @override MemoryStdout get stdout => _stdout; @@ -233,16 +234,47 @@ class FakeStdio extends Stdio { MemoryIOSink get stderr => _stderr; @override - Stream> get stdin => _stdin.stream; + Stream> get stdin => _stdin; void simulateStdin(String line) { - _stdin.add(utf8.encode('$line\n')); + _stdin.controller.add(utf8.encode('$line\n')); } + @override + bool stdinHasTerminal = true; + List get writtenToStdout => _stdout.writes.map(_stdout.encoding.decode).toList(); List get writtenToStderr => _stderr.writes.map(_stderr.encoding.decode).toList(); } +class FakeStdin extends Fake implements Stdin { + final StreamController> controller = StreamController>(); + + @override + bool echoMode = true; + + @override + bool echoNewlineMode = true; + + @override + bool lineMode = true; + + @override + StreamSubscription> listen( + void Function(List event)? onData, { + Function? onError, + void Function()? onDone, + bool? cancelOnError, + }) { + return controller.stream.listen( + onData, + onError: onError, + onDone: onDone, + cancelOnError: cancelOnError, + ); + } +} + class FakePlistParser implements PlistParser { FakePlistParser([Map? underlyingValues]): _underlyingValues = underlyingValues ?? {}; From 89e0d2bbaacddf1d3d0a5fb9bee9bd7c1da3cd08 Mon Sep 17 00:00:00 2001 From: Christopher Fujino Date: Mon, 6 Jun 2022 12:53:46 -0700 Subject: [PATCH 2/5] remove comment --- packages/flutter_tools/test/src/fakes.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/flutter_tools/test/src/fakes.dart b/packages/flutter_tools/test/src/fakes.dart index 35563dc95d1bc..19505d54d3988 100644 --- a/packages/flutter_tools/test/src/fakes.dart +++ b/packages/flutter_tools/test/src/fakes.dart @@ -224,7 +224,6 @@ class MemoryStdout extends MemoryIOSink implements io.Stdout { class FakeStdio extends Stdio { final MemoryStdout _stdout = MemoryStdout()..terminalColumns = 80; final MemoryIOSink _stderr = MemoryIOSink(); - //final StreamController> _stdin = StreamController>(); final FakeStdin _stdin = FakeStdin(); @override From 59afce300614a35051f2b5030b8be2e873b4e4a5 Mon Sep 17 00:00:00 2001 From: Christopher Fujino Date: Mon, 6 Jun 2022 13:05:15 -0700 Subject: [PATCH 3/5] implement transform --- packages/flutter_tools/test/src/fakes.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/flutter_tools/test/src/fakes.dart b/packages/flutter_tools/test/src/fakes.dart index 19505d54d3988..a3fccbdf593d8 100644 --- a/packages/flutter_tools/test/src/fakes.dart +++ b/packages/flutter_tools/test/src/fakes.dart @@ -258,6 +258,11 @@ class FakeStdin extends Fake implements Stdin { @override bool lineMode = true; + @override + Stream transform(StreamTransformer, S> transformer) { + return controller.stream.transform(transformer); + } + @override StreamSubscription> listen( void Function(List event)? onData, { From 5f77cf92d84ea68ddd3e5cd294b4f607298d5e37 Mon Sep 17 00:00:00 2001 From: Christopher Fujino Date: Mon, 6 Jun 2022 13:10:51 -0700 Subject: [PATCH 4/5] fix another test --- .../flutter_tools/test/commands.shard/hermetic/run_test.dart | 3 +-- packages/flutter_tools/test/src/fakes.dart | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) 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 9561eec76480b..5b820cd620bde 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart @@ -405,7 +405,6 @@ void main() { Usage: () => usage, }); - testUsingContext('passes device target platform to usage', () async { final RunCommand command = RunCommand(); final FakeDevice mockDevice = FakeDevice(sdkNameAndVersion: 'iOS 13') @@ -441,7 +440,7 @@ void main() { DeviceManager: () => mockDeviceManager, FileSystem: () => fs, ProcessManager: () => FakeProcessManager.any(), - Stdio: () => FakeStdio()..stdout, + Stdio: () => FakeStdio(), Usage: () => usage, }); diff --git a/packages/flutter_tools/test/src/fakes.dart b/packages/flutter_tools/test/src/fakes.dart index a3fccbdf593d8..b94529aa7757c 100644 --- a/packages/flutter_tools/test/src/fakes.dart +++ b/packages/flutter_tools/test/src/fakes.dart @@ -240,7 +240,7 @@ class FakeStdio extends Stdio { } @override - bool stdinHasTerminal = true; + bool hasTerminal = true; List get writtenToStdout => _stdout.writes.map(_stdout.encoding.decode).toList(); List get writtenToStderr => _stderr.writes.map(_stderr.encoding.decode).toList(); From b76be4e2e864982a048c3b47a6b9849cb5f1a2e0 Mon Sep 17 00:00:00 2001 From: Christopher Fujino Date: Mon, 6 Jun 2022 13:43:26 -0700 Subject: [PATCH 5/5] remove no-shuffle --- .../test/commands.shard/hermetic/run_test.dart | 6 ------ 1 file changed, 6 deletions(-) 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 5b820cd620bde..f5101d51032a0 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart @@ -4,12 +4,6 @@ // @dart = 2.8 -// TODO(gspencergoog): Remove this tag once this test's state leaks/test -// dependencies have been fixed. -// https://github.com/flutter/flutter/issues/85160 -// Fails with "flutter test --test-randomize-ordering-seed=1000" -@Tags(['no-shuffle']) - import 'dart:async'; import 'package:file/file.dart';