6

我有一个使用 Travis CI 监控构建状态的应用程序 ( https://github.com/idmillington/dendry )。我使用伊斯坦布尔来概括一份覆盖率报告,我想把它发送给 Coveralls,为 README 生成一个覆盖率按钮。

所有这些我都可以开始工作。但...

当我在npm test本地运行时,我不想发送覆盖数据。我通常npm test为每次提交运行数十次。但是当我推动并且 Travis 做它的事情时,我希望 Travis 为我更新覆盖范围。

我的 package.json 中可以有这样的东西:

"scripts": {
    "test": "./node_modules/.bin/istanbul test ./node_modules/.bin/_mocha",
}

这对本地来说很好,并且不会更新工作服,但特拉维斯也不会更新工作服。或者我可以这样做:

"scripts": {
    "test": "./node_modules/.bin/istanbul test ./node_modules/.bin/_mocha && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info",
}

这对 Travis 来说是完美的,但每次我在npm test本地运行时都会尝试将数据推送到工作服。

据我所知,我不能要求 Travis 运行npm test.

我不愿意要求任何潜在的用户或贡献者记住测试使用

$ npm run-script test-local

或诸如此类,尤其是在npm test没有正确的工作服私钥的情况下,运行会产生上传错误。

有没有办法在这里获得正确的行为?

4

1 回答 1

6

事实证明,答案非常简单。Travis 确实允许您在运行时调用您喜欢的任何脚本,因此我将其添加到我的.travis.yml文件中:

script: npm run-script test-on-travis

所以package.json我可以定义:

"scripts": {
    "test": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha",
    "test-on-travis": "./node_modules/.bin/istanbul cover --report lcovonly ./node_modules/.bin/_mocha && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"
}

一切正常。

于 2014-08-06T21:01:00.280 回答