@samitouri / QOS-React / commits / 9b0ef9244d

Add coveralls.

John-David Dalton committed Dec 21, 2015 at 14:05 UTC 9b0ef9244d39b60a12e40f66ff96daf107a8380c
3 files changed +88 -12
.gitignore
+1
@@ -7,6 +7,7 @@ static
7 _SpecRunner.html
8 __benchmarks__
9 build/
10 +coverage/
11 .module-cache
12 *.gem
13 docs/.bundle
grunt/tasks/jest.js
+74 -12
@@ -6,25 +6,87 @@
6
7 'use strict';
8
9 +var assign = require('object-assign');
10 +var async = require('async');
11 +var fs = require('fs');
12 +var glob = require('glob');
13 var grunt = require('grunt');
14 var path = require('path');
15
16 +var rootPath = path.resolve('.');
17 +var buildPath = path.join(rootPath, 'build');
18 +var tempConfigPath = path.join(buildPath, 'jest-config.json');
19 +
20 +var config = require(path.join(rootPath, 'package.json')).jest;
21 +
22 +function getCollectCoverageOnlyFrom(callback) {
23 + var coverageFrom = config.collectCoverageOnlyFrom;
24 + var patterns = Object.keys((config.collectCoverage && coverageFrom) || {});
25 + var result = {};
26 +
27 + async.each(patterns, function(pattern) {
28 + var options = assign({ nodir: true }, coverageFrom[pattern]);
29 + glob(pattern, options, function(err, files) {
30 + (files || []).reduce(function(object, key) {
31 + object[key] = true;
32 + return object;
33 + }, result);
34 +
35 + callback(err);
36 + });
37 + }, function(err) {
38 + callback(err, result);
39 + });
40 +}
41 +
42 +function getJestConfig(callback) {
43 + var rootDir = path.resolve(buildPath, path.resolve(config.rootDir));
44 + getCollectCoverageOnlyFrom(function(err, data) {
45 + callback(err, assign({}, config, {
46 + rootDir: rootDir,
47 + collectCoverageOnlyFrom: data,
48 + }));
49 + });
50 +}
51 +
52 +function onError(err) {
53 + grunt.log.error('jest failed');
54 + grunt.log.error(err);
55 +}
56 +
57 +function writeTempConfig(callback) {
58 + getJestConfig(function(err, data) {
59 + if (err) {
60 + callback(err);
61 + } else {
62 + fs.writeFile(tempConfigPath, JSON.stringify(data, null, ' '), 'utf8', callback);
63 + }
64 + });
65 +}
66 +
67 module.exports = function() {
68 var done = this.async();
69 +
70 grunt.log.writeln('running jest (this may take a while)');
15 - grunt.util.spawn({
16 - cmd: 'node',
17 - args: ['--harmony', path.join('node_modules', 'jest-cli', 'bin', 'jest')],
18 - opts: {stdio: 'inherit', env: {NODE_ENV: 'test'}},
19 - }, function(err, result, code) {
20 - if (err) {
21 - grunt.log.error('jest failed');
22 - grunt.log.error(err);
23 - } else {
24 - grunt.log.ok('jest passed');
71 +
72 + writeTempConfig(function(writeErr) {
73 + if (writeErr) {
74 + onError(writeErr);
75 + return;
76 }
26 - grunt.log.writeln(result.stdout);
77 + grunt.util.spawn({
78 + cmd: 'node',
79 + args: ['--harmony', path.join('node_modules', 'jest-cli', 'bin', 'jest'), '--config', tempConfigPath],
80 + opts: { stdio: 'inherit', env: { NODE_ENV: 'test' } },
81 + }, function(spawnErr, result, code) {
82 + if (spawnErr) {
83 + onError(spawnErr);
84 + } else {
85 + grunt.log.ok('jest passed');
86 + }
87 + grunt.log.writeln(result.stdout);
88
28 - done(code === 0);
89 + done(code === 0);
90 + });
91 });
92 };
package.json
+13
@@ -3,12 +3,14 @@
3 "private": true,
4 "version": "0.15.0-alpha",
5 "devDependencies": {
6 + "async": "^1.5.0",
7 "babel": "^5.8.29",
8 "babel-eslint": "4.1.5",
9 "benchmark": "^1.0.0",
10 "browserify": "^12.0.1",
11 "bundle-collapser": "^1.1.1",
12 "coffee-script": "^1.8.0",
13 + "coveralls": "^2.11.6",
14 "del": "^2.0.2",
15 "derequire": "^2.0.3",
16 "envify": "^3.0.0",
@@ -17,6 +19,7 @@
19 "eslint-plugin-react-internal": "file:eslint-rules",
20 "fbjs": "^0.4.0",
21 "fbjs-scripts": "^0.5.0",
22 + "glob": "^6.0.1",
23 "grunt": "^0.4.5",
24 "grunt-cli": "^0.1.13",
25 "grunt-compare-size": "^0.4.0",
@@ -54,6 +57,16 @@
57 "test": "jest"
58 },
59 "jest": {
60 + "collectCoverage": true,
61 + "collectCoverageOnlyFrom": {
62 + "src/**/*.js": {
63 + "ignore": [
64 + "src/**/__tests__/*.js",
65 + "src/shared/vendor/third_party/*.js",
66 + "src/test/*.js"
67 + ]
68 + }
69 + },
70 "modulePathIgnorePatterns": [
71 "/.module-cache/",
72 "/react/build/"