Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript karma自定义启动器:要运行包含curl命令的bash脚本,它必须返回什么?_Javascript_Bash_Shell_Testing_Karma Runner - Fatal编程技术网

Javascript karma自定义启动器:要运行包含curl命令的bash脚本,它必须返回什么?

Javascript karma自定义启动器:要运行包含curl命令的bash脚本,它必须返回什么?,javascript,bash,shell,testing,karma-runner,Javascript,Bash,Shell,Testing,Karma Runner,为了运行javascript测试,我编写了一行Bash脚本,通过curl在Teamcity中触发CI构建 我希望它在更改一个javascript测试文件后自动运行。 我已经设置了Karma Testrunner来监视文件系统。这很有效 现在我想运行我的bash脚本一次,但我不知道它应该返回什么,以便karma知道它已成功启动 karma start --browsers ~/bin/tcbuild.sh 结果 INFO [karma]: Karma v0.10.9 server starte

为了运行javascript测试,我编写了一行Bash脚本,通过curl在Teamcity中触发CI构建

我希望它在更改一个javascript测试文件后自动运行。 我已经设置了Karma Testrunner来监视文件系统。这很有效

现在我想运行我的bash脚本一次,但我不知道它应该返回什么,以便karma知道它已成功启动

karma start --browsers ~/bin/tcbuild.sh 
结果

INFO [karma]: Karma v0.10.9 server started at http://localhost:9876/
INFO [launcher]: Starting browser /home/knb/bin/tcbuild.sh
ERROR [launcher]: Cannot start /home/knb/bin/tcbuild.sh

INFO [launcher]: Trying to start /home/knb/bin/tcbuild.sh again.
ERROR [launcher]: Cannot start /home/knb/bin/tcbuild.sh

INFO [launcher]: Trying to start /home/knb/bin/tcbuild.sh again.
但是脚本实际上已经开始了(并在几秒钟内触发了3次构建),但是karma没有意识到这一点

我希望karma尝试只启动一次shell脚本。 剧本必须返回什么业力

我必须“守护”shell脚本吗

脚本
~/bin/tcbuild.sh
如下所示,正如我所说,它是一个单行程序:

#!/bin/bash

curl --user myacc:secrit --anyauth --url "http://my.ciserver.com:8111/app/rest/buildQueue" --request POST --header "Content-Type:application/xml" --data-binary @/opt/teamcity/build-js-qunit.xml 
更新:

我的机器叫wb3。Karma启动的Chrome实例监听端口9877

lsof -u knb -i | grep 9877
屈服

    COMMAND     PID USER   FD      TYPE             DEVICE   SIZE/OFF     NODE NAME
    node      57786  knb   12u     IPv4            8271405        0t0      TCP *:9877 (LISTEN)
    node      57786  knb   14u     IPv4            8272554        0t0      TCP wb3:9877->wb3:33503 (ESTABLISHED)
    node      57786  knb   19u     IPv4            8274193        0t0      TCP    
wb3:9877->wb3:33507 (ESTABLISHED)
    node      57786  knb   22u     IPv4            8274196        0t0      TCP wb3:9877->wb3:33511 (ESTABLISHED)
    chrome    57978  knb   80u     IPv4            8270580        0t0      TCP wb3:33503->wb3:9877 (ESTABLISHED)
    chrome    57978  knb   81u     IPv4            8270583        0t0      TCP wb3:33504->wb3:9877 (ESTABLISHED

似乎我需要保持curl命令的活动状态并与节点通信。

很可能它以非零状态退出。尝试添加类似于
RC=$?;echo“rc=$rc at$(date)”>>/var/tmp/tcbuild.log;在curl调用后退出$RC
。谢谢@user3159253,我尝试了你的代码片段,我以前也独立尝试过在curl命令后退出0,但这不会改变karma的行为。我怀疑我必须让进程保持活动状态和/或打开一个套接字,或其他什么。提到浏览器脚本应该有一个参数,一个id为的URL,应该传递给服务器以正确识别浏览器。@user3159253但在该句前面的一行,在代码示例中,它说
karma start--browsers/usr/local/bin/custom browser.sh
。这是矛盾的。没有给定id参数的URL。这一行只说明karma使用3个参数运行,“开始”,“浏览器”,以及自定义浏览器命令的路径。事实上,它没有说明如何调用此自定义浏览器命令。