diff --git a/packages/ember-cli-code-coverage/index.js b/packages/ember-cli-code-coverage/index.js index 1477bf99..9f33dbb2 100644 --- a/packages/ember-cli-code-coverage/index.js +++ b/packages/ember-cli-code-coverage/index.js @@ -55,11 +55,20 @@ module.exports = { } if (opts.embroider === true) { - let { - stableWorkspaceDir, + try { + // Attempt to import the utility @embroider/compat uses in >3.1 to locate the embroider working directory + // the presence of this `locateEmbroiderWorkingDir` method coincides with the shift to utilize `rewritten-app` tmp dir // eslint-disable-next-line node/no-missing-require - } = require('@embroider/compat/src/default-pipeline'); - cwd = stableWorkspaceDir(cwd, process.env.EMBER_ENV); + let { locateEmbroiderWorkingDir } = require('@embroider/core'); + cwd = path.resolve(locateEmbroiderWorkingDir(cwd), 'rewritten-app'); + } catch (err) { + // otherwise, fall back to the method used in embroider <3.1 + let { + stableWorkspaceDir, + // eslint-disable-next-line node/no-missing-require + } = require('@embroider/compat/src/default-pipeline'); + cwd = stableWorkspaceDir(cwd, process.env.EMBER_ENV); + } } const IstanbulPlugin = require.resolve('babel-plugin-istanbul'); @@ -116,12 +125,8 @@ module.exports = { * If coverage is enabled attach coverage middleware to the express server run by ember-cli * @param {Object} startOptions - Express server start options */ - serverMiddleware(startOptions) { - attachMiddleware.serverMiddleware(startOptions.app, { - configPath: this.project.configPath(), - root: this.project.root, - namespaceMappings: this.buildNamespaceMappings(), - }); + serverMiddleware(startOptions, config) { + attachMiddleware.serverMiddleware(startOptions.app, config); }, testemMiddleware(app) { diff --git a/packages/ember-cli-code-coverage/lib/attach-middleware.js b/packages/ember-cli-code-coverage/lib/attach-middleware.js index 35211b62..164775e2 100644 --- a/packages/ember-cli-code-coverage/lib/attach-middleware.js +++ b/packages/ember-cli-code-coverage/lib/attach-middleware.js @@ -22,8 +22,15 @@ function logError(err, req, res, next) { * in-repo-namespace/components/foo.js. */ function normalizeRelativePath(root, filepath) { - let embroiderTmpPathRegex = /embroider\/.{6}/gm; - let relativePath = filepath.split(embroiderTmpPathRegex)[1].slice(1); + let relativePath; + let embroiderCompatLT31TmpPathRegex = /embroider\/.{6}/gm; + let embroiderCompatGT31TmpPathRegex = /\.embroider\/rewritten-app\//gm; + + if (embroiderCompatGT31TmpPathRegex.test(filepath)) { + relativePath = filepath.split(embroiderCompatGT31TmpPathRegex)[1]; + } else { + relativePath = filepath.split(embroiderCompatLT31TmpPathRegex)[1].slice(1); + } if (fs.existsSync(path.join(root, 'package.json'))) { let pkgJSON = fs.readJsonSync(path.join(root, 'package.json')); diff --git a/test-packages/__snapshots__/my-embroider-app-test.mjs.snap b/test-packages/__snapshots__/my-embroider-app-test.mjs.snap index 6bbb14a3..2254c01d 100644 --- a/test-packages/__snapshots__/my-embroider-app-test.mjs.snap +++ b/test-packages/__snapshots__/my-embroider-app-test.mjs.snap @@ -266,3 +266,92 @@ exports[`app coverage generation > generates coverage with @embroider ^2.1.0 1`] }, } `; + +exports[`app coverage generation > generates coverage with @embroider ^3.1.0 1`] = ` +{ + "app/app.js": { + "branches": { + "covered": 0, + "pct": 100, + "skipped": 0, + "total": 0, + }, + "functions": { + "covered": 0, + "pct": 100, + "skipped": 0, + "total": 0, + }, + "lines": { + "covered": 4, + "pct": 100, + "skipped": 0, + "total": 4, + }, + "statements": { + "covered": 4, + "pct": 100, + "skipped": 0, + "total": 4, + }, + }, + "app/router.js": { + "branches": { + "covered": 0, + "pct": 100, + "skipped": 0, + "total": 0, + }, + "functions": { + "covered": 0, + "pct": 0, + "skipped": 0, + "total": 1, + }, + "lines": { + "covered": 1, + "pct": 33.33, + "skipped": 0, + "total": 3, + }, + "statements": { + "covered": 1, + "pct": 33.33, + "skipped": 0, + "total": 3, + }, + }, + "total": { + "branches": { + "covered": 0, + "pct": 100, + "skipped": 0, + "total": 0, + }, + "branchesTrue": { + "covered": 0, + "pct": "Unknown", + "skipped": 0, + "total": 0, + }, + "functions": { + "covered": 0, + "pct": 0, + "skipped": 0, + "total": 1, + }, + "lines": { + "covered": 5, + "pct": 71.42, + "skipped": 0, + "total": 7, + }, + "statements": { + "covered": 5, + "pct": 71.42, + "skipped": 0, + "total": 7, + }, + }, +} +`; diff --git a/test-packages/my-addon/pnpm-lock.yaml b/test-packages/my-addon/pnpm-lock.yaml index 8400e55c..d3b594ae 100644 --- a/test-packages/my-addon/pnpm-lock.yaml +++ b/test-packages/my-addon/pnpm-lock.yaml @@ -44,7 +44,7 @@ devDependencies: specifier: ~3.28.6 version: 3.28.6 ember-cli-code-coverage: - specifier: 2.0.1 + specifier: 2.0.2 version: link:../../packages/ember-cli-code-coverage ember-cli-dependency-checker: specifier: ^3.2.0 diff --git a/test-packages/my-app-with-custom-path-in-repo-addon/pnpm-lock.yaml b/test-packages/my-app-with-custom-path-in-repo-addon/pnpm-lock.yaml index d2a73b07..5ab73dbd 100644 --- a/test-packages/my-app-with-custom-path-in-repo-addon/pnpm-lock.yaml +++ b/test-packages/my-app-with-custom-path-in-repo-addon/pnpm-lock.yaml @@ -42,7 +42,7 @@ devDependencies: specifier: ^7.26.10 version: 7.26.11 ember-cli-code-coverage: - specifier: 2.0.1 + specifier: 2.0.2 version: link:../../packages/ember-cli-code-coverage ember-cli-dependency-checker: specifier: ^3.2.0 diff --git a/test-packages/my-app-with-in-repo-addon/pnpm-lock.yaml b/test-packages/my-app-with-in-repo-addon/pnpm-lock.yaml index ed04be08..5ab73dbd 100644 --- a/test-packages/my-app-with-in-repo-addon/pnpm-lock.yaml +++ b/test-packages/my-app-with-in-repo-addon/pnpm-lock.yaml @@ -42,7 +42,7 @@ devDependencies: specifier: ^7.26.10 version: 7.26.11 ember-cli-code-coverage: - specifier: workspace:* + specifier: 2.0.2 version: link:../../packages/ember-cli-code-coverage ember-cli-dependency-checker: specifier: ^3.2.0 diff --git a/test-packages/my-app-with-in-repo-engine/pnpm-lock.yaml b/test-packages/my-app-with-in-repo-engine/pnpm-lock.yaml index b823c545..b9c92e24 100644 --- a/test-packages/my-app-with-in-repo-engine/pnpm-lock.yaml +++ b/test-packages/my-app-with-in-repo-engine/pnpm-lock.yaml @@ -42,7 +42,7 @@ devDependencies: specifier: ^7.26.10 version: 7.26.11 ember-cli-code-coverage: - specifier: 2.0.1 + specifier: 2.0.2 version: link:../../packages/ember-cli-code-coverage ember-cli-dependency-checker: specifier: ^3.2.0 diff --git a/test-packages/my-app/pnpm-lock.yaml b/test-packages/my-app/pnpm-lock.yaml index 0e66dcba..eae7f257 100644 --- a/test-packages/my-app/pnpm-lock.yaml +++ b/test-packages/my-app/pnpm-lock.yaml @@ -42,7 +42,7 @@ devDependencies: specifier: ^7.26.10 version: 7.26.11 ember-cli-code-coverage: - specifier: 2.0.1 + specifier: 2.0.2 version: link:../../packages/ember-cli-code-coverage ember-cli-dependency-checker: specifier: ^3.2.0 diff --git a/test-packages/my-embroider-app-test.mjs b/test-packages/my-embroider-app-test.mjs index bbac336b..4f199f00 100644 --- a/test-packages/my-embroider-app-test.mjs +++ b/test-packages/my-embroider-app-test.mjs @@ -13,7 +13,7 @@ describe('app coverage generation', function () { '^0.47.0', '^1.0.0', '^2.1.0', - // '^3.1.0' remove when PR https://github.com/ember-cli-code-coverage/ember-cli-code-coverage/pull/387 is merged + '^3.1.0' ]) { it(`generates coverage with @embroider ${embroiderVersion}`, async function (context) { let buildPath = await setupTestDir(APP_DIR, env, { diff --git a/test-packages/my-embroider-app/pnpm-lock.yaml b/test-packages/my-embroider-app/pnpm-lock.yaml index e7d65f9e..f5183609 100644 --- a/test-packages/my-embroider-app/pnpm-lock.yaml +++ b/test-packages/my-embroider-app/pnpm-lock.yaml @@ -51,7 +51,7 @@ devDependencies: specifier: ^7.26.6 version: 7.26.11 ember-cli-code-coverage: - specifier: workspace:* + specifier: 2.0.2 version: link:../../packages/ember-cli-code-coverage ember-cli-dependency-checker: specifier: ^3.2.0