@@ -5,6 +5,7 @@ module.exports = function coreSteps () {
55 var exec = ref . exec
66 var spawn = ref . spawn
77 var rimraf = require ( 'rimraf' )
8+ var stopper = require ( '../../../lib/stopper' )
89
910 this . World = require ( '../support/world' ) . World
1011 require ( '../support/after_hooks' ) . call ( this )
@@ -39,13 +40,22 @@ module.exports = function coreSteps () {
3940 return callback ( )
4041 } )
4142
43+ this . When ( / ^ I s t o p a s e r v e r p r o g r a m m a t i c a l l y / , function ( callback ) {
44+ var _this = this
45+ setTimeout ( function ( ) {
46+ stopper . stop ( _this . configFile , function ( exitCode ) {
47+ _this . stopperExitCode = exitCode
48+ } )
49+ callback ( )
50+ } , 1000 )
51+ } )
52+
4253 this . When ( / ^ I s t a r t a s e r v e r i n b a c k g r o u n d / , function ( callback ) {
4354 this . writeConfigFile ( tmpDir , tmpConfigFile , ( function ( _this ) {
4455 return function ( err , hash ) {
4556 if ( err ) {
4657 return callback . fail ( new Error ( err ) )
4758 }
48-
4959 var configFile = path . join ( tmpDir , hash + '.' + tmpConfigFile )
5060 var runtimePath = path . join ( baseDir , 'bin' , 'karma' )
5161 _this . child = spawn ( '' + runtimePath , [ 'start' , '--log-level' , 'debug' , configFile ] )
@@ -173,7 +183,6 @@ module.exports = function coreSteps () {
173183 var actualOutput = this . lastRun . stdout . toString ( )
174184 var actualError = this . lastRun . error
175185 var actualStderr = this . lastRun . stderr . toString ( )
176-
177186 if ( actualOutput . match ( new RegExp ( expectedOutput ) ) ) {
178187 return callback ( )
179188 }
@@ -183,11 +192,15 @@ module.exports = function coreSteps () {
183192 }
184193 } )
185194
186- this . Then ( / ^ T h e s e r v e r i s d e a d ( w i t h e x i t c o d e ( [ 0 - 9 ] + ) ) ? $ / , function ( withExitCode , code , callback ) {
187- setTimeout ( ( function ( _this ) {
188- if ( _this . childExitCode === undefined ) return callback ( new Error ( 'Server has not exited.' ) )
189- if ( code === undefined || parseInt ( code , 10 ) === _this . childExitCode ) return callback ( )
190- callback ( new Error ( 'Exit-code mismatch' ) )
191- } ) ( this ) , 1000 )
192- } )
195+ this . Then ( / ^ T h e ( s e r v e r | s t o p p e r ) i s d e a d ( w i t h e x i t c o d e ( [ 0 - 9 ] + ) ) ? $ / ,
196+ function ( stopperOrServer , withExitCode , code , callback ) {
197+ var server = stopperOrServer === 'server'
198+ var _this = this
199+ setTimeout ( function ( ) {
200+ var actualExitCode = server ? _this . childExitCode : _this . stopperExitCode
201+ if ( actualExitCode === undefined ) return callback ( new Error ( 'Server has not exited.' ) )
202+ if ( code === undefined || parseInt ( code , 10 ) === actualExitCode ) return callback ( )
203+ callback ( new Error ( 'Exit-code mismatch' ) )
204+ } , 1000 )
205+ } )
193206}
0 commit comments