Skip to content

Commit bfd391f

Browse files
Prevent #1688 (and other accidental prettier breakages) (#1689)
* Try to make a test to prevent #1688 (and other prettier breakages) * Seems fine so far... * Add node testing to CI * delete unused file * Remove mention of run-node-tests * Why isn't linting working? * As I feared, we have the build wrong * idk man * run pnpm repo:update:metadata * Lints -- these are actually all correct * Fix #1688 * Move test project into a real project, rather than tmp for easier poking around * Set vitest conditions * Curious * Fix node smoke * Remove extraneous test * Why doesn't my local CLI env match CI * lockfile * different logging * Now its working? * Codify the requirements for running the types check * More turbo progress * omg it worked * Maybe I just remove the local lint script * Don't need that anymore * Fix * Updates * fix * last fix?
1 parent 54e65f9 commit bfd391f

File tree

68 files changed

+700
-168
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+700
-168
lines changed

.github/workflows/ci.yml

+32
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ jobs:
4545
repo-token: ${{ secrets.GITHUB_TOKEN }}
4646
- run: pnpm repo:lint:all
4747

48+
4849
verify:
4950
name: Verify
5051
runs-on: ubuntu-latest
@@ -62,6 +63,37 @@ jobs:
6263
- run: pnpm repo:update:metadata
6364
- uses: wyvox/action-no-git-diff@v1
6465

66+
67+
test-node:
68+
name: Node
69+
runs-on: ubuntu-latest
70+
needs: ['install_dependencies']
71+
timeout-minutes: 5
72+
73+
steps:
74+
- uses: wyvox/action@v1
75+
with:
76+
node-version: 22.13.0
77+
repo-token: ${{ secrets.GITHUB_TOKEN }}
78+
- run: pnpm test:node
79+
80+
test-smoke:
81+
name: Smoke
82+
runs-on: ubuntu-latest
83+
needs: ['install_dependencies']
84+
timeout-minutes: 5
85+
86+
steps:
87+
- uses: wyvox/action@v1
88+
with:
89+
node-version: 22.13.0
90+
repo-token: ${{ secrets.GITHUB_TOKEN }}
91+
- working-directory: ./smoke-tests/node
92+
run: |
93+
pnpm test:setup
94+
pnpm test:node
95+
96+
6597
test-chrome:
6698
name: Chrome
6799
runs-on: ubuntu-latest

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
.DS_Store
12
/dist
23
**/dist
34
/control-dist/

.meta-updater/main.mjs

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,9 @@ export default () =>
2626

2727
const scripts = /** @type { JsonObject } */ (actual.scripts ??= {});
2828

29-
update(scripts, 'test:lint', 'eslint . --quiet');
30-
3129
// replaced with prepack
3230
delete scripts['test:types'];
31+
delete scripts['test:lint'];
3332

