我有以下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'
有没有办法告诉任务完成?我在控制台中记录了“已完成的Selenium测试”。
答案 0 :(得分:2)
如果两个子进程中的一个(app
和selenium
)仍在运行,则主进程将继续运行。在他们上面调用stdin.end()
不会改变这一点。你想要做的是用适当命名的kill method:
app.kill()
selenium.kill()
console.log 'completed Selenium Tests'
答案 1 :(得分:0)
感谢您的帮助。
答案 2 :(得分:0)
另一种选择是致电process.exit()
。虽然,我不确定这对孩子有什么影响。