кофейный сценарий - PullRequest
       9

кофейный сценарий

3 голосов
/ 15 ноября 2011

У меня есть следующая задача cakefile для запуска тестов на селен, которая успешно выполняется и доходит до конца тестов, но не завершается.

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», зарегистрированные в консоли.

Ответы [ 3 ]

2 голосов
/ 15 ноября 2011

Если один из двух дочерних процессов (app и selenium) все еще работает, основной процесс продолжит работу.Вызов stdin.end() на них не меняет этого.То, что вы хотите сделать, это заставить их умереть, с метко названным kill-методом :

app.kill()
selenium.kill()
console.log 'completed Selenium Tests'
0 голосов
/ 04 октября 2013

Другой вариант - позвонить process.exit().Хотя я не уверен, как это повлияет на детей.

0 голосов
/ 16 ноября 2011

Тревор Бёрнхем указал мне в правильном направлении.Но основная проблема заключалась в том, что дочерний процесс selenium, который я порождал, был сценарием оболочки, выполняющим процесс Java.Так что в основном при вызове app.kill () он убивал сценарий оболочки, но не основной процесс Java.

Спасибо за помощь.

...