Skip to content

Commit

Permalink
Merge 1c215ab into c8f4756
Browse files Browse the repository at this point in the history
  • Loading branch information
thostetler committed Sep 8, 2017
2 parents c8f4756 + 1c215ab commit adb356b
Show file tree
Hide file tree
Showing 85 changed files with 406 additions and 431 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ install: npm install
deployg: grunt release
before_script: grunt setup
script:
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then echo "grunt test"; grunt test; fi
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then echo "grunt test coverage"; grunt test coverage; fi
#- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then echo "grunt sauce"; grunt sauce; fi
env:
global:
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ bumblebee
=========

[![Build Status](https://travis-ci.org/adsabs/bumblebee.svg?branch=master)](https://travis-ci.org/adsabs/bumblebee)
[![Coverage Status](https://coveralls.io/repos/github/adsabs/bumblebee/badge.svg?branch=fix-code-coverage)](https://coveralls.io/github/adsabs/bumblebee?branch=fix-code-coverage)

Bumblebee is a platform for building UI interface(s) - it was designed for Astrophysics Data System (https://ui.adsabs.harvard.edu) and its API.

Expand Down
30 changes: 5 additions & 25 deletions grunt/aliases.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,31 +96,11 @@ test: 'test:once'
coverage:
description: 'Generate the test coverage report'
tasks:
- 'env:dev'
- 'express:dev'
- 'blanket_mocha:full'

testfunc: 'testfunc:local'

'testfunc:local':
description: 'Run the local functional tests'
tasks:
- 'env:dev'
- 'sass'
- 'autoprefixer'
- 'exec:git_describe'
- 'express:dev'
- 'intern:local'

'testfunc:remote':
description: 'Run the remote functional tests'
tasks:
- 'env:dev'
- 'sass'
- 'autoprefixer'
- 'exec:git_describe'
- 'express:dev'
- 'intern:remote'
- 'clean:coverage'
- 'exec:nyc-instrument'
- 'mocha-runner:coverage'
- 'coverage-report:coveralls'
- 'exec:coveralls-report'

sauce:
description: 'Run the SauceLabs tests'
Expand Down
80 changes: 0 additions & 80 deletions grunt/blanket_mocha.js

This file was deleted.

3 changes: 3 additions & 0 deletions grunt/clean.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,8 @@ module.exports = {
'./bower_components',
'test/reports'
]
},
coverage: {
src: ['test/coverage']
}
};
36 changes: 36 additions & 0 deletions grunt/config/coverage-hook.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
'use strict';

// phantomjs's version of `fs`
var fs = require('fs');
var COVERAGE_FILE = 'test/coverage/coverage.json';

var saveCoverage = function (page) {
var coverage = page.evaluate(function () {
return window.__coverage__;
});

// fail if we don't have coverage
if (!coverage) {
return;
}

// fix paths to files
var coverageKeys = Object.keys(coverage);
coverageKeys.forEach(function (key) {
coverage[key].path = 'src/js/' + coverage[key].path;
});

try {
fs.write(COVERAGE_FILE, JSON.stringify(coverage), 'w');
console.log('Coverage File Written');
} catch (e) {
console.log('Unable to write to file...');
console.error(e);
}
};

module.exports = {
afterEnd: function (runner) {
saveCoverage(runner.page);
}
};
56 changes: 56 additions & 0 deletions grunt/coverage-report.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
'use strict';
/**
* creating coverage task
*
* @module grunt/coverage
*/
module.exports = function (grunt) {

var istanbul = require('istanbul');
var COVERAGE_HTML_OUTPUT_DIR = 'test/coverage/reports/html';
var COVERAGE_LCOV_OUTPUT_DIR = 'test/coverage/reports/lcov';
var COVERAGE_COLLECTION_FILE = 'test/coverage/coverage.json';

grunt.registerMultiTask('coverage-report', function () {

var options = this.options({ htmlReport: false });

// get the coverage object from the collection file generated
var coverageObject = grunt.file.readJSON(COVERAGE_COLLECTION_FILE);
var collector = new istanbul.Collector();
collector.add(coverageObject);

// Generate a quick summary to be shown in the output
var finalCoverage = collector.getFinalCoverage();
var summary = istanbul.utils.summarizeCoverage(finalCoverage);

// Output the percentages of the coverage
grunt.log.ok('Coverage:');
grunt.log.ok('- Lines: ' + summary.lines.pct + '%');
grunt.log.ok('- Statements: ' + summary.statements.pct + '%');
grunt.log.ok('- Functions: ' + summary.functions.pct + '%');
grunt.log.ok('- Branches: ' + summary.branches.pct + '%');

// write reports
if (options.htmlReport) {
istanbul.Report.create('html', {
dir: COVERAGE_HTML_OUTPUT_DIR
}).writeReport(collector, true);
}

istanbul.Report.create('lcov', {
dir: COVERAGE_LCOV_OUTPUT_DIR
}).writeReport(collector, true);
});

return {
'coveralls': {
htmlReport: false
},
'html': {
htmlReport: true
}
}
};


12 changes: 0 additions & 12 deletions grunt/coveralls.js

This file was deleted.

6 changes: 6 additions & 0 deletions grunt/exec.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,11 @@ module.exports = {
},
convert_enzyme: {
cmd: "mkdir src/libs/enzyme && ./node_modules/.bin/browserify --standalone enzyme -x 'react/addons' -x 'react/lib/ReactContext' -x 'react/lib/ExecutionEnvironment' node_modules/enzyme/build/index.js > src/libs/enzyme/enzyme.js"
},
'nyc-instrument': {
cmd: 'node_modules/.bin/nyc instrument src/js/ test/coverage/instrument'
},
'coveralls-report': {
cmd: 'cat test/coverage/reports/lcov/lcov.info | ./node_modules/coveralls/bin/coveralls.js'
}
};
22 changes: 0 additions & 22 deletions grunt/intern.js

This file was deleted.

40 changes: 40 additions & 0 deletions grunt/mocha-runner.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,27 @@ module.exports = function (grunt) {
var _ = require('lodash');
var async = require('async');
var spawn = require('child_process').spawn;
var INSTRUMENT_PREFIX = 'test/coverage/instrument/';
var COVERAGE_FILE_NAME = 'test/coverage/mapping.js';

/**
* Gather all the src paths and prefix them with the coverage path
* then generate mappings for requirejs to use to map to instrumented code
*/
var storeCoveragePaths = function () {
var mappings = grunt.file.expand([
'src/js/**/*.js',
'!src/js/**/*.jsx.js' // exclude es6 files
]).reduce(function (res, p) {
p = p.replace('src/', '').replace(/\.js$/, '');
res[p] = p.replace('js/', INSTRUMENT_PREFIX);
return res;
}, {});

var contents = 'define(' + JSON.stringify(mappings) + ');';

grunt.file.write(COVERAGE_FILE_NAME, contents);
};

grunt.registerMultiTask('mocha-runner', 'find and run tests', function () {
var done = this.async();
Expand Down Expand Up @@ -59,6 +80,11 @@ module.exports = function (grunt) {
return u += '&' + param.key + '=' + param.value;
}, url);
});

// get coverage paths
if (options.urlParams.coverage) {
storeCoveragePaths();
}
}

// no errors to begin with
Expand Down Expand Up @@ -95,11 +121,13 @@ module.exports = function (grunt) {

// spawn a new test for each url, output total failures
async.eachSeries(options.urls, spawnTest, function () {

if (errors > 0) {
grunt.fail.warn(errors + ' tests failed :(\n');
} else if (errors === 0) {
grunt.log.writeln(errors + ' tests failed :)\n');
}

done();
});
});
Expand All @@ -115,6 +143,18 @@ module.exports = function (grunt) {
options: {
suites: ['discovery']
}
},
coverage: {
options: {
suites: ['discovery'],
urlParams: { coverage: true },
args: {
ignoreResourceErrors: true,
timeout: 10000,
hooks: '../../grunt/config/coverage-hook.js'
},
htmlReport: false
}
}
};
};
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@
},
"devDependencies": {
"async": "^2.5.0",
"blanket": "1.1.7",
"browserify": "^14.4.0",
"chalk": "~0.4.0",
"coveralls": "^2.13.1",
"enzyme": "^2.9.1",
"express": "~3.4.8",
"grunt": "~0.4.5",
Expand Down Expand Up @@ -50,10 +50,11 @@
"grunt-sass": "^1.0.0",
"grunt-saucelabs": "~8.6.1",
"grunt-string-replace": "^1.2.0",
"intern": "~3.0.0",
"istanbul": "^0.4.5",
"load-grunt-config": "^0.19.2",
"mocha-phantomjs-core": "^2.1.2",
"needle": "~0.7.1",
"nyc": "^11.2.1",
"phantomjs": "^2.1.7",
"react": "^15.6.1",
"react-addons-test-utils": "^15.6.0",
Expand Down
Loading

0 comments on commit adb356b

Please sign in to comment.