@@ -2,6 +2,7 @@ var defined = require('defined');
2
2
var createDefaultStream = require ( './lib/default_stream' ) ;
3
3
var Test = require ( './lib/test' ) ;
4
4
var createResult = require ( './lib/results' ) ;
5
+ var through = require ( 'through' ) ;
5
6
6
7
var canEmitExit = typeof process !== 'undefined' && process
7
8
&& typeof process . on === 'function'
@@ -18,22 +19,30 @@ var nextTick = typeof setImmediate !== 'undefined'
18
19
exports = module . exports = ( function ( ) {
19
20
var harness ;
20
21
var lazyLoad = function ( ) {
21
- if ( ! harness ) harness = createExitHarness ( {
22
- autoclose : ! canEmitExit
23
- } ) ;
24
-
25
- return harness . apply ( this , arguments ) ;
22
+ return getHarness ( ) . apply ( this , arguments ) ;
26
23
} ;
27
-
24
+
28
25
lazyLoad . only = function ( ) {
29
- if ( ! harness ) harness = createExitHarness ( {
30
- autoclose : ! canEmitExit
31
- } ) ;
32
-
33
- return harness . only . apply ( this , arguments ) ;
26
+ return getHarness . only . apply ( this , arguments ) ;
34
27
}
35
-
28
+
29
+ lazyLoad . createStream = function ( ) {
30
+ if ( ! harness ) {
31
+ var output = through ( ) ;
32
+ getHarness ( { stream : output } ) ;
33
+ return output ;
34
+ }
35
+ return harness . createStream ( ) ;
36
+ } ;
37
+
36
38
return lazyLoad
39
+
40
+ function getHarness ( opts ) {
41
+ if ( ! opts ) opts = { } ;
42
+ opts . autoclose = ! canEmitExit ;
43
+ if ( ! harness ) harness = createExitHarness ( opts ) ;
44
+ return harness ;
45
+ }
37
46
} ) ( ) ;
38
47
39
48
function createExitHarness ( conf ) {
@@ -43,7 +52,7 @@ function createExitHarness (conf) {
43
52
} ) ;
44
53
45
54
var stream = harness . createStream ( ) ;
46
- var es = stream . pipe ( createDefaultStream ( ) ) ;
55
+ var es = stream . pipe ( conf . stream || createDefaultStream ( ) ) ;
47
56
if ( canEmitExit ) {
48
57
es . on ( 'error' , function ( err ) { harness . _exitCode = 1 } ) ;
49
58
}
0 commit comments