@@ -222,9 +222,9 @@ class MemoryStdout extends MemoryIOSink implements io.Stdout {
222222
223223/// A Stdio that collects stdout and supports simulated stdin.
224224class FakeStdio extends Stdio {
225- final MemoryStdout _stdout = MemoryStdout ();
225+ final MemoryStdout _stdout = MemoryStdout ()..terminalColumns = 80 ;
226226 final MemoryIOSink _stderr = MemoryIOSink ();
227- final StreamController < List < int >> _stdin = StreamController < List < int >> ();
227+ final FakeStdin _stdin = FakeStdin ();
228228
229229 @override
230230 MemoryStdout get stdout => _stdout;
@@ -233,16 +233,52 @@ class FakeStdio extends Stdio {
233233 MemoryIOSink get stderr => _stderr;
234234
235235 @override
236- Stream <List <int >> get stdin => _stdin.stream ;
236+ Stream <List <int >> get stdin => _stdin;
237237
238238 void simulateStdin (String line) {
239- _stdin.add (utf8.encode ('$line \n ' ));
239+ _stdin.controller. add (utf8.encode ('$line \n ' ));
240240 }
241241
242+ @override
243+ bool hasTerminal = true ;
244+
242245 List <String > get writtenToStdout => _stdout.writes.map <String >(_stdout.encoding.decode).toList ();
243246 List <String > get writtenToStderr => _stderr.writes.map <String >(_stderr.encoding.decode).toList ();
244247}
245248
249+ class FakeStdin extends Fake implements Stdin {
250+ final StreamController <List <int >> controller = StreamController <List <int >>();
251+
252+ @override
253+ bool echoMode = true ;
254+
255+ @override
256+ bool echoNewlineMode = true ;
257+
258+ @override
259+ bool lineMode = true ;
260+
261+ @override
262+ Stream <S > transform <S >(StreamTransformer <List <int >, S > transformer) {
263+ return controller.stream.transform (transformer);
264+ }
265+
266+ @override
267+ StreamSubscription <List <int >> listen (
268+ void Function (List <int > event)? onData, {
269+ Function ? onError,
270+ void Function ()? onDone,
271+ bool ? cancelOnError,
272+ }) {
273+ return controller.stream.listen (
274+ onData,
275+ onError: onError,
276+ onDone: onDone,
277+ cancelOnError: cancelOnError,
278+ );
279+ }
280+ }
281+
246282class FakePlistParser implements PlistParser {
247283 FakePlistParser ([Map <String , Object >? underlyingValues]):
248284 _underlyingValues = underlyingValues ?? < String , Object > {};
0 commit comments