Merge pull request #5713 from zpao/jest-coverage-followups

Followups to get test coverage reporting to coveralls
This commit is contained in:
Paul O’Shannessy
2015-12-22 14:07:13 -08:00
4 changed files with 64 additions and 33 deletions

View File

@@ -65,13 +65,21 @@ script:
-F "branch=$TRAVIS_BRANCH" \
$SERVER
fi
elif [ "$TEST_TYPE" = test ]; then
if [ "$TRAVIS_PULL_REQUEST" = false ]; then
set -e
./node_modules/.bin/grunt jest:coverage
cat ./coverage/lcov.info | ./node_modules/.bin/coveralls
else
./node_modules/.bin/grunt jest:normal
fi
else
./node_modules/.bin/grunt $TEST_TYPE
fi
env:
matrix:
- TEST_TYPE=build
- TEST_TYPE=jest
- TEST_TYPE=test
- TEST_TYPE=lint
- TEST_TYPE=build_website
global:
@@ -81,6 +89,8 @@ env:
- secure: dkpPW+VnoqC/okhRdV90m36NcyBFhcwEKL3bNFExAwi0dXnFao8RoFlvnwiPlA23h2faROkMIetXlti6Aju08BgUFV+f9aL6vLyU7gUent4Nd3413zf2fwDtXIWIETg6uLnOpSykGKgCAT/hY3Q2oPLqOoY0OxfgnbqwxkxljrE=
# GITHUB_TOKEN
- secure: EHCyCSKMwKlLHNtcj9nmkRzmiiPE3aDGlPcnEyrDJeRI0SeN/iCXHXfFivR0vFq3vr+9naMBczAR2AEidtps5KbJrKqdZnjPFRbmfVtzWr/LlvVCub3u13Pub6TdKIVBTny1PuZ5X8GvdxMNVig89jGjvzhhWuQRaz3VhJnTra4=
# COVERALLS_TOKEN
- secure: h/cUq+TrUMZOQmkFD7CvuwX0uAwmjIfKZ4qSUzY+QzUtDzOzA0L/XF84xTBq1Q5YYsEiaoF6GxxGCdrLQiBA/ZTd+88UHgeZPMRvi0xG9Q+PeePVOsZMTxy4/WWFgOfSQCk49Mj9zizGgO78i6vxq+SDXMtFHnZ+TpPJIEW6/m0=
matrix:
fast_finish: true
notifications:

View File

@@ -111,10 +111,12 @@ module.exports = function(grunt) {
]);
grunt.registerTask('build:react-dom', require('./grunt/tasks/react-dom'));
grunt.registerTask('test', ['jest']);
grunt.registerTask('npm:test', ['build', 'npm:pack']);
var jestTasks = require('./grunt/tasks/jest');
grunt.registerTask('jest:normal', jestTasks.normal);
grunt.registerTask('jest:coverage', jestTasks.coverage);
grunt.registerTask('jest', require('./grunt/tasks/jest'));
grunt.registerTask('test', ['jest:normal']);
grunt.registerTask('npm:test', ['build', 'npm:pack']);
// Optimized build task that does all of our builds. The subtasks will be run
// in order so we can take advantage of that and only run build-modules once.

View File

@@ -19,13 +19,22 @@ var tempConfigPath = path.join(buildPath, 'jest-config.json');
var config = require(path.join(rootPath, 'package.json')).jest;
var collectCoverageOnlyFrom = {
'src/**/*.js': {
ignore: [
'src/**/__tests__/*.js',
'src/shared/vendor/third_party/*.js',
'src/test/*.js',
],
},
};
function getCollectCoverageOnlyFrom(callback) {
var coverageFrom = config.collectCoverageOnlyFrom;
var patterns = Object.keys((config.collectCoverage && coverageFrom) || {});
var patterns = Object.keys(collectCoverageOnlyFrom);
var result = {};
async.each(patterns, function(pattern) {
var options = assign({ nodir: true }, coverageFrom[pattern]);
var options = assign({ nodir: true }, collectCoverageOnlyFrom[pattern]);
glob(pattern, options, function(err, files) {
(files || []).reduce(function(object, key) {
object[key] = true;
@@ -44,6 +53,7 @@ function getJestConfig(callback) {
getCollectCoverageOnlyFrom(function(err, data) {
callback(err, assign({}, config, {
rootDir: rootDir,
collectCoverage: true,
collectCoverageOnlyFrom: data,
}));
});
@@ -64,29 +74,48 @@ function writeTempConfig(callback) {
});
}
module.exports = function() {
var done = this.async();
function run(done, configPath) {
grunt.log.writeln('running jest (this may take a while)');
var args = ['--harmony', path.join('node_modules', 'jest-cli', 'bin', 'jest')];
if (configPath) {
args.push('--config', configPath);
}
grunt.util.spawn({
cmd: 'node',
args: args,
opts: { stdio: 'inherit', env: { NODE_ENV: 'test' } },
}, function(spawnErr, result, code) {
if (spawnErr) {
onError(spawnErr);
} else {
grunt.log.ok('jest passed');
}
grunt.log.writeln(result.stdout);
done(code === 0);
});
}
function runJestNormally() {
var done = this.async();
run(done);
}
function runJestWithCoverage() {
var done = this.async();
writeTempConfig(function(writeErr) {
if (writeErr) {
onError(writeErr);
return;
}
grunt.util.spawn({
cmd: 'node',
args: ['--harmony', path.join('node_modules', 'jest-cli', 'bin', 'jest'), '--config', tempConfigPath],
opts: { stdio: 'inherit', env: { NODE_ENV: 'test' } },
}, function(spawnErr, result, code) {
if (spawnErr) {
onError(spawnErr);
} else {
grunt.log.ok('jest passed');
}
grunt.log.writeln(result.stdout);
done(code === 0);
});
run(done, tempConfigPath);
});
}
module.exports = {
normal: runJestNormally,
coverage: runJestWithCoverage,
};

View File

@@ -57,16 +57,6 @@
"test": "jest"
},
"jest": {
"collectCoverage": true,
"collectCoverageOnlyFrom": {
"src/**/*.js": {
"ignore": [
"src/**/__tests__/*.js",
"src/shared/vendor/third_party/*.js",
"src/test/*.js"
]
}
},
"modulePathIgnorePatterns": [
"/.module-cache/",
"/react/build/"