From 72841535d3ad8afc27bfc61c320f1dd642df3d1c Mon Sep 17 00:00:00 2001 From: adamjmcgrath Date: Tue, 25 Sep 2018 15:51:48 +0100 Subject: [PATCH] fix: handle babel 7 absolute paths --- lib/attach-middleware.js | 13 ++++++++++--- test/integration/app-coverage-test.js | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/attach-middleware.js b/lib/attach-middleware.js index 39a070e0..cc681e3e 100644 --- a/lib/attach-middleware.js +++ b/lib/attach-middleware.js @@ -18,9 +18,16 @@ function fixFilePaths(coverageData, fileLookup) { return coverageData; } -function writeCoverage(coverage, fileLookup, map) { +function writeCoverage(coverage, fileLookup, root, map) { + // Convert absolute paths (path to process.cwd + module path) to relative (module) paths, when necessary (babel >6) + // eg. /Users/user/apps/my-ember-app/my-ember-app/app.js => my-ember-app/app.js + const fixedCoverage = Object.keys(coverage).reduce((memo, filePath) => { + const modulePath = path.relative(root, filePath); + memo[modulePath] = Object.assign({}, coverage[filePath], { path: modulePath }); + return memo; + }, {}); Object.keys(fileLookup).forEach(filename => { - let fileCoverage = coverage[filename] || istanbul.libCoverage.createFileCoverage(filename).data; + let fileCoverage = fixedCoverage[filename] || istanbul.libCoverage.createFileCoverage(filename).data; map.addFileCoverage(fixFilePaths(fileCoverage, fileLookup)); }); } @@ -45,7 +52,7 @@ function reportCoverage(map, root, configPath) { } function coverageHandler(map, options, req, res) { - writeCoverage(req.body, options.fileLookup, map); + writeCoverage(req.body, options.fileLookup, options.root, map); reportCoverage(map, options.root, options.configPath); res.send(map.getCoverageSummary()); } diff --git a/test/integration/app-coverage-test.js b/test/integration/app-coverage-test.js index 5797fb4e..386c54af 100644 --- a/test/integration/app-coverage-test.js +++ b/test/integration/app-coverage-test.js @@ -25,6 +25,7 @@ describe('app coverage generation', function() { }).then(() => { app.editPackageJSON(pkg => { pkg.devDependencies['ember-exam'] = '1.0.0'; + pkg.devDependencies['ember-cli-babel'] = '^7.1.0'; // Temporarily remove the addon before install to work around https://github.com/tomdale/ember-cli-addon-tests/issues/176 delete pkg.devDependencies['ember-cli-code-coverage']; });