仅从Travis发送数据到Coveralls,而不是在本地测试时

时间:2014-08-03 19:03:56

标签: node.js npm travis-ci coveralls

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

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

当我在本地运行npm test时,我不想向工作服发送覆盖数据。我每次提交通常会运行npm test几十次。但是当我推动Travis做其事时,我想让Travis更新我的报道。

我可以在package.json中找到类似的东西:

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

哪个适用于本地,并且不会更新工作服,但Travis也不会更新工作服。或者我可以做到:

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

哪个适合Travis,但每次我在本地运行npm test时都会尝试将数据推送到Coveralls。

据我所知,我无法让Travis运行npm test以外的其他内容。

我不愿意让任何潜在用户或贡献者记得使用

进行测试
$ npm run-script test-local

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

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

1 个答案:

答案 0 :(得分: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"
}

一切正常。