Skip to content

Commit 9b0ef92

Browse files
committed
Add coveralls.
1 parent aad8024 commit 9b0ef92

File tree

3 files changed

+88
-12
lines changed

3 files changed

+88
-12
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ static
77
_SpecRunner.html
88
__benchmarks__
99
build/
10+
coverage/
1011
.module-cache
1112
*.gem
1213
docs/.bundle

grunt/tasks/jest.js

Lines changed: 74 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,87 @@
66

77
'use strict';
88

9+
var assign = require('object-assign');
10+
var async = require('async');
11+
var fs = require('fs');
12+
var glob = require('glob');
913
var grunt = require('grunt');
1014
var path = require('path');
1115

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+
1267
module.exports = function() {
1368
var done = this.async();
69+
1470
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;
2576
}
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);
2788

28-
done(code === 0);
89+
done(code === 0);
90+
});
2991
});
3092
};

package.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
"private": true,
44
"version": "0.15.0-alpha",
55
"devDependencies": {
6+
"async": "^1.5.0",
67
"babel": "^5.8.29",
78
"babel-eslint": "4.1.5",
89
"benchmark": "^1.0.0",
910
"browserify": "^12.0.1",
1011
"bundle-collapser": "^1.1.1",
1112
"coffee-script": "^1.8.0",
13+
"coveralls": "^2.11.6",
1214
"del": "^2.0.2",
1315
"derequire": "^2.0.3",
1416
"envify": "^3.0.0",
@@ -17,6 +19,7 @@
1719
"eslint-plugin-react-internal": "file:eslint-rules",
1820
"fbjs": "^0.4.0",
1921
"fbjs-scripts": "^0.5.0",
22+
"glob": "^6.0.1",
2023
"grunt": "^0.4.5",
2124
"grunt-cli": "^0.1.13",
2225
"grunt-compare-size": "^0.4.0",
@@ -54,6 +57,16 @@
5457
"test": "jest"
5558
},
5659
"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+
},
5770
"modulePathIgnorePatterns": [
5871
"/.module-cache/",
5972
"/react/build/"

0 commit comments

Comments
 (0)