Merge pull request #835 from embark-framework/fix-coverage-timing

Update coverage report after suite
This commit is contained in:
Iuri Matias 2018-09-14 18:18:24 -04:00 committed by GitHub
commit e3273b7867
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 20 deletions

View File

@ -1,6 +1,4 @@
/*global web3*/ /*global web3*/
const process = require('process');
const fs = require('../../core/fs'); const fs = require('../../core/fs');
const ContractSources = require('./contract_sources'); const ContractSources = require('./contract_sources');
@ -20,16 +18,16 @@ class CodeCoverage {
embark.events.on('contracts:run:solc', this.runSolc.bind(this)); embark.events.on('contracts:run:solc', this.runSolc.bind(this));
embark.events.on('block:header', this.runSolc.bind(this)); embark.events.on('block:header', this.runSolc.bind(this));
// These events are emitted from a test-specific Embark instance, so we need to
// pull it in from global.
global.embark.events.on('tests:finished', this.updateCoverageReport.bind(this));
this.seenTransactions = {}; this.seenTransactions = {};
this.coverageReport = {}; this.coverageReport = {};
this.contractSources = new ContractSources([]); this.contractSources = new ContractSources([]);
var self = this; this.dotEmbarkPath = fs.dappPath('.embark');
this.coverageReportPath = fs.dappPath('.embark', 'coverage.json');
process.on('exit', (_code) => {
const coverageReportPath = fs.dappPath('.embark', 'coverage.json');
fs.writeFileSync(coverageReportPath, JSON.stringify(self.coverageReport));
});
} }
compileSolc(input) { compileSolc(input) {
@ -42,6 +40,12 @@ class CodeCoverage {
this.contractSources.parseSolcOutput(output); this.contractSources.parseSolcOutput(output);
} }
updateCoverageReport(cb) {
fs.mkdirp(this.dotEmbarkPath, () => {
fs.writeFile(this.coverageReportPath, JSON.stringify(this.coverageReport), cb);
});
}
async runSolc(receipt) { async runSolc(receipt) {
let block = await web3.eth.getBlock(receipt.number); let block = await web3.eth.getBlock(receipt.number);
if(block.transactions.length == 0) return; if(block.transactions.length == 0) return;

View File

@ -130,6 +130,7 @@ module.exports = {
return next(); return next();
} }
global.embark.events.emit('tests:finished', function() {
runCmd(`${fs.embarkPath('node_modules/.bin/istanbul')} report --root .embark --format html`, runCmd(`${fs.embarkPath('node_modules/.bin/istanbul')} report --root .embark --format html`,
{silent: false, exitOnError: false}, (err) => { {silent: false, exitOnError: false}, (err) => {
if (err) { if (err) {
@ -142,6 +143,7 @@ module.exports = {
.then(() => new Promise(resolve => setTimeout(resolve, 1000))) .then(() => new Promise(resolve => setTimeout(resolve, 1000)))
.then(_next, _next); .then(_next, _next);
}); });
});
} }
], (err) => { ], (err) => {
if (err) { if (err) {