3433
const updateRepo = () => {
3534
update(actual, 'repository', {
@@ -57,6 +56,7 @@ export default () =>
5756
*/
5857
if (isRoot) {
5958
updateRepo();
59+
update(scripts, 'test:lint', 'eslint . --quiet');
6060
} else {
6161
delete actual.repository;
6262
}

.meta-updater/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
"keywords": [
77
"node"
88
],
9-
"scripts": {
10-
"test:lint": "eslint . --quiet"
11-
},
9+
"scripts": {},
1210
"dependencies": {
1311
"@pnpm/find-workspace-dir": "^1000.0.1",
1412
"@pnpm/meta-updater": "^2.0.3",

bin/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@
1313
"*"
1414
]
1515
},
16-
"scripts": {
17-
"test:lint": "eslint . --quiet"
18-
},
16+
"scripts": {},
1917
"dependencies": {
2018
"@glimmer-workspace/repo-metadata": "workspace:*",
2119
"@pnpm/workspace.find-packages": "^1000.0.5",

bin/run-node-tests.mjs

-46
This file was deleted.

package.json

+7-3
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,20 @@
2525
"lint:format": "prettier -c .",
2626
"postinstall": "node --disable-warning=ExperimentalWarning --experimental-strip-types ./bin/bench-packages.mts",
2727
"repo:lint:all": "turbo run lint:all",
28-
"repo:lint:files": "turbo run test:lint",
28+
"repo:lint:files": "turbo run //#test:lint",
2929
"repo:lint:fix": "turbo run test:lint -- --fix && prettier -w .",
3030
"repo:lint:pub": "turbo run test:publint",
31-
"repo:lint:types": "tsc -b",
31+
"repo:lint:types": "turbo run //#test:types",
3232
"repo:prepack": "turbo run prepack",
3333
"repo:update:conventions": "pnpm meta-updater",
3434
"repo:update:metadata": "node --experimental-strip-types --no-warnings ./repo-metadata/lib/update.ts",
35+
"smoke:setup": "node --disable-warning=ExperimentalWarning --experimental-strip-types ./smoke-tests/node/setup.ts",
3536
"start": "vite",
3637
"test": "node bin/run-tests.mjs",
3738
"test:babel-plugins": "yarn workspace @glimmer/vm-babel-plugins test",
3839
"test:browserstack": "ember test --test-port=7774 --host 127.0.0.1 --config-file=testem-browserstack.js",
3940
"test:lint": "eslint . --quiet",
40-
"test:node": "node bin/run-node-tests.mjs",
41+
"test:node": "pnpm turbo test:node",
4142
"test:smoke": "SMOKE_TESTS=true ember test",
4243
"ts": "node --disable-warning=ExperimentalWarning --experimental-strip-types",
4344
"unlink:all": "esyes ./bin/unlink-all.mts"
@@ -54,8 +55,10 @@
5455
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
5556
"@eslint/config-inspector": "^0.7.1",
5657
"@eslint/js": "9.17.0",
58+
"@glimmer-workspace/benchmark-env": "workspace:*",
5759
"@glimmer-workspace/build-support": "workspace:*",
5860
"@glimmer-workspace/eslint-plugin": "workspace:*",
61+
"@glimmer-workspace/integration-node-tests": "workspace:*",
5962
"@glimmer-workspace/integration-tests": "workspace:*",
6063
"@glimmer-workspace/repo-metadata": "workspace:*",
6164
"@glimmer/env": "0.1.7",
@@ -126,6 +129,7 @@
126129
"typescript": "^5.7.3",
127130
"typescript-eslint": "^8.19.0",
128131
"vite": "^6.0.10",
132+
"vitest": "^3.0.4",
129133
"zx": "^8.3.0"
130134
},
131135
"changelog": {

packages/@glimmer-workspace/benchmark-env/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
],
2626
"scripts": {
2727
"prepack": "rollup -c rollup.config.mjs",
28-
"test:lint": "eslint . --quiet",
2928
"test:publint": "publint"
3029
},
3130
"dependencies": {

packages/@glimmer-workspace/build/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@
1414
"console"
1515
]
1616
},
17-
"scripts": {
18-
"test:lint": "eslint . --quiet"
19-
},
17+
"scripts": {},
2018
"dependencies": {
2119
"@glimmer/local-debug-babel-plugin": "workspace:*",
2220
"@rollup/plugin-commonjs": "^25.0.7",

packages/@glimmer-workspace/env/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,5 @@
44
"version": "0.92.0",
55
"type": "module",
66
"exports": "./index.d.ts",
7-
"scripts": {
8-
"test:lint": "eslint . --quiet"
9-
}
7+
"scripts": {}
108
}

packages/@glimmer-workspace/eslint-plugin/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
"version": "0.92.0",
55
"type": "module",
66
"exports": "./index.js",
7-
"scripts": {
8-
"test:lint": "eslint . --quiet"
9-
},
7+
"scripts": {},
108
"dependencies": {
119
"@eslint/eslintrc": "^3.2.0",
1210
"@eslint/js": "^9.18.0",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
packages/
2+
pnpm-lock.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "@glimmer-workspace/integration-node-tests",
3+
"version": "0.92.0",
4+
"type": "module",
5+
"private": true,
6+
"repo-meta": {
7+
"strictness": "loose"
8+
},
9+
"scripts": {
10+
"test:node": "vitest --run"
11+
},
12+
"dependencies": {
13+
"@glimmer/syntax": "workspace:*",
14+
"execa": "^9.5.2",
15+
"prettier": "^3.4.2"
16+
},
17+
"devDependencies": {
18+
"@glimmer-workspace/repo-metadata": "workspace:*",
19+
"vitest": "^3.0.4"
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { createRequire } from 'node:module';
2+
3+
import * as prettier from 'prettier';
4+
import { describe, expect, it } from 'vitest';
5+
6+
const require = createRequire(import.meta.url);
7+
8+
/**
9+
* See: https://github.com/glimmerjs/glimmer-vm/issues/1688
10+
*
11+
* Requires the root package.json#pnpm#overrides point at our internal
12+
* copy of @glimmer/syntax, or else prettier brings its own already published
13+
* copy of @glimmer/syntax
14+
*
15+
* NOTE: that this test alone is insufficient to test our built outputs.
16+
* the smoke-tests/* folders are for that purpose.
17+
*/
18+
describe('Prettier', () => {
19+
it(`SMOKE: we've symlinked to the in-repo copy of @glimmer/syntax`, () => {
20+
let workspacePath = require.resolve('@glimmer/syntax');
21+
let prettierPath = require.resolve('prettier');
22+
let prettierGlimmer = require.resolve('@glimmer/syntax', { paths: [prettierPath] });
23+
24+
expect(prettierGlimmer).toBe(workspacePath);
25+
});
26+
27+
it('Underlynig preprocess API works', async () => {
28+
let result = (await import('@glimmer/syntax')).preprocess('<h1></h1>');
29+
30+
expect(result, `It can be await import()'d, and doesn't error`).toBeTruthy();
31+
});
32+
33+
it('Prettier can call preprocess', async () => {
34+
let result = await prettier.format(` <div>\n</div>`, { parser: 'glimmer' });
35+
36+
expect(result).toMatchInlineSnapshot(`
37+
"<div>
38+
</div>"
39+
`);
40+
});
41+
});

packages/@glimmer-workspace/integration-tests/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@
1212
"test/**/*"
1313
]
1414
},
15-
"scripts": {
16-
"test:lint": "eslint . --quiet"
17-
},
15+
"scripts": {},
1816
"dependencies": {
1917
"@glimmer-workspace/test-utils": "workspace:*",
2018
"@glimmer/compiler": "workspace:*",

packages/@glimmer-workspace/integration-tests/test/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
"private": true,
33
"name": "@glimmer-test/integration-tests",
44
"version": "0.92.0",
5-
"scripts": {
6-
"test:lint": "eslint . --quiet"
7-
},
5+
"scripts": {},
86
"dependencies": {
97
"@glimmer-workspace/integration-tests": "workspace:*",
108
"@glimmer-workspace/test-utils": "workspace:*",

packages/@glimmer-workspace/test-utils/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
"version": "0.92.0",
55
"type": "module",
66
"main": "index.ts",
7-
"scripts": {
8-
"test:lint": "eslint . --quiet"
9-
},
7+
"scripts": {},
108
"dependencies": {
119
"@glimmer/interfaces": "workspace:*",
1210
"@glimmer/util": "workspace:*"

packages/@glimmer/compiler/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
],
2828
"scripts": {
2929
"prepack": "rollup -c rollup.config.mjs",
30-
"test:lint": "eslint . --quiet",
3130
"test:publint": "publint"
3231
},
3332
"dependencies": {

packages/@glimmer/compiler/test/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
"private": true,
33
"name": "@glimmer-test/compiler",
44
"version": "0.92.0",
5-
"scripts": {
6-
"test:lint": "eslint . --quiet"
7-
},
5+
"scripts": {},
86
"dependencies": {
97
"@glimmer/compiler": "workspace:*",
108
"@glimmer/interfaces": "workspace:*",

packages/@glimmer/constants/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
"type": "module",
88
"main": "index.ts",
99
"types": "index.ts",
10-
"scripts": {
11-
"test:lint": "eslint . --quiet"
12-
},
10+
"scripts": {},
1311
"dependencies": {
1412
"@glimmer/interfaces": "workspace:*"
1513
},

packages/@glimmer/constants/test/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
"private": true,
33
"name": "@glimmer-test/constants",
44
"version": "0.92.0",
5-
"scripts": {
6-
"test:lint": "eslint . --quiet"
7-
},
5+
"scripts": {},
86
"dependencies": {
97
"@glimmer/env": "0.1.7",
108
"@glimmer/util": "workspace:*"

packages/@glimmer/debug-util/lib/present.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ export function assertPresent<T>(value: T, message?: string): asserts value is P
1414
}
1515
}
1616

17-
export function isPresentArray<T>(list: readonly T[]): list is PresentArray<T> {
18-
return list.length > 0;
17+
export function isPresentArray<T>(list?: readonly T[]): list is PresentArray<T> {
18+
return list ? list.length > 0 : false;
1919
}
2020

2121
export function ifPresent<T, U, V>(

packages/@glimmer/debug-util/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
"description": "Common utilities used in Glimmer with debug-specific behavior",
77
"type": "module",
88
"exports": "./index.ts",
9-
"scripts": {
10-
"test:lint": "eslint . --quiet"
11-
},
9+
"scripts": {},
1210
"dependencies": {
1311
"@glimmer/interfaces": "workspace:*"
1412
},

packages/@glimmer/debug-util/test/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
"private": true,
33
"name": "@glimmer-test/debug-util",
44
"version": "0.92.0",
5-
"scripts": {
6-
"test:lint": "eslint . --quiet"
7-
},
5+
"scripts": {},
86
"dependencies": {
97
"@glimmer/env": "0.1.7",
108
"@glimmer/util": "workspace:*"

0 commit comments

Comments
 (0)