Commit b60d722
Make ember-lts-4.12 compat scenario runnable
Three stacked runtime issues were blocking ember-lts-4.12 once the
`require` import issue from ember-cli#321 cleared. All three affect the compat
path (ENABLE_COMPAT_BUILD=true, ember4 deps overrides) and are hidden
for ember-source >= 6 because the upstream code was rewritten.
1. "Cannot read properties of undefined (reading 'has')" at
`makeComputedDecorator` → `COMPUTED_GETTERS.has(...)`.
ember-source <= 5.x's `@ember/-internals/metal` has
`let COMPUTED_GETTERS; if (DEBUG) { COMPUTED_GETTERS = new WeakSet(); }`
paired with `assert(..., !COMPUTED_GETTERS.has(...))`. `DEBUG` comes
from `@glimmer/env`, whose published default is `DEBUG = false`.
Without something resolving `DEBUG` at compile time, rollup tree-shakes
the init but the `assert` predicate still runs eagerly, so
`COMPUTED_GETTERS` is undefined at runtime.
Conditionally add `babel-plugin-debug-macros` (only when
ENABLE_COMPAT_BUILD is set) with `flags: [{ source: '@glimmer/env',
flags: { DEBUG: true } }]` so the plugin inlines `DEBUG = true` in
ember-source. The init and the use stay consistent. Non-compat
scenarios don't need the plugin — modern ember-source uses
`isDevelopingApp()` from `@embroider/macros`, which `buildMacros()`
already handles — so gating on ENABLE_COMPAT_BUILD keeps the default
build untouched.
2. "ReferenceError: requirejs is not defined" from ember-qunit's
auto-loadTests.
ember-qunit@8's `start()` calls `loadTests()` which uses
`requirejs.entries` — there's no loader.js in a vite build.
ember-qunit@9 dropped that call entirely. Pass `{ loadTests: false }`
so `start()` skips the requirejs-based loader; tests/index.html
already uses `import.meta.glob` to discover them. The option is
safely ignored by ember-qunit 9.
3. "Cannot read properties of undefined (reading
'_APPLICATION_TEMPLATE_WRAPPER')" from `@ember/test-helpers`'s `visit`
and `setup-rendering-context`.
test-helpers 4.x reads `global.EmberENV._APPLICATION_TEMPLATE_WRAPPER`
to decide whether to look inside the `.ember-view` wrapper. In
classic ember-cli apps the global is populated from index.html; here
we need to set it ourselves from config. Assign `globalThis.EmberENV`
in `test-helper.js`. test-helpers 5.x no longer reads this at all, so
the assignment is harmless for non-compat scenarios.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>1 parent e965739 commit b60d722
4 files changed
Lines changed: 19 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
| |||
44 | 46 | | |
45 | 47 | | |
46 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
47 | 59 | | |
48 | 60 | | |
49 | 61 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| 38 | + | |
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
| 7 | + | |
6 | 8 | | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
11 | 13 | | |
12 | | - | |
| 14 | + | |
13 | 15 | | |
0 commit comments