我的软件包中的脚本。当前看起来像这样:
"scripts": {
"test": "./spec/run-local-tests.sh",
"coverage": "istanbul cover jasmine-node spec",
"start": "gulp"
}
测试脚本运行此.SH文件:
#!/bin/sh
echo "Renaming database file produced by previous test run"
mv -f 'shared-local-instance.db' 'shared-local-instance.db.previous'
echo "Starting DynamoDB"
java -Djava.library.path=./DynamoDBLocal_lib -jar dynamodb/DynamoDBLocal.jar -sharedDb &
export JAVA_PID=$!
echo "Running Tests"
./node_modules/jasmine-node/bin/jasmine-node spec
echo "Cleaning up DynamoDB - killing local instance"
kill -9 $JAVA_PID
但是,我现在想更改我的 coverage
脚本以运行shell文件:
"coverage": "istanbul cover ./spec/run-local-tests.sh"
,但我遇到了一个错误,上面写着:
echo "Renaming database file produced by previous test run"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected string
有没有一种方法可以让Instanbul和我的外壳文件运行?
rtfm。
伊斯坦布尔文档说:
cover
命令可用于获取一个覆盖对象,并报告任何任意节点脚本。
(强调我的)
istanbul cover
需要一个节点脚本。它不能对Shell脚本或任何其他任意可执行执行操作。
您可以编写一个执行所需设置/清理的shell脚本,然后启动istanbul cover
,然后进行配置:
"scripts": {
"test": "./spec/run-local-tests.sh",
"coverage": "./spec/run-local-tests-with-coverage.sh",
"start": "gulp"
}
或者您可以修改现有脚本,也许是这样:
echo "Running Tests"
${COVERAGE} ./node_modules/jasmine-node/bin/jasmine-node spec
然后使用环境变量集来调用它:
"scripts": {
"test": "./spec/run-local-tests.sh",
"coverage": "env COVERAGE='istanbul coverage' ./spec/run-local-tests.sh",
"start": "gulp"
}