coffee script cakefile задача не завершается
У меня есть следующая задача cakefile для запуска тестов selenium, которая успешно выполняется и доходит до конца тестов, но не завершается.
muffin = require 'muffin'
wrench = require 'wrench'
http = require 'http'
fs = require 'fs'
spawn = require('child_process').spawn
exec = require('child_process').exec
task 'selenium', 'run selenium tests', (options) ->
sel = require './test/selenium'
app = spawn 'node', ['app.js']
app.stdout.on 'data', (data) ->
if /listening on port/.test data
selenium = spawn 'selenium'
selenium.stdout.on 'data', (data) ->
console.log 'stdout: ' + data
if /Started.*jetty.Server/.test data
sel.run ->
app.stdin.end()
selenium.stdin.end()
console.log 'completed Selenium Tests'
Есть ли способ, которым я могу сказать задаче, чтобы она закончилась? Я получаю "завершенные тесты Селена", зарегистрированные в консоли.
3 ответа:
Если один из двух дочерних процессов (
app
иselenium
) все еще работает, основной процесс будет продолжать работать. Вызовstdin.end()
на них ничего не меняет. То, что вы хотите сделать, это заставить их умереть, с метко названным методом убийства:app.kill() selenium.kill() console.log 'completed Selenium Tests'
Тревор Бернем, указал мне в правильном направлении. Но основная проблема заключалась в том, что дочерний процесс selenium, который я создавал, был сценарием оболочки, запускающим процесс java. Так что в основном при вызове приложения.kill() это убивало сценарий оболочки, но не лежащий в основе процесс java.
Спасибо за помощь.