From 067400ae500e951c58f81165564dbfe24568c186 Mon Sep 17 00:00:00 2001 From: Robin Date: Tue, 16 Nov 2021 17:58:49 +0100 Subject: [PATCH] Add test for files in app directory of in-repo addons --- README.md | 10 +- .../__snapshots__/in-repo-addon-test.js.snap | 96 +++++++++++++++++-- .../ember-cli-build.js | 13 +++ .../my-in-repo-addon-app-covered-util.js | 3 + .../my-in-repo-addon-app-covered-util-test.js | 10 ++ 5 files changed, 119 insertions(+), 13 deletions(-) create mode 100644 test-packages/my-app-with-in-repo-addon/lib/my-in-repo-addon/app/utils/my-in-repo-addon-app-covered-util.js create mode 100644 test-packages/my-app-with-in-repo-addon/tests/unit/utils/my-in-repo-addon-app-covered-util-test.js diff --git a/README.md b/README.md index 9b3bcc7c..3ee53007 100644 --- a/README.md +++ b/README.md @@ -211,10 +211,12 @@ be relative to your project root. const app = new EmberApp(defaults, { 'ember-cli-code-coverage': { modifyAssetLocation(root, relativePath) { - // here is an example of saying that `component/foo.js` actually - // lives in `lib/common/app/foo.js` on disk. - if (fs.existsSync(path.join(root, 'lib/inrepo/app', relativePath))) { - return path.join('lib/common/app', relativePath); + let appPath = relativePath.replace('my-project-name', 'app'); + + // here is an example of saying that `app/components/foo.js` actually + // lives in `lib/inrepo/app/components/foo.js` on disk. + if (fs.existsSync(path.join(root, 'lib/inrepo', appPath))) { + return path.join('lib/inrepo', appPath); } return false; diff --git a/test-packages/__snapshots__/in-repo-addon-test.js.snap b/test-packages/__snapshots__/in-repo-addon-test.js.snap index 5d02209f..3346f738 100644 --- a/test-packages/__snapshots__/in-repo-addon-test.js.snap +++ b/test-packages/__snapshots__/in-repo-addon-test.js.snap @@ -236,6 +236,84 @@ Object { "total": 1, }, }, + "lib/my-in-repo-addon/app/utils/my-covered-util.js": Object { + "branches": Object { + "covered": 0, + "pct": 0, + "skipped": 0, + "total": 0, + }, + "functions": Object { + "covered": 0, + "pct": 0, + "skipped": 0, + "total": 0, + }, + "lines": Object { + "covered": 0, + "pct": 0, + "skipped": 0, + "total": 0, + }, + "statements": Object { + "covered": 0, + "pct": 0, + "skipped": 0, + "total": 0, + }, + }, + "lib/my-in-repo-addon/app/utils/my-in-repo-addon-app-covered-util.js": Object { + "branches": Object { + "covered": 0, + "pct": 100, + "skipped": 0, + "total": 0, + }, + "functions": Object { + "covered": 1, + "pct": 100, + "skipped": 0, + "total": 1, + }, + "lines": Object { + "covered": 1, + "pct": 100, + "skipped": 0, + "total": 1, + }, + "statements": Object { + "covered": 1, + "pct": 100, + "skipped": 0, + "total": 1, + }, + }, + "lib/my-in-repo-addon/app/utils/my-uncovered-util.js": Object { + "branches": Object { + "covered": 0, + "pct": 0, + "skipped": 0, + "total": 0, + }, + "functions": Object { + "covered": 0, + "pct": 0, + "skipped": 0, + "total": 0, + }, + "lines": Object { + "covered": 0, + "pct": 0, + "skipped": 0, + "total": 0, + }, + "statements": Object { + "covered": 0, + "pct": 0, + "skipped": 0, + "total": 0, + }, + }, "total": Object { "branches": Object { "covered": 0, @@ -244,22 +322,22 @@ Object { "total": 2, }, "functions": Object { - "covered": 3, - "pct": 33.33, + "covered": 4, + "pct": 40, "skipped": 0, - "total": 9, + "total": 10, }, "lines": Object { - "covered": 8, - "pct": 47.06, + "covered": 9, + "pct": 50, "skipped": 0, - "total": 17, + "total": 18, }, "statements": Object { - "covered": 8, - "pct": 47.06, + "covered": 9, + "pct": 50, "skipped": 0, - "total": 17, + "total": 18, }, }, } diff --git a/test-packages/my-app-with-in-repo-addon/ember-cli-build.js b/test-packages/my-app-with-in-repo-addon/ember-cli-build.js index 2a14f907..9c8ecf5a 100644 --- a/test-packages/my-app-with-in-repo-addon/ember-cli-build.js +++ b/test-packages/my-app-with-in-repo-addon/ember-cli-build.js @@ -1,6 +1,8 @@ 'use strict'; const EmberApp = require('ember-cli/lib/broccoli/ember-app'); +const fs = require('fs'); +const path = require('path'); module.exports = function(defaults) { let app = new EmberApp(defaults, { @@ -9,6 +11,17 @@ module.exports = function(defaults) { ...require('ember-cli-code-coverage').buildBabelPlugin(), ], }, + 'ember-cli-code-coverage': { + modifyAssetLocation(root, relativePath) { + let appPath = relativePath.replace('my-app-with-in-repo-addon', 'app'); + + if (!fs.existsSync(appPath) && fs.existsSync(path.join(root, 'lib/my-in-repo-addon', appPath))) { + return path.join('lib/my-in-repo-addon', appPath); + } + + return false; + } + } }); // Use `app.import` to add additional libraries to the generated diff --git a/test-packages/my-app-with-in-repo-addon/lib/my-in-repo-addon/app/utils/my-in-repo-addon-app-covered-util.js b/test-packages/my-app-with-in-repo-addon/lib/my-in-repo-addon/app/utils/my-in-repo-addon-app-covered-util.js new file mode 100644 index 00000000..cbcd1ef9 --- /dev/null +++ b/test-packages/my-app-with-in-repo-addon/lib/my-in-repo-addon/app/utils/my-in-repo-addon-app-covered-util.js @@ -0,0 +1,3 @@ +export default function myInRepoAddonAppCoveredUtil() { + return true; +} diff --git a/test-packages/my-app-with-in-repo-addon/tests/unit/utils/my-in-repo-addon-app-covered-util-test.js b/test-packages/my-app-with-in-repo-addon/tests/unit/utils/my-in-repo-addon-app-covered-util-test.js new file mode 100644 index 00000000..9ab890e4 --- /dev/null +++ b/test-packages/my-app-with-in-repo-addon/tests/unit/utils/my-in-repo-addon-app-covered-util-test.js @@ -0,0 +1,10 @@ +import myInRepoAddonAppCoveredUtil from 'my-app-with-in-repo-addon/utils/my-in-repo-addon-app-covered-util'; +import { module, test } from 'qunit'; + +module('Unit | Utility | my in repo addon app covered util'); + +// Replace this with your real tests. +test('it works', function(assert) { + let result = myInRepoAddonAppCoveredUtil(); + assert.ok(result); +});