From 7c9795ba355e2e6e10b46b0bd67a16627f82d307 Mon Sep 17 00:00:00 2001 From: Bart van den Eijnden Date: Wed, 1 Apr 2015 12:08:14 +0200 Subject: [PATCH] Integrate istanbul for test coverage --- .gitignore | 2 ++ .travis.yml | 2 ++ package.json | 4 +++- tasks/test.js | 5 +++++ test/phantom_hooks.js | 15 +++++++++++++++ 5 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 test/phantom_hooks.js diff --git a/.gitignore b/.gitignore index 1aa8fc6a55..aaa9428346 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ /examples/example-list.xml /node_modules/ /dist/ +/src_instrumented/ +/coverage/ diff --git a/.travis.yml b/.travis.yml index 56346bd3b5..7c7c730b4c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,3 +6,5 @@ before_script: - "rm src/ol/renderer/webgl/*shader.js" script: "./build.py ci" + +after_success: "npm run test-coverage" diff --git a/package.json b/package.json index d92b5c8e59..951d9aa377 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "install": "node tasks/install.js", "postinstall": "closure-util update", "start": "node tasks/serve.js", - "test": "node tasks/test.js" + "test": "node tasks/test.js", + "test-coverage": "istanbul instrument src -o src_instrumented && mv src src_old && mv src_instrumented src && istanbul cover npm test istanbul && mv src src_instrumented && mv src_old src && istanbul report --root coverage lcov" }, "main": "dist/ol.js", "repository": { @@ -38,6 +39,7 @@ "devDependencies": { "clean-css": "2.2.16", "expect.js": "0.3.1", + "istanbul": "^0.3.13", "jquery": "2.1.1", "jshint": "2.5.6", "mocha": "1.21.5", diff --git a/tasks/test.js b/tasks/test.js index 0f58e7bdea..d34e7928ee 100644 --- a/tasks/test.js +++ b/tasks/test.js @@ -60,6 +60,11 @@ serve.createServer(function(err, server) { url + '/test/index.html' ]; + if (process.argv.length > 2 && process.argv[2] === 'istanbul') { + args.push('spec', '{"hooks": "' + + path.join(__dirname, '../test/phantom_hooks.js') + '"}'); + } + var child = spawn(phantomjs.path, args, {stdio: 'inherit'}); child.on('exit', function(code) { process.exit(code); diff --git a/test/phantom_hooks.js b/test/phantom_hooks.js new file mode 100644 index 0000000000..5f2fa839b6 --- /dev/null +++ b/test/phantom_hooks.js @@ -0,0 +1,15 @@ +module.exports = { + afterEnd: function(runner) { + var fs = require('fs'); + var coverage = runner.page.evaluate(function() { + return window.__coverage__; + }); + + if (coverage) { + console.log('Writing coverage to coverage/coverage.json'); + fs.write('coverage/coverage.json', JSON.stringify(coverage), 'w'); + } else { + console.log('No coverage data generated'); + } + } +};