【问题标题】:Running Istanbul test coverage for Node modules via shell script wrappers通过 shell 脚本包装器运行 Node 模块的伊斯坦布尔测试覆盖率
【发布时间】:2016-12-13 15:14:03
【问题描述】:

我的 package.json 中的脚本目前如下所示:

"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 文件?

【问题讨论】:

    标签: shell istanbul test-coverage


    【解决方案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"
    }
    

    【讨论】:

    • 很好的答案!谢谢! p.s.我已经阅读了文档并且知道 istanbul 运行节点脚本,我只是想帮助弄清楚如何运行我的 shell 脚本(我是编写 shell 脚本的新手)。再次感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2015-08-26
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2019-10-29
    • 2015-07-02
    • 2013-12-19
    相关资源
    最近更新 更多