From 695a9523fee3f7864f36d5fa89c2fe9be2ef49e6 Mon Sep 17 00:00:00 2001 From: Paris Kasidiaris Date: Wed, 22 Feb 2017 16:17:22 +0200 Subject: [PATCH] Fix #531: Submit code coverage to coveralls.io --- .gitignore | 3 +++ .travis.yml | 1 + gulpfile.js | 21 ++++++++++++++++++++- package.json | 5 ++++- src/test/test.js | 1 + 5 files changed, 29 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index f44dfda2..d5531c1d 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ npm-debug.log .env build/ .vscode/ + +# Directories needed for code coverage +/coverage/ diff --git a/.travis.yml b/.travis.yml index b32fc7ea..b98cb202 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,3 +16,4 @@ addons: notifications: email: false script: npm run $NPM_COMMAND +after_success: npm run coveralls diff --git a/gulpfile.js b/gulpfile.js index 8aa86b11..0043d7b1 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,7 +1,9 @@ const browserify = require('browserify'); const buffer = require('vinyl-buffer'); +const coveralls = require('gulp-coveralls'); const fs = require('fs-extra'); const gulp = require('gulp'); +const istanbul = require('gulp-istanbul'); const merge = require('merge-stream'); const mocha = require('gulp-mocha'); const mochaPhantomJs = require('gulp-mocha-phantomjs'); @@ -70,9 +72,18 @@ gulp.task('browserify', ['tsc'], function() { return merge(bundleStream, copyAddons, copyStylesheets); }); -gulp.task('test-mocha', function () { +gulp.task('instrument-test', function () { + return gulp.src(['lib/**/*.js']) + // Covering files + .pipe(istanbul()) + // Force `require` to return covered files + .pipe(istanbul.hookRequire()); +}); + +gulp.task('test-mocha', ['instrument-test'], function () { return gulp.src(['lib/*test.js', 'lib/**/*test.js'], {read: false}) .pipe(mocha()) + .pipe(istanbul.writeReports()); }); gulp.task('test-mocha-phantomjs', function () { @@ -91,6 +102,14 @@ gulp.task('sorcery', ['browserify'], function () { chain.writeSync(); }); +/** + * Submit coverage results to coveralls.io + */ +gulp.task('coveralls', function () { + gulp.src('coverage/**/lcov.info') + .pipe(coveralls()); +}); + gulp.task('build', ['sorcery']); gulp.task('test', ['test-mocha', 'test-mocha-phantomjs']); gulp.task('default', ['build']); diff --git a/package.json b/package.json index 06a7492b..3019103f 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,8 @@ "glob": "^7.0.5", "gulp": "^3.9.1", "gulp-cli": "^1.2.2", + "gulp-coveralls": "^0.1.4", + "gulp-istanbul": "^1.1.1", "gulp-mocha": "^3.0.1", "gulp-mocha-phantomjs": "^0.12.0", "gulp-sourcemaps": "1.9.1", @@ -70,6 +72,7 @@ "test": "gulp test", "build:docs": "jsdoc -c jsdoc.json", "build": "gulp build", - "prepublish": "npm run build" + "prepublish": "npm run build", + "coveralls": "gulp coveralls" } } diff --git a/src/test/test.js b/src/test/test.js index d0d70686..716b48c4 100644 --- a/src/test/test.js +++ b/src/test/test.js @@ -550,6 +550,7 @@ describe('xterm.js', function() { describe('unicode - surrogates', function() { it('2 characters per cell', function () { + this.timeout(10000); // This is needed because istanbul patches code and slows it down var high = String.fromCharCode(0xD800); for (var i=0xDC00; i<=0xDCFF; ++i) { xterm.write(high + String.fromCharCode(i));