CasperJS将退出代码传递给Bash

时间:2015-11-17 15:13:46

标签: bash casperjs travis-ci exit-code

我在Travis CI上运行CasperJS测试时遇到问题。

每当测试失败时,CasperJS都会返回status code 1,这将是在失败的测试中返回的正确状态代码。

我正在使用bash脚本运行所有测试,我需要bash脚本中测试的退出代码。我尝试了$?运算符,但这只会返回命令是否正确执行。由于它已正确完成,因此始终返回0

所以我的问题是:有没有办法将CasperJs-Test状态代码传递给我的bash脚本?

我需要这一切的原因是我在Travis CI上运行我的测试,Travis总是以status 0退出,因为测试正确执行,我需要让Travis退出并使用正确的退出代码。

更新

这是我的剧本:

#!/bin/sh


WIDGET_NAME=${1:-widget} # defaults to 'widget'
PORT=${2:-4001} # default port is 4001
SERVER_PORT=${3:-4002} # default port is 4002
TEST_CASES=${4:-./test/features/*/*/*-test.casper.js} # default run     all subdirectories

# bail on errors
set -e

# switch to root folder
cd `dirname $0`/..

echo "Starting feature tests ..."

echo "- start App server on port $PORT"
WIDGET_NAME_PASCAL_CASE=`node -e "console.log(require('pascal-case')    (process.argv[1]))" $WIDGET_NAME`
./node_modules/.bin/beefy app/widget.js $PORT \
  --cwd public \
  --index public/widget-test.html \
  -- \
  --standalone $WIDGET_NAME_PASCAL_CASE \
    -t [ babelify --sourceMapRelative . ] \
    -t browserify-shim \
  --exclude moment 1>/dev/null &
echo $! > /tmp/appointment-widget-tester-process1.pid
sleep 1

echo "- start Fake API server on port $SERVER_PORT"
bin/fake-api $SERVER_PORT 1>/dev/null &
echo $! > /tmp/appointment-widget-tester-process2.pid
sleep 1

echo "- run feature tests"
mocha-casperjs $TEST_CASES --viewport-width=800 --viewport-height=600 --fail-fast | grep --line-buffered -v -e '^$' | grep --line-buffered -v "Unsafe JavaScript"

echo "- stop App and Fake API server"
kill -9 `cat /tmp/appointment-widget-tester-process*.pid`
rm /tmp/appointment-widget-tester-process*.pid

echo "done."

1 个答案:

答案 0 :(得分:0)

我发现了我的问题:

这取决于|运营商的性质!第一个操作是我的测试开始,第二个操作是|运算符是grep和我$?引用控制台上最后一个命令后的第二个操作,因此返回退出代码grep而不是mocha-casperjs - 跑步者

解决方案:Pipe output and capture exit status in Bash