Skip to content

Commit da5827f

Browse files
committed
Add build mode tests
1 parent 5dd0bbe commit da5827f

6 files changed

Lines changed: 86 additions & 19 deletions

File tree

files/gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ ember-cli-build.cjs
1515
node_modules/
1616
.eslintcache
1717
.prettiercache
18+
19+
# potentially containing secrets
20+
.env
21+
.env.*.local

files/tests/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<script src="/testem.js" integrity="" data-embroider-ignore></script>
1818
<script type="module">
1919
import "ember-testing";
20+
import "@embroider/macros/src/vendor/embroider-macros-test-support";
2021
</script>
2122

2223
<script type="module">

pnpm-lock.yaml

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { test, module } from 'qunit';
2+
import { assert } from '@ember/debug';
3+
import { DEBUG } from '@glimmer/env';
4+
import { isDevelopingApp, isTesting } from '@embroider/macros';
5+
6+
module('debug utils remain in the build', function () {
7+
test('assert', function(qAssert) {
8+
// If we get the build mode wrong, e.g.: `NODE_ENV` != 'development'
9+
// then the assert won't exist, causing qAssert to not detect a thrown Error
10+
qAssert.throws(() => {
11+
assert('should throw');
12+
}, /should throw/, `The error "should throw" is thrown`);
13+
14+
});
15+
16+
test('DEBUG', function (assert) {
17+
if (DEBUG) {
18+
assert.step('DEBUG');
19+
}
20+
21+
assert.verifySteps(['DEBUG']);
22+
});
23+
24+
test('isTesting', function (assert) {
25+
assert.strictEqual(isTesting(), true, `isTesting() === true`);
26+
});
27+
28+
test('isDevelopingApp', function (assert) {
29+
assert.strictEqual(isDevelopingApp(), true, `isDevelopingApp() === true`);
30+
});
31+
});

tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"@vitest/ui": "^0.18.0",
1111
"c8": "^7.11.3",
1212
"ember-cli": "github:ember-cli/ember-cli#master",
13-
"execa": "^9.5.2",
13+
"execa": "^9.6.0",
1414
"fixturify": "^3.0.0",
1515
"fs-extra": "^10.0.0",
1616
"globby": "^14.1.0",

tests/smoke-tests/defaults.test.ts

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,9 @@ for (let packageManager of SUPPORTED_PACKAGE_MANAGERS) {
3838
addonDir = join(tmpDir, addonName);
3939
await execa({
4040
cwd: tmpDir,
41+
extendEnv: false,
4142
})`${localEmberCli} addon ${addonName} -b ${blueprintPath} --skip-npm --skip-git --prefer-local true --${packageManager}`;
42-
await execa({ cwd: addonDir })`${packageManager} install`;
43+
await execa({ cwd: addonDir, extendEnv: false })`${packageManager} install`;
4344
});
4445

4546
it('is using the correct packager', async () => {
@@ -99,13 +100,16 @@ for (let packageManager of SUPPORTED_PACKAGE_MANAGERS) {
99100
// Tests are additive, so when running them in order, we want to check linting
100101
// before we add files from fixtures
101102
it('lints with no fixtures all pass', async () => {
102-
let { exitCode } = await execa({ cwd: addonDir })`pnpm lint`;
103+
let { exitCode } = await execa({ cwd: addonDir, extendEnv: false })`pnpm lint`;
103104

104105
expect(exitCode).toEqual(0);
105106
});
106107

107108
it('lint:fix with no fixtures', async () => {
108-
let { exitCode } = await execa({ cwd: addonDir })`${packageManager} run lint:fix`;
109+
let { exitCode } = await execa({
110+
cwd: addonDir,
111+
extendEnv: false,
112+
})`${packageManager} run lint:fix`;
109113

110114
expect(exitCode).toEqual(0);
111115
});
@@ -124,16 +128,27 @@ for (let packageManager of SUPPORTED_PACKAGE_MANAGERS) {
124128

125129
let testFixture = fixturify.readSync('./fixtures/rendering-tests');
126130
fixturify.writeSync(join(addonDir, 'tests/rendering'), testFixture);
131+
132+
fixturify.writeSync(
133+
join(addonDir, 'tests/unit'),
134+
fixturify.readSync('./fixtures/build-mode-tests'),
135+
);
127136
});
128137

129138
it('lint:fix', async () => {
130-
let { exitCode } = await execa({ cwd: addonDir })`${packageManager} run lint:fix`;
139+
let { exitCode } = await execa({
140+
cwd: addonDir,
141+
extendEnv: false,
142+
})`${packageManager} run lint:fix`;
131143

132144
expect(exitCode).toEqual(0);
133145
});
134146

135147
it('build', async () => {
136-
let buildResult = await execa({ cwd: addonDir })`${packageManager} run build`;
148+
let buildResult = await execa({
149+
cwd: addonDir,
150+
extendEnv: false,
151+
})`${packageManager} run build`;
137152

138153
expect(buildResult.exitCode).toEqual(0);
139154

@@ -146,13 +161,29 @@ for (let packageManager of SUPPORTED_PACKAGE_MANAGERS) {
146161
// It's important that we ensure that dist directory is empty for this test, because
147162
await fs.rm(join(addonDir, 'dist'), { recursive: true, force: true });
148163

149-
let testResult = await execa({ cwd: addonDir })`${packageManager} run test`;
164+
let safeEnv = { ...process.env };
165+
for (let key of Object.keys(safeEnv)) {
166+
if (key.startsWith('EMBER_') || key.startsWith('VITE_') || key.startsWith('NODE_')) {
167+
delete safeEnv[key];
168+
}
169+
}
170+
171+
let testResult = await execa({
172+
cwd: addonDir,
173+
extendEnv: false,
174+
// a modified env required with extendEnv, else we still inherit/merge the env of vitest
175+
// which overrides our NODE_ENV from our .env.development file (read by vite)
176+
// (because in-shell ENV vars override .env files)
177+
env: safeEnv,
178+
})`${packageManager} run test`;
150179

151180
expect(testResult.exitCode).toEqual(0);
152181

182+
expect(testResult.stdout).includes('debug utils remain in the build: assert');
183+
expect(testResult.stdout).includes('debug utils remain in the build: DEBUG');
153184
expect(testResult.stdout).includes(
154-
`# tests 2
155-
# pass 2
185+
`# tests 6
186+
# pass 6
156187
# skip 0
157188
# todo 0
158189
# fail 0

0 commit comments

Comments
 (0)