I have a Node.js based project in which I am using Jest for .js unit-testing. I have the collectCoverage
config setting set to true
and can see the test coverage table in my local development runs and when the build is run in Codeship.
However, I can't seem to get the setup correct for getting the test coverage data to post to Code Climate to have the results displayed there.
I saved the repo token given in CodeClimate's setup instructions into a Codeship environment variable, as follows:
CODECLIMATE_REPO_TOKEN=xxxxxxxxxx codeclimate-test-reporter < lcov.info
Given that locally, the Jest collectCoverage saves the lcov.info
data file in a directory called coverage
in the root of my project, I also have tried a variation of the environment variable with that path, as such:
CODECLIMATE_REPO_TOKEN=xxxxxxxxxx codeclimate-test-reporter < coverage/lcov.info
For the installation of the codeclimate-test-reporter node module (npm install -g codeclimate-test-reporter
), it's not clear to me from the instructions exactly where it should go. I've tried putting it:
npm install
command,I have also tried installing it as a local dev dependency in my package.json.
No combination of the above attempts at setting things up has resulted in seeing anything on the Code Climate side regarding the test coverage.
As a final note about what I've done, I have not committed my local coverage
directory, so it is not included in my Codeship build.
Can anyone help me figure out what I'm doing wrong?
Of course, shortly after posting this question, figured out the problem.
Instead of putting the CODECLIMATE_REPO_TOKEN in the Codeship Environment Variables section directly, it needed to be included in the Codeship Test Pipeline Configuration settings, after the npm test
command (which is what generates the coverage
directory). And, you do need to be sure the path to the lcov.info
file indicates the coverage directory.