11import createRunner from './create-runner' ;
22import parseTap from './parse-tap' ;
3+ import logger from './logger' ;
34
4- function log ( data : string ) : void {
5- var logs = data . match ( / ^ (? ! # T A P ) (? ! ( n o t ) ? o k [ 0 - 9 ] + - ) (? ! 1 ..[ 0 - 9 ] + ) (? ! # E \s ) ( .* ) $ / gm) ;
6- if ( logs && logs . length > 0 ) {
7- logs . forEach ( ( line : string ) => {
8- if ( line . length > 0 ) {
9- try {
10- line = JSON . parse ( JSON . stringify ( line ) ) ;
11- if ( typeof line === 'string' ) {
12- console . log ( line ) ;
13- } else {
14- console . dir ( JSON . parse ( JSON . stringify ( line ) ) ) ;
15- }
16- } catch ( e ) {
17- console . log ( line ) ;
18- }
19- }
20- } ) ;
21- }
22- }
235
246export default function runner ( testFile : string , config : CR . Config ,
257 handleResult : ( result ) => CR . TestResult ) : Promise < CR . TestResult > {
@@ -32,25 +14,29 @@ export default function runner(testFile: string, config: CR.Config,
3214 runner . stdout . on ( 'data' , function ( data ) : void {
3315
3416 data = data . toString ( ) ;
17+
18+ // no output, end early
3519 if ( ! data || ! data . length ) {
3620 return ;
3721 }
3822
39- // capture any abnormal data as a log
40- log ( data ) ;
23+ // log to Atom console
24+ logger ( data ) ;
4125
42- // transform data;
26+ // parse data into JSON object
4327 final = parseTap ( data ) ;
28+
29+ // could not parse, log error
4430 if ( ! final ) {
4531 console . log ( 'Error parsing test ouptut:' , data ) ;
4632 }
4733
34+ // complete JSON object
4835 final . change = final . taskPosition - config . taskPosition ;
4936 final . pass = final . change > 0 ;
5037
5138 // return result to atom-coderoad
5239 handleResult ( final ) ;
53-
5440 } ) ;
5541
5642 runner . stderr . on ( 'data' , function ( data ) {
0 commit comments