我有一个命令来运行我所有的项目测试,如下所示:
$ node test/test1.js && node test/test2.js && node test/test3.js
但问题是,如果第一个测试脚本测试失败(因此以非零退出代码结束),则另外两个测试脚本不会运行。理想情况下,即使第一个测试脚本失败,我也希望看到所有三个测试脚本的控制台输出。
我想要的是一种运行所有我的测试脚本的方法,即使其中一些失败了......但如果任何失败,那么最终退出代码应为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