运行多个测试脚本的命令,将退出代码整理成最终的通过/失败?

时间:2015-03-10 15:18:43

标签: node.js shell testing

我有一个命令来运行我所有的项目测试,如下所示:

$ node test/test1.js && node test/test2.js && node test/test3.js

但问题是,如果第一个测试脚本测试失败(因此以非零退出代码结束),则另外两个测试脚本不会运行。理想情况下,即使第一个测试脚本失败,我也希望看到所有三个测试脚本的控制台输出。

我想要的是一种运行所有我的测试脚本的方法,即使其中一些失败了......但如果任何失败,那么最终退出代码应为1。

是否有任何命令语法可以执行此操作?

1 个答案:

答案 0 :(得分:1)

我认为这需要一些在一行中读取不好的shell编程。我创建了./bin/test.sh脚本并从package.json脚本部分调用它。这是脚本的要点

#!/bin/bash
cd "$(dirname "$0")/.."
fails=""
check() {
  if [[ $1 -ne 0]]; then
    fails="${fails} $2"
  fi 
}

# explicit list here but a for loop would also work
node ./test/test1.js
check $? test1

node ./test/test2.js
check $? test2

if [[ -n "${fails}" ]]; then
  echo "Tests failed: ${fails}"
  exit 1
fi