Skip to content

Commit

Permalink
🐛 report code coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
philschatz committed Jan 17, 2017
1 parent bb15b84 commit c983ab0
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -9,7 +9,7 @@
"pretest": "npm run-script build",
"test": "npm run-script test-node && npm run-script test-browser",
"pretest-node": "babel --source-maps true --source-root ./index.js ./test/ -d ./test-transpiled/",
"test-node": "VCR_MODE=cache istanbul cover _mocha -- --reporter spec ./test-transpiled/**/node**.js",
"test-node": "VCR_MODE=cache istanbul cover --report json _mocha -- --reporter spec ./test-transpiled/**/node**.js",
"pretest-browser": "webpack --config ./webpack.config-browsertests.js",
"test-browser": "./script/run-test-browser.sh",
"test-browser:only": "mocha-phantomjs --reporter spec --timeout 20000 http://localhost:9876/test/index.html",
Expand Down Expand Up @@ -43,6 +43,7 @@
"eslint-config-standard": "^6.2.0",
"eslint-plugin-promise": "^3.4.0",
"eslint-plugin-standard": "^2.0.1",
"glob": "^7.1.1",
"grunt": "~1.0.1",
"grunt-bump": "~0.8.0",
"http-server": "^0.9.0",
Expand Down
17 changes: 17 additions & 0 deletions script/coverage-helper.js
@@ -0,0 +1,17 @@
var fs = require('fs')
var glob = require('glob')

glob('./dist/node/**/*.map', removeSourcesContent)
glob('./test-transpiled/**/*.map', removeSourcesContent)

function removeSourcesContent(err, files) {
if (files.length === 0) {
console.error('Could not find any sourcemap files to tweak for remap-istanbul')
process.exit(1)
}
files.forEach(function(file) {
var contents = JSON.parse(fs.readFileSync(file))
delete contents.sourcesContent
fs.writeFileSync(file, JSON.stringify(contents))
})
}
11 changes: 9 additions & 2 deletions script/send-coverage.sh
@@ -1,13 +1,20 @@
#!/bin/bash

# Istanbul does not preserve sourcemaps when generating code coverage so
# this uses remap-istanbul. But remap-istanbul likes to use the sourcesContent
# field in the sourcemap files which causes them to not point to the correct
# source. So coverage-helper.js removes that field in all sourcemap files.

nodeVer=$(node --version)
semver=( ${nodeVer//./ } )

if [[ "${semver[0]}" == "v6" ]]; then

echo "==> Reporting coverage to codecov"
$(npm bin)/remap-istanbul --exclude 'index.js' --input ./coverage/coverage.json --output ./coverage/coverage-mapped-to-source.json --type json
$(npm bin)/codecov --file ./coverage/coverage-mapped-to-source.json
rm ./coverage/coverage.json # Just in case so codecov does not find it
node ./script/coverage-helper.js
$(npm bin)/remap-istanbul --exclude 'index.js' --input ./coverage/coverage-final.json --output ./coverage/coverage-mapped-to-source.json --type json
$(npm bin)/codecov --file=./coverage/coverage-mapped-to-source.json

else
echo "==> Skipping coverage reporting because remap-istanbul only works on node v6+"
Expand Down

0 comments on commit c983ab0

Please sign in to comment.