2016-12-13 31 views
1

在我的package.json中的脚本目前看起来是这样的:运行伊斯坦布尔的测试覆盖率通过shell脚本包装节点模块

"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和我的shell文件来运行?

回答

1

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" 
} 
+0

很好的答案!谢谢!附:我已经阅读了文档,并知道istanbul运行节点脚本,我只是想帮助搞清楚如何运行我的shell脚本(我是编写shell脚本的新手)。再次感谢您的答案! – Ruth

相关问题