11#!/usr/bin/env node
22var path = require ( 'path' ) ,
3- fs = require ( 'fs' ) ,
4- extend = require ( 'util' ) . _extend ,
5- exec = require ( 'child_process' ) . exec ,
6- processes = [ ] ;
3+ fs = require ( 'fs' ) ,
4+ extend = require ( 'util' ) . _extend ,
5+ exec = require ( 'child_process' ) . exec ,
6+ processes = [ ] ;
77
88var baseDir = path . resolve ( __dirname , '..' ) ,
9- srcDir = path . resolve ( baseDir ) ;
9+ srcDir = path . resolve ( baseDir ) ;
1010
1111var appOptions = {
1212 port : 3000 ,
@@ -15,20 +15,43 @@ var appOptions = {
1515 }
1616} ;
1717
18- var chimpSwitches = '' ;
18+ // *************************************************
1919
20- chimpSwitches +=
21- '--path=tests/steps' ;
20+ function startProcess ( opts , callback ) {
21+ var proc = exec (
22+ opts . command ,
23+ opts . options
24+ ) ;
2225
23- chimpNoMirror ( ) ;
26+ if ( opts . waitForMessage ) {
27+ proc . stdout . on ( 'data' , function waitForMessage ( data ) {
28+ if ( data . toString ( ) . match ( opts . waitForMessage ) ) {
29+ if ( callback ) {
30+ callback ( ) ;
31+ }
32+ }
33+ } ) ;
34+ }
2435
25- // *************************************************
36+ if ( ! opts . silent ) {
37+ proc . stdout . pipe ( process . stdout ) ;
38+ proc . stderr . pipe ( process . stderr ) ;
39+ }
2640
27- function chimpNoMirror ( ) {
28- appOptions . waitForMessage = 'App running at' ;
29- startApp ( function ( ) {
30- startChimp ( ) ;
41+ if ( opts . logFile ) {
42+ var logStream = fs . createWriteStream ( opts . logFile , { flags : 'a' } ) ;
43+ proc . stdout . pipe ( logStream ) ;
44+ proc . stderr . pipe ( logStream ) ;
45+ }
46+
47+ proc . on ( 'close' , function ( code ) {
48+ console . log ( opts . name , 'exited with code ' + code ) ;
49+ for ( var i = 0 ; i < processes . length ; i += 1 ) {
50+ processes [ i ] . kill ( ) ;
51+ }
52+ process . exit ( code ) ;
3153 } ) ;
54+ processes . push ( proc ) ;
3255}
3356
3457function startApp ( callback ) {
@@ -51,41 +74,17 @@ function startChimp() {
5174 env : Object . assign ( { } , process . env , {
5275 NODE_PATH : process . env . NODE_PATH +
5376 path . delimiter + srcDir +
54- path . delimiter + srcDir + '/node_modules' ,
55- } ) ,
56- } ,
77+ path . delimiter + srcDir + '/node_modules'
78+ } )
79+ }
5780 } ) ;
5881}
5982
60- function startProcess ( opts , callback ) {
61- var proc = exec (
62- opts . command ,
63- opts . options
64- ) ;
65- if ( opts . waitForMessage ) {
66- proc . stdout . on ( 'data' , function waitForMessage ( data ) {
67- if ( data . toString ( ) . match ( opts . waitForMessage ) ) {
68- if ( callback ) {
69- callback ( ) ;
70- }
71- }
72- } ) ;
73- }
74- if ( ! opts . silent ) {
75- proc . stdout . pipe ( process . stdout ) ;
76- proc . stderr . pipe ( process . stderr ) ;
77- }
78- if ( opts . logFile ) {
79- var logStream = fs . createWriteStream ( opts . logFile , { flags : 'a' } ) ;
80- proc . stdout . pipe ( logStream ) ;
81- proc . stderr . pipe ( logStream ) ;
82- }
83- proc . on ( 'close' , function ( code ) {
84- console . log ( opts . name , 'exited with code ' + code ) ;
85- for ( var i = 0 ; i < processes . length ; i += 1 ) {
86- processes [ i ] . kill ( ) ;
87- }
88- process . exit ( code ) ;
83+ function chimpNoMirror ( ) {
84+ appOptions . waitForMessage = 'App running at' ;
85+ startApp ( function ( ) {
86+ startChimp ( ) ;
8987 } ) ;
90- processes . push ( proc ) ;
9188}
89+
90+ chimpNoMirror ( ) ;
0 commit comments