Skip to content

Commit

Permalink
fix: handle no config being set
Browse files Browse the repository at this point in the history
Fixes #36
  • Loading branch information
Matt Lewis committed Jan 24, 2018
1 parent 9ab7560 commit 5483e2b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 15 deletions.
28 changes: 13 additions & 15 deletions src/reporter.js
Expand Up @@ -22,10 +22,10 @@ function CoverageIstanbulReporter(baseReporterDecorator, logger, config) {
baseReporterDecorator(this);

const log = logger.create('reporter.coverage-istanbul');

const browserCoverage = new WeakMap();
const coverageConfig = Object.assign({}, config.coverageIstanbulReporter);

function addCoverage(coverageIstanbulReporter, coverageMap, browser) {
function addCoverage(coverageMap, browser) {
const coverage = browserCoverage.get(browser);
browserCoverage.delete(browser);

Expand All @@ -35,11 +35,11 @@ function CoverageIstanbulReporter(baseReporterDecorator, logger, config) {

Object.keys(coverage).forEach(filename => {
const fileCoverage = coverage[filename];
if (fileCoverage.inputSourceMap && coverageIstanbulReporter.fixWebpackSourcePaths) {
if (fileCoverage.inputSourceMap && coverageConfig.fixWebpackSourcePaths) {
fileCoverage.inputSourceMap = util.fixWebpackSourcePaths(fileCoverage.inputSourceMap, config.webpack);
}
if (
coverageIstanbulReporter.skipFilesWithNoCoverage &&
coverageConfig.skipFilesWithNoCoverage &&
Object.keys(fileCoverage.statementMap).length === 0 &&
Object.keys(fileCoverage.fnMap).length === 0 &&
Object.keys(fileCoverage.branchMap).length === 0
Expand All @@ -60,14 +60,12 @@ function CoverageIstanbulReporter(baseReporterDecorator, logger, config) {
}

function createReport(browserOrBrowsers, results) {
const coverageIstanbulReporter = Object.assign({}, config.coverageIstanbulReporter);

if (!coverageIstanbulReporter.combineBrowserReports && coverageIstanbulReporter.dir) {
coverageIstanbulReporter.dir = coverageIstanbulReporter.dir.replace(BROWSER_PLACEHOLDER, browserOrBrowsers.name);
if (!coverageConfig.combineBrowserReports && coverageConfig.dir) {
coverageConfig.dir = coverageConfig.dir.replace(BROWSER_PLACEHOLDER, browserOrBrowsers.name);
}

const reportConfig = istanbul.config.loadObject({
reporting: coverageIstanbulReporter
reporting: coverageConfig
});
const reportTypes = reportConfig.reporting.config.reports;

Expand All @@ -77,18 +75,18 @@ function CoverageIstanbulReporter(baseReporterDecorator, logger, config) {
const coverageMap = istanbul.libCoverage.createCoverageMap();
const sourceMapStore = istanbul.libSourceMaps.createSourceMapStore();

if (coverageIstanbulReporter.combineBrowserReports) {
browserOrBrowsers.forEach(addCoverage.bind(null, coverageIstanbulReporter, coverageMap));
if (coverageConfig.combineBrowserReports) {
browserOrBrowsers.forEach(browser => addCoverage(coverageMap, browser));
} else {
addCoverage(coverageIstanbulReporter, coverageMap, browserOrBrowsers);
addCoverage(coverageMap, browserOrBrowsers);
}

const remappedCoverageMap = sourceMapStore.transformCoverage(coverageMap).map;

log.debug('Writing coverage reports:', reportTypes);
reporter.write(remappedCoverageMap);

const userThresholds = coverageIstanbulReporter.thresholds;
const userThresholds = coverageConfig.thresholds;

const thresholds = {
emitWarning: false,
Expand Down Expand Up @@ -137,7 +135,7 @@ function CoverageIstanbulReporter(baseReporterDecorator, logger, config) {

failedFileTypes.forEach(type => {
thresholdCheckFailed = true;
if (coverageIstanbulReporter.fixWebpackSourcePaths) {
if (coverageConfig.fixWebpackSourcePaths) {
file = util.fixWebpackFilePath(file);
}
logThresholdMessage(thresholds, `Coverage for ${type} (${fileSummary[type].pct}%) in file ${file} does not meet per file threshold (${fileThresholds[type]}%)`);
Expand All @@ -159,7 +157,7 @@ function CoverageIstanbulReporter(baseReporterDecorator, logger, config) {
this.onRunComplete = function (browsers, results) {
baseReporterOnRunComplete.apply(this, arguments);

if (config.coverageIstanbulReporter.combineBrowserReports) {
if (coverageConfig.combineBrowserReports) {
createReport(browsers, results);
} else {
browsers.forEach(browser => {
Expand Down
12 changes: 12 additions & 0 deletions test/reporter.spec.js
Expand Up @@ -174,6 +174,18 @@ describe('karma-coverage-istanbul-reporter', () => {
});
});

it('should handle no config being set', done => {
const server = createServer({
coverageIstanbulReporter: null
});
server.start();
server.on('run_complete', () => {
setTimeout(() => { // Hacky workaround to make sure the file has been written
done();
}, fileReadTimeout);
});
});

describe('coverage thresholds', () => {
it('should not meet the thresholds', done => {
const server = createServer({
Expand Down

0 comments on commit 5483e2b

Please sign in to comment.