File tree Expand file tree Collapse file tree 3 files changed +74
-0
lines changed Expand file tree Collapse file tree 3 files changed +74
-0
lines changed Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ export 'src/ansi_color.dart';
6
6
export 'src/filters/debug_filter.dart' ;
7
7
export 'src/filters/production_filter.dart' ;
8
8
export 'src/outputs/console_output.dart' ;
9
+ export 'src/outputs/stream_output.dart' ;
9
10
export 'src/outputs/memory_output.dart' ;
10
11
export 'src/printers/pretty_printer.dart' ;
11
12
export 'src/printers/simple_printer.dart' ;
Original file line number Diff line number Diff line change
1
+ import 'dart:async' ;
2
+
3
+ import 'package:logger/src/logger.dart' ;
4
+ import 'package:logger/src/log_output.dart' ;
5
+
6
+ class StreamOutput extends LogOutput {
7
+ StreamController <List <String >> _controller;
8
+ bool _shouldForward = false ;
9
+
10
+ StreamOutput () {
11
+ _controller = StreamController <List <String >>(
12
+ onListen: () => _shouldForward = true ,
13
+ onPause: () => _shouldForward = false ,
14
+ onResume: () => _shouldForward = true ,
15
+ onCancel: () => _shouldForward = false ,
16
+ );
17
+ }
18
+
19
+ Stream <List <String >> get stream => _controller.stream;
20
+
21
+ @override
22
+ void output (OutputEvent event) {
23
+ if (! _shouldForward) {
24
+ return ;
25
+ }
26
+
27
+ _controller.add (event.lines);
28
+ }
29
+
30
+ @override
31
+ void destroy () {
32
+ _controller.close ();
33
+ }
34
+ }
Original file line number Diff line number Diff line change
1
+ import 'package:test/test.dart' ;
2
+ import 'package:logger/logger.dart' ;
3
+
4
+ void main () {
5
+ test ('writes to a Stream' , () {
6
+ var out = StreamOutput ();
7
+
8
+ out.stream.listen ((var e) {
9
+ expect (e, ['hi there' ]);
10
+ });
11
+
12
+ out.output (OutputEvent (Level .debug, ['hi there' ]));
13
+ });
14
+
15
+ test ('respects listen' , () {
16
+ var out = StreamOutput ();
17
+
18
+ out.output (OutputEvent (Level .debug, ['dropped' ]));
19
+
20
+ out.stream.listen ((var e) {
21
+ expect (e, ['hi there' ]);
22
+ });
23
+
24
+ out.output (OutputEvent (Level .debug, ['hi there' ]));
25
+ });
26
+
27
+ test ('respects pause' , () {
28
+ var out = StreamOutput ();
29
+
30
+ var sub = out.stream.listen ((var e) {
31
+ expect (e, ['hi there' ]);
32
+ });
33
+
34
+ sub.pause ();
35
+ out.output (OutputEvent (Level .debug, ['dropped' ]));
36
+ sub.resume ();
37
+ out.output (OutputEvent (Level .debug, ['hi there' ]));
38
+ });
39
+ }
You can’t perform that action at this time.
0 commit comments