mirror of
https://github.com/zebrajr/react.git
synced 2026-01-15 12:15:22 +00:00
Merge pull request #5713 from zpao/jest-coverage-followups
Followups to get test coverage reporting to coveralls
This commit is contained in:
12
.travis.yml
12
.travis.yml
@@ -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:
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
10
package.json
10
package.json
@@ -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/"
|
||||
|
||||
Reference in New Issue
Block a user