From 8acf86d995d91bd3219437f20a3d0137ae7b2b8a Mon Sep 17 00:00:00 2001 From: Andrew Kolos Date: Tue, 2 Jul 2024 13:40:06 -0700 Subject: [PATCH] [tool] Fix `stdin.flush` calls on processes started by `FakeProcessManager` (#151183) Fixes https://github.com/flutter/flutter/issues/151151 --- .../test/general.shard/fake_process_manager_test.dart | 7 +++++++ .../flutter_tools/test/src/fake_process_manager.dart | 9 +++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/flutter_tools/test/general.shard/fake_process_manager_test.dart b/packages/flutter_tools/test/general.shard/fake_process_manager_test.dart index bfa6478613c..1130758c9ba 100644 --- a/packages/flutter_tools/test/general.shard/fake_process_manager_test.dart +++ b/packages/flutter_tools/test/general.shard/fake_process_manager_test.dart @@ -174,6 +174,13 @@ void main() { expect(stderr, 'stderr'.codeUnits); expect(stdout, 'stdout'.codeUnits); }); + + testWithoutContext('stdin should be flushable (all data written is consumed)', () async { + final FakeProcess process = FakeProcess(); + process.stdin.write('hello'); + // If nothing is listening to the stdin stream, this test will never complete. + await process.stdin.flush(); + }); }); group(FakeProcessManager, () { diff --git a/packages/flutter_tools/test/src/fake_process_manager.dart b/packages/flutter_tools/test/src/fake_process_manager.dart index c3869f3b751..7308c683b35 100644 --- a/packages/flutter_tools/test/src/fake_process_manager.dart +++ b/packages/flutter_tools/test/src/fake_process_manager.dart @@ -160,8 +160,13 @@ class FakeProcess implements io.Process { } return exitCode; }), - _stderr = stderr, - stdin = stdin ?? IOSink(StreamController>().sink), + _stderr = stderr, + stdin = stdin ?? + IOSink( + StreamController>() + ..stream.listen((_) {}) + ..sink, + ), _stdout = stdout, _completer = completer {