Skip to content

Commit 0691d3f

Browse files
NullVoxPopuliclaude
andcommitted
Make ember-lts-4.12 compat scenario runnable
Two stacked runtime issues were blocking ember-lts-4.12 once the `require` import issue from #321 cleared. Both only 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. 2. ember-qunit@8 + @ember/test-helpers@4 rely on classic-Ember globals that don't exist in a vite build: `start()` auto-calls `loadTests()` which iterates `requirejs.entries`, and `visit` reads `global.EmberENV._APPLICATION_TEMPLATE_WRAPPER`. Both were removed in ember-qunit@9 and @ember/test-helpers@5 respectively. Bump those two pins in the ember4 deps stanza so the scenario exercises the same surface modern scenarios do: ember-qunit: ^8.0.0 -> ^9.0.0 @ember/test-helpers: ^4.0.0 -> ^5.0.0 Both peer `ember-source >= 4.0.0`, so Ember 4.12 is still within the supported range. ember-qunit@9 peers `@ember/test-helpers >=3.0.3`, so the test-helpers bump stays within bounds. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
1 parent e965739 commit 0691d3f

4 files changed

Lines changed: 18 additions & 2 deletions

File tree

pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test-app/.try.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ module.exports = async function (defaults) {
1717
};
1818

1919
const ember4 = {
20-
'@ember/test-helpers': '^4.0.0',
20+
'@ember/test-helpers': '^5.0.0',
2121
'@ember/test-waiters': '^3.1.0',
2222
'@embroider/compat': '^4.0.3',
23-
'ember-qunit': '^8.0.0',
23+
'ember-qunit': '^9.0.0',
2424
'ember-cli': '~4.12.0',
2525
};
2626

test-app/babel.config.mjs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { buildMacros } from '@embroider/macros/babel';
44

55
const macros = buildMacros();
66

7+
const isCompatBuild = !!process.env.ENABLE_COMPAT_BUILD;
8+
79
export default {
810
plugins: [
911
[
@@ -44,6 +46,16 @@ export default {
4446
},
4547
],
4648
...macros.babelMacros,
49+
...(isCompatBuild
50+
? [
51+
[
52+
'babel-plugin-debug-macros',
53+
{
54+
flags: [{ source: '@glimmer/env', flags: { DEBUG: true } }],
55+
},
56+
],
57+
]
58+
: []),
4759
],
4860

4961
generatorOpts: {

test-app/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
"@babel/eslint-parser": "^7.23.3",
3636
"@babel/plugin-transform-runtime": "^7.29.0",
3737
"@babel/plugin-transform-typescript": "^7.28.6",
38+
"babel-plugin-debug-macros": "^0.3.4",
3839
"@ember/string": "^4.0.1",
3940
"@ember/test-helpers": "^5.4.1",
4041
"@embroider/core": "^4.4.7",

0 commit comments

Comments
 (0)