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*/
const process = require('process');
const fs = require('../../core/fs');
const ContractSources = require('./contract_sources');
@ -20,16 +18,16 @@ class CodeCoverage {
embark.events.on('contracts:run:solc', 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.coverageReport = {};
this.contractSources = new ContractSources([]);
var self = this;
process.on('exit', (_code) => {
const coverageReportPath = fs.dappPath('.embark', 'coverage.json');
fs.writeFileSync(coverageReportPath, JSON.stringify(self.coverageReport));
});
this.dotEmbarkPath = fs.dappPath('.embark');
this.coverageReportPath = fs.dappPath('.embark', 'coverage.json');
}
compileSolc(input) {
@ -42,6 +40,12 @@ class CodeCoverage {
this.contractSources.parseSolcOutput(output);
}
updateCoverageReport(cb) {
fs.mkdirp(this.dotEmbarkPath, () => {
fs.writeFile(this.coverageReportPath, JSON.stringify(this.coverageReport), cb);
});
}
async runSolc(receipt) {
let block = await web3.eth.getBlock(receipt.number);
if(block.transactions.length == 0) return;

View File

@ -130,18 +130,20 @@ module.exports = {
return next();
}
runCmd(`${fs.embarkPath('node_modules/.bin/istanbul')} report --root .embark --format html`,
{silent: false, exitOnError: false}, (err) => {
if (err) {
return next(err);
}
console.log(`Coverage report created. You can find it here: ${fs.dappPath('coverage/index.html')}\n`);
const opn = require('opn');
const _next = () => { next(); };
opn(fs.dappPath('coverage/index.html'), {wait: false})
.then(() => new Promise(resolve => setTimeout(resolve, 1000)))
.then(_next, _next);
});
global.embark.events.emit('tests:finished', function() {
runCmd(`${fs.embarkPath('node_modules/.bin/istanbul')} report --root .embark --format html`,
{silent: false, exitOnError: false}, (err) => {
if (err) {
return next(err);
}
console.log(`Coverage report created. You can find it here: ${fs.dappPath('coverage/index.html')}\n`);
const opn = require('opn');
const _next = () => { next(); };
opn(fs.dappPath('coverage/index.html'), {wait: false})
.then(() => new Promise(resolve => setTimeout(resolve, 1000)))
.then(_next, _next);
});
});
}
], (err) => {
if (err) {