Skip to content

Commit cc556d3

Browse files
authored
Merge pull request #599 from thoov/embroider-macros
Embroider support when staticAddonTestSupportTrees enabled
2 parents 2b7bcba + 54643a1 commit cc556d3

File tree

10 files changed

+1011
-778
lines changed

10 files changed

+1011
-778
lines changed

.travis.yml

+4
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ jobs:
5555
- env: EMBER_TRY_SCENARIO=ember-canary
5656
- env: EMBER_TRY_SCENARIO=ember-default-with-jquery
5757
- env: EMBER_TRY_SCENARIO=ember-classic
58+
- env: EMBER_TRY_SCENARIO=embroider
59+
- env: EMBER_TRY_SCENARIO=embroider TEST_FRAMEWORK=ember-mocha
60+
- env: EMBER_TRY_SCENARIO=embroider-optimized
61+
- env: EMBER_TRY_SCENARIO=embroider-optimized TEST_FRAMEWORK=ember-mocha
5862

5963
before_install:
6064
- curl -o- -L https://yarnpkg.com/install.sh | bash

addon-test-support/-private/get-test-loader.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* globals require, requirejs */
1+
import { dependencySatisfies, macroCondition, importSync } from '@embroider/macros';
22

33
/**
44
* Returns ember-exam-qunit-test-loader or ember-exam-mocha-test-loader
@@ -8,11 +8,11 @@
88
* @return {Object}
99
*/
1010
export default function getTestLoader() {
11-
if (requirejs.entries['ember-qunit/test-loader']) {
12-
const EmberExamQUnitTestLoader = require('./ember-exam-qunit-test-loader');
11+
if (macroCondition(dependencySatisfies('ember-qunit', '*'))){
12+
const EmberExamQUnitTestLoader = importSync('./ember-exam-qunit-test-loader');
1313
return EmberExamQUnitTestLoader['default'];
14-
} else if (requirejs.entries['ember-mocha/test-loader']) {
15-
const EmberExamMochaTestLoader = require('./ember-exam-mocha-test-loader');
14+
} else if (macroCondition(dependencySatisfies('ember-mocha', '*'))){
15+
const EmberExamMochaTestLoader = importSync('./ember-exam-mocha-test-loader');
1616
return EmberExamMochaTestLoader['default'];
1717
}
1818

addon-test-support/start.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
/* globals require */
2-
31
import loadEmberExam from 'ember-exam/test-support/load';
2+
import { dependencySatisfies, macroCondition, importSync } from '@embroider/macros';
43

54
/**
65
* Equivalent to ember-qunit or ember-mocha's loadTest() except this does not create a new TestLoader instance
@@ -26,14 +25,18 @@ function loadTests(testLoader) {
2625
* @param {*} qunitOptions
2726
*/
2827
export default function start(qunitOptions) {
29-
const framework = require.has('ember-qunit') ? 'qunit' : 'mocha';
3028
const modifiedOptions = qunitOptions || Object.create(null);
3129
modifiedOptions.loadTests = false;
3230

3331
const testLoader = loadEmberExam();
3432
loadTests(testLoader);
3533

36-
const emberTestFramework = require(`ember-${framework}`);
34+
let emberTestFramework;
35+
if (macroCondition(dependencySatisfies('ember-qunit', '*'))){
36+
emberTestFramework = importSync('ember-qunit');
37+
} else if (macroCondition(dependencySatisfies('ember-mocha', '*'))) {
38+
emberTestFramework = importSync('ember-mocha');
39+
}
3740

3841
if (emberTestFramework.start) {
3942
emberTestFramework.start(modifiedOptions);

config/ember-try.js

+20
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,26 @@ module.exports = async function() {
8585
edition: 'classic'
8686
}
8787
}
88+
},
89+
{
90+
name: 'embroider',
91+
npm: {
92+
devDependencies: {
93+
'@embroider/core': '*',
94+
'@embroider/webpack': '*',
95+
'@embroider/compat': '*',
96+
},
97+
},
98+
},
99+
{
100+
name: 'embroider-optimized',
101+
npm: {
102+
devDependencies: {
103+
'@embroider/core': '*',
104+
'@embroider/webpack': '*',
105+
'@embroider/compat': '*',
106+
},
107+
}
88108
}
89109
]
90110
};

ember-cli-build.js

+19-1
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,23 @@ module.exports = function(defaults) {
1414
behave. You most likely want to be modifying `./index.js` or app's build file
1515
*/
1616

17-
return app.toTree();
17+
// Use embroider if it's present (it can get added by ember-try)
18+
if ('@embroider/core' in app.dependencies()) {
19+
/* eslint-disable node/no-missing-require, node/no-extraneous-require */
20+
const { Webpack } = require('@embroider/webpack');
21+
const { compatBuild } = require('@embroider/compat');
22+
/* eslint-enable node/no-missing-require, node/no-extraneous-require */
23+
let config = {};
24+
if (process.env.EMBER_TRY_SCENARIO === 'embroider-optimized') {
25+
config = {
26+
staticAddonTrees: true,
27+
staticAddonTestSupportTrees: true,
28+
staticHelpers: true,
29+
staticComponents: true,
30+
}
31+
}
32+
return compatBuild(app, Webpack, config);
33+
} else {
34+
return app.toTree();
35+
}
1836
};

package.json

+14-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"test:node": "nyc mocha 'node-tests/**/*-test.js'"
3030
},
3131
"dependencies": {
32+
"@embroider/macros": "^0.26.0",
3233
"chalk": "^4.1.0",
3334
"cli-table3": "^0.6.0",
3435
"debug": "^4.1.0",
@@ -46,7 +47,7 @@
4647
"babel-eslint": "^10.1.0",
4748
"codeclimate-test-reporter": "^0.5.0",
4849
"ember-cli": "^3.21.2",
49-
"ember-cli-addon-docs": "^0.6.15",
50+
"ember-cli-addon-docs": "^0.10.0",
5051
"ember-cli-addon-docs-yuidoc": "^0.2.4",
5152
"ember-cli-dependency-checker": "^3.0.0",
5253
"ember-cli-deploy": "^1.0.2",
@@ -80,6 +81,18 @@
8081
"sinon": "^9.0.3",
8182
"testdouble": "^3.16.1"
8283
},
84+
"peerDependencies": {
85+
"ember-mocha": "*",
86+
"ember-qunit": "*"
87+
},
88+
"peerDependenciesMeta": {
89+
"ember-qunit": {
90+
"optional": true
91+
},
92+
"ember-mocha": {
93+
"optional": true
94+
}
95+
},
8396
"engines": {
8497
"node": "10.* || >= 12"
8598
},

tests/test-helper.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
import { setResolver } from '@ember/test-helpers';
44
import resolver from './helpers/resolver';
55
import start from 'ember-exam/test-support/start';
6+
import { macroCondition, dependencySatisfies } from '@embroider/macros';
67

7-
const oppositeFramework = !require.has('ember-qunit') ? 'qunit' : 'mocha';
8+
const oppositeFramework = macroCondition(dependencySatisfies('ember-qunit', '*')) ? 'mocha': 'qunit';
89

910
Object.keys(require.entries).forEach((entry) => {
1011
if (entry.indexOf(oppositeFramework) !== -1) {

tests/unit/mocha/testem-output-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { describe, it } from 'mocha';
22
import { expect } from 'chai';
3-
import TestemOutput from 'ember-exam/test-support/-private/patch-testem-output';
3+
import * as TestemOutput from 'ember-exam/test-support/-private/patch-testem-output';
44

55
describe('Unit | Mocha | patch-testem-output', () => {
66
it('add partition number to test name when `split` is passed', function() {

tests/unit/qunit/testem-output-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { module, test } from 'qunit';
2-
import TestemOutput from 'ember-exam/test-support/-private/patch-testem-output';
2+
import * as TestemOutput from 'ember-exam/test-support/-private/patch-testem-output';
33

44
module('Unit | Qunit | patch-testem-output', () => {
55
test('add partition number to test name when `split` is passed', function(assert) {

0 commit comments

Comments
 (0)