@quenty/nevermore-cli 4.50.0 → 4.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/commands/batch-command/batch-bundle-command.d.ts +12 -0
  3. package/dist/commands/batch-command/batch-bundle-command.d.ts.map +1 -0
  4. package/dist/commands/batch-command/batch-bundle-command.js +96 -0
  5. package/dist/commands/batch-command/batch-bundle-command.js.map +1 -0
  6. package/dist/commands/batch-command/batch-test-command.d.ts +1 -0
  7. package/dist/commands/batch-command/batch-test-command.d.ts.map +1 -1
  8. package/dist/commands/batch-command/batch-test-command.js +103 -15
  9. package/dist/commands/batch-command/batch-test-command.js.map +1 -1
  10. package/dist/commands/batch-command/index.d.ts.map +1 -1
  11. package/dist/commands/batch-command/index.js +2 -0
  12. package/dist/commands/batch-command/index.js.map +1 -1
  13. package/dist/commands/tools-command/ci-post-test-results.d.ts +1 -0
  14. package/dist/commands/tools-command/ci-post-test-results.d.ts.map +1 -1
  15. package/dist/commands/tools-command/ci-post-test-results.js +13 -4
  16. package/dist/commands/tools-command/ci-post-test-results.js.map +1 -1
  17. package/dist/utils/batch/changed-packages-utils.d.ts +8 -0
  18. package/dist/utils/batch/changed-packages-utils.d.ts.map +1 -1
  19. package/dist/utils/batch/changed-packages-utils.js +9 -11
  20. package/dist/utils/batch/changed-packages-utils.js.map +1 -1
  21. package/dist/utils/job-context/batch-script-job-context.d.ts +12 -0
  22. package/dist/utils/job-context/batch-script-job-context.d.ts.map +1 -1
  23. package/dist/utils/job-context/batch-script-job-context.js +19 -0
  24. package/dist/utils/job-context/batch-script-job-context.js.map +1 -1
  25. package/dist/utils/sourcemap/sourcemap-loader.d.ts +3 -3
  26. package/dist/utils/sourcemap/sourcemap-loader.d.ts.map +1 -1
  27. package/dist/utils/sourcemap/sourcemap-loader.js +6 -7
  28. package/dist/utils/sourcemap/sourcemap-loader.js.map +1 -1
  29. package/dist/utils/testing/batch-run.e2e.test.js +36 -0
  30. package/dist/utils/testing/batch-run.e2e.test.js.map +1 -1
  31. package/dist/utils/testing/parsers/annotation-workspace.d.ts +17 -0
  32. package/dist/utils/testing/parsers/annotation-workspace.d.ts.map +1 -0
  33. package/dist/utils/testing/parsers/annotation-workspace.js +47 -0
  34. package/dist/utils/testing/parsers/annotation-workspace.js.map +1 -0
  35. package/dist/utils/testing/parsers/index.d.ts +0 -1
  36. package/dist/utils/testing/parsers/index.d.ts.map +1 -1
  37. package/dist/utils/testing/parsers/index.js +0 -1
  38. package/dist/utils/testing/parsers/index.js.map +1 -1
  39. package/dist/utils/testing/parsers/jest-lua-parser.d.ts +14 -29
  40. package/dist/utils/testing/parsers/jest-lua-parser.d.ts.map +1 -1
  41. package/dist/utils/testing/parsers/jest-lua-parser.js +85 -100
  42. package/dist/utils/testing/parsers/jest-lua-parser.js.map +1 -1
  43. package/dist/utils/testing/parsers/jest-lua-parser.test.js +359 -56
  44. package/dist/utils/testing/parsers/jest-lua-parser.test.js.map +1 -1
  45. package/dist/utils/testing/parsers/roblox-path-resolver.d.ts +23 -17
  46. package/dist/utils/testing/parsers/roblox-path-resolver.d.ts.map +1 -1
  47. package/dist/utils/testing/parsers/roblox-path-resolver.js +89 -54
  48. package/dist/utils/testing/parsers/roblox-path-resolver.js.map +1 -1
  49. package/dist/utils/testing/parsers/roblox-path-resolver.test.js +76 -36
  50. package/dist/utils/testing/parsers/roblox-path-resolver.test.js.map +1 -1
  51. package/dist/utils/testing/runner/combined-project-generator.d.ts.map +1 -1
  52. package/dist/utils/testing/runner/combined-project-generator.js +5 -6
  53. package/dist/utils/testing/runner/combined-project-generator.js.map +1 -1
  54. package/dist/utils/testing/runner/prebuilt-batch-bundle.d.ts +26 -0
  55. package/dist/utils/testing/runner/prebuilt-batch-bundle.d.ts.map +1 -0
  56. package/dist/utils/testing/runner/prebuilt-batch-bundle.js +200 -0
  57. package/dist/utils/testing/runner/prebuilt-batch-bundle.js.map +1 -0
  58. package/dist/utils/testing/runner/prebuilt-batch-bundle.test.d.ts +2 -0
  59. package/dist/utils/testing/runner/prebuilt-batch-bundle.test.d.ts.map +1 -0
  60. package/dist/utils/testing/runner/prebuilt-batch-bundle.test.js +181 -0
  61. package/dist/utils/testing/runner/prebuilt-batch-bundle.test.js.map +1 -0
  62. package/dist/utils/testing/runner/test-project-slug.d.ts +11 -0
  63. package/dist/utils/testing/runner/test-project-slug.d.ts.map +1 -0
  64. package/dist/utils/testing/runner/test-project-slug.js +11 -0
  65. package/dist/utils/testing/runner/test-project-slug.js.map +1 -0
  66. package/dist/utils/testing/runner/test-runner.d.ts +8 -1
  67. package/dist/utils/testing/runner/test-runner.d.ts.map +1 -1
  68. package/dist/utils/testing/runner/test-runner.js +19 -6
  69. package/dist/utils/testing/runner/test-runner.js.map +1 -1
  70. package/package.json +7 -6
  71. package/src/commands/batch-command/batch-bundle-command.ts +140 -0
  72. package/src/commands/batch-command/batch-test-command.ts +156 -16
  73. package/src/commands/batch-command/index.ts +2 -0
  74. package/src/commands/tools-command/ci-post-test-results.ts +18 -3
  75. package/src/utils/batch/changed-packages-utils.ts +21 -12
  76. package/src/utils/job-context/batch-script-job-context.ts +34 -3
  77. package/src/utils/sourcemap/sourcemap-loader.ts +7 -9
  78. package/src/utils/testing/batch-run.e2e.test.ts +42 -0
  79. package/src/utils/testing/parsers/annotation-workspace.ts +74 -0
  80. package/src/utils/testing/parsers/index.ts +0 -1
  81. package/src/utils/testing/parsers/jest-lua-parser.test.ts +433 -65
  82. package/src/utils/testing/parsers/jest-lua-parser.ts +131 -109
  83. package/src/utils/testing/parsers/roblox-path-resolver.test.ts +144 -61
  84. package/src/utils/testing/parsers/roblox-path-resolver.ts +117 -56
  85. package/src/utils/testing/runner/combined-project-generator.ts +9 -13
  86. package/src/utils/testing/runner/prebuilt-batch-bundle.test.ts +252 -0
  87. package/src/utils/testing/runner/prebuilt-batch-bundle.ts +267 -0
  88. package/src/utils/testing/runner/test-project-slug.ts +18 -0
  89. package/src/utils/testing/runner/test-runner.ts +43 -13
  90. package/tsconfig.tsbuildinfo +1 -1
@@ -1,12 +1,18 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
1
+ import { beforeAll, describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { fileURLToPath } from 'url';
2
3
  import { parseJestLuaOutput } from './jest-lua-parser.js';
3
4
  import { SourcemapResolver } from '../../sourcemap/index.js';
4
- // Mock fs.readFileSync for _findTestLineInFile
5
- vi.mock('fs', () => ({
6
- readFileSync: vi.fn(() => {
7
- throw new Error('ENOENT');
8
- }),
9
- }));
5
+ import { tryLoadAnnotationWorkspaceAsync, } from './annotation-workspace.js';
6
+ // Pass-through, so spec searches read the real repo unless a test stubs them.
7
+ vi.mock('fs', async (importOriginal) => {
8
+ const actual = await importOriginal();
9
+ return { ...actual, readFileSync: vi.fn(actual.readFileSync) };
10
+ });
11
+ const REPO_ROOT = fileURLToPath(new URL('../../../../../../', import.meta.url));
12
+ let workspace;
13
+ beforeAll(async () => {
14
+ workspace = await tryLoadAnnotationWorkspaceAsync(REPO_ROOT);
15
+ }, 30000);
10
16
  describe('parseJestLuaOutput', () => {
11
17
  beforeEach(() => {
12
18
  vi.restoreAllMocks();
@@ -23,7 +29,9 @@ describe('parseJestLuaOutput', () => {
23
29
  ' at ServerScriptService.observablecollection.Shared.ObservableList.spec:45',
24
30
  ].join('\n');
25
31
  const result = parseJestLuaOutput(input, {
26
- packageName: 'observablecollection',
32
+ packageName: '@quenty/observablecollection',
33
+ repoRoot: REPO_ROOT,
34
+ workspace,
27
35
  });
28
36
  expect(result).toHaveLength(1);
29
37
  expect(result[0]).toEqual({
@@ -44,20 +52,25 @@ describe('parseJestLuaOutput', () => {
44
52
  ' Expected: 1',
45
53
  ' Received: 2',
46
54
  '',
47
- ' at ServerScriptService.mypkg.Shared.Foo.spec:10',
55
+ ' at ServerScriptService.observablecollection.Shared.ObservableList.spec:10',
48
56
  '',
49
57
  ' ● Suite > test two',
50
58
  '',
51
59
  ' Expected: true',
52
60
  ' Received: false',
53
61
  '',
54
- ' at ServerScriptService.mypkg.Shared.Bar.spec:20',
62
+ ' at ServerScriptService.observablecollection.Shared.ObservableMap.spec:20',
55
63
  ].join('\n');
56
- const result = parseJestLuaOutput(input, { packageName: 'mypkg' });
64
+ const result = parseJestLuaOutput(input, {
65
+ packageName: '@quenty/observablecollection',
66
+ repoRoot: REPO_ROOT,
67
+ workspace,
68
+ });
57
69
  expect(result).toHaveLength(2);
58
70
  expect(result[0].title).toBe('Suite > test one');
59
71
  expect(result[0].line).toBe(10);
60
72
  expect(result[1].title).toBe('Suite > test two');
73
+ expect(result[1].file).toBe('src/observablecollection/src/Shared/ObservableMap.spec.lua');
61
74
  expect(result[1].line).toBe(20);
62
75
  });
63
76
  it('parses nested 3+ level test hierarchy', () => {
@@ -66,13 +79,17 @@ describe('parseJestLuaOutput', () => {
66
79
  '',
67
80
  ' failure message',
68
81
  '',
69
- ' at ServerScriptService.pkg.Shared.Deep.spec:99',
82
+ ' at ServerScriptService.maid.Shared.MaidTaskUtils.spec:99',
70
83
  ].join('\n');
71
- const result = parseJestLuaOutput(input, { packageName: 'pkg' });
84
+ const result = parseJestLuaOutput(input, {
85
+ packageName: '@quenty/maid',
86
+ repoRoot: REPO_ROOT,
87
+ workspace,
88
+ });
72
89
  expect(result).toHaveLength(1);
73
90
  expect(result[0].title).toBe('Level1 > Level2 > Level3 > Level4 > deep test');
74
91
  });
75
- it('falls back to line 1 when no at location and file not found', () => {
92
+ it('emits no file when there is no location', () => {
76
93
  const input = [
77
94
  ' ● Suite > test without location',
78
95
  '',
@@ -80,15 +97,35 @@ describe('parseJestLuaOutput', () => {
80
97
  '',
81
98
  'Test Suites: 1 failed, 1 total',
82
99
  ].join('\n');
83
- const result = parseJestLuaOutput(input, { packageName: 'mypkg' });
100
+ const result = parseJestLuaOutput(input, {
101
+ packageName: '@quenty/maid',
102
+ repoRoot: REPO_ROOT,
103
+ workspace,
104
+ });
105
+ expect(result).toHaveLength(1);
106
+ expect(result[0].file).toBeUndefined();
107
+ expect(result[0].line).toBeUndefined();
108
+ });
109
+ it('emits no file when the location does not exist in the repo', () => {
110
+ const input = [
111
+ ' ● Suite > test one',
112
+ '',
113
+ ' Expected: 1',
114
+ '',
115
+ ' at ServerScriptService.unknownpkg.Shared.Bar.spec:10',
116
+ ].join('\n');
117
+ const result = parseJestLuaOutput(input, {
118
+ packageName: '@quenty/unknownpkg',
119
+ repoRoot: REPO_ROOT,
120
+ workspace,
121
+ });
84
122
  expect(result).toHaveLength(1);
85
- expect(result[0].line).toBe(1);
86
- expect(result[0].file).toBe('src/mypkg/src');
123
+ expect(result[0].file).toBeUndefined();
87
124
  });
88
125
  it('searches spec file for it() call when at location has no line number', async () => {
126
+ const actualFs = await vi.importActual('fs');
89
127
  const { readFileSync } = await import('fs');
90
- const mockedReadFileSync = vi.mocked(readFileSync);
91
- mockedReadFileSync.mockReturnValue([
128
+ const specContent = [
92
129
  'local require = require(script.Parent.loader).load(script)',
93
130
  '',
94
131
  'describe("Suite", function()',
@@ -96,30 +133,41 @@ describe('parseJestLuaOutput', () => {
96
133
  ' -- test body',
97
134
  ' end)',
98
135
  'end)',
99
- ].join('\n'));
136
+ ].join('\n');
137
+ vi.mocked(readFileSync).mockImplementation(((filePath, options) => String(filePath).endsWith('MaidTaskUtils.spec.lua')
138
+ ? specContent
139
+ : actualFs.readFileSync(filePath, options)));
100
140
  const input = [
101
- ' ● Suite > my test name',
141
+ ' ● Suite › my test name',
102
142
  '',
103
143
  ' assertion failed',
104
144
  '',
105
- ' at ServerScriptService.mypkg.Shared.Foo.spec',
145
+ ' at ServerScriptService.maid.Shared.MaidTaskUtils.spec',
106
146
  ].join('\n');
107
- const result = parseJestLuaOutput(input, { packageName: 'mypkg' });
147
+ const result = parseJestLuaOutput(input, {
148
+ packageName: '@quenty/maid',
149
+ repoRoot: REPO_ROOT,
150
+ workspace,
151
+ });
108
152
  expect(result).toHaveLength(1);
109
- expect(result[0].file).toBe('src/mypkg/src/Shared/Foo.spec.lua');
153
+ expect(result[0].file).toBe('src/maid/src/Shared/MaidTaskUtils.spec.lua');
110
154
  expect(result[0].line).toBe(4);
111
155
  });
112
156
  it('parses a runtime error with Stack Begin/Stack End', () => {
113
157
  const input = [
114
158
  'Error: attempt to index nil with "Connect"',
115
159
  'Stack Begin',
116
- "Script 'ServerScriptService.maid.Shared.Maid.spec', Line 23",
160
+ "Script 'ServerScriptService.maid.Shared.MaidTaskUtils', Line 23",
117
161
  'Stack End',
118
162
  ].join('\n');
119
- const result = parseJestLuaOutput(input, { packageName: 'maid' });
163
+ const result = parseJestLuaOutput(input, {
164
+ packageName: '@quenty/maid',
165
+ repoRoot: REPO_ROOT,
166
+ workspace,
167
+ });
120
168
  expect(result).toHaveLength(1);
121
169
  expect(result[0]).toEqual({
122
- file: 'src/maid/src/Shared/Maid.spec.lua',
170
+ file: 'src/maid/src/Shared/MaidTaskUtils.lua',
123
171
  line: 23,
124
172
  severity: 'error',
125
173
  title: 'Runtime error',
@@ -134,18 +182,24 @@ describe('parseJestLuaOutput', () => {
134
182
  ' Expected: 1',
135
183
  ' Received: 2',
136
184
  '',
137
- ' at ServerScriptService.pkg.Shared.Foo.spec:10',
185
+ ' at ServerScriptService.maid.Shared.MaidTaskUtils.spec:10',
138
186
  '',
139
187
  'Error: attempt to call nil value',
140
188
  'Stack Begin',
141
- "Script 'ServerScriptService.pkg.Shared.Bar.spec', Line 5",
189
+ "Script 'ServerScriptService.maid.Shared.Maid', Line 5",
142
190
  'Stack End',
143
191
  ].join('\n');
144
- const result = parseJestLuaOutput(input, { packageName: 'pkg' });
192
+ const result = parseJestLuaOutput(input, {
193
+ packageName: '@quenty/maid',
194
+ repoRoot: REPO_ROOT,
195
+ workspace,
196
+ });
145
197
  expect(result).toHaveLength(2);
146
198
  expect(result[0].title).toBe('Suite > assertion test');
147
199
  expect(result[0].source).toBe('jest-lua');
148
200
  expect(result[1].title).toBe('Runtime error');
201
+ expect(result[1].message).toBe('Error: attempt to call nil value');
202
+ expect(result[1].file).toBe('src/maid/src/Shared/Maid.lua');
149
203
  expect(result[1].line).toBe(5);
150
204
  });
151
205
  it('returns empty array for all-passing output', () => {
@@ -158,7 +212,7 @@ describe('parseJestLuaOutput', () => {
158
212
  'Test Suites: 1 passed, 1 total',
159
213
  'Tests: 2 passed, 2 total',
160
214
  ].join('\n');
161
- const result = parseJestLuaOutput(input, { packageName: 'maid' });
215
+ const result = parseJestLuaOutput(input, { packageName: '@quenty/maid' });
162
216
  expect(result).toEqual([]);
163
217
  });
164
218
  it('strips ANSI escape codes cleanly', () => {
@@ -168,9 +222,13 @@ describe('parseJestLuaOutput', () => {
168
222
  ' \x1b[31mExpected: 1\x1b[39m',
169
223
  ' \x1b[32mReceived: 2\x1b[39m',
170
224
  '',
171
- ' at ServerScriptService.pkg.Shared.Foo.spec:10',
225
+ ' at ServerScriptService.maid.Shared.MaidTaskUtils.spec:10',
172
226
  ].join('\n');
173
- const result = parseJestLuaOutput(input, { packageName: 'pkg' });
227
+ const result = parseJestLuaOutput(input, {
228
+ packageName: '@quenty/maid',
229
+ repoRoot: REPO_ROOT,
230
+ workspace,
231
+ });
174
232
  expect(result).toHaveLength(1);
175
233
  expect(result[0].title).toBe('Suite > test');
176
234
  expect(result[0].line).toBe(10);
@@ -184,28 +242,239 @@ describe('parseJestLuaOutput', () => {
184
242
  ' partial error message',
185
243
  // No at-line, no Stack Begin, just ends
186
244
  ].join('\n');
187
- const result = parseJestLuaOutput(input, { packageName: 'pkg' });
188
- // Should still emit a diagnostic with fallback location
245
+ const result = parseJestLuaOutput(input, { packageName: '@quenty/maid' });
189
246
  expect(result).toHaveLength(1);
190
247
  expect(result[0].title).toBe('Suite > incomplete test');
191
- expect(result[0].line).toBe(1);
248
+ expect(result[0].file).toBeUndefined();
192
249
  });
193
250
  it('handles empty input', () => {
194
- const result = parseJestLuaOutput('', { packageName: 'pkg' });
251
+ const result = parseJestLuaOutput('', { packageName: '@quenty/maid' });
195
252
  expect(result).toEqual([]);
196
253
  });
197
- it('uses last stack frame for location in multi-frame stack', () => {
254
+ it('finds an aliased it() call by its quoted test name', () => {
198
255
  const input = [
199
- 'Error: bad argument',
200
- 'Stack Begin',
201
- "Script 'ServerScriptService.pkg.Shared.Inner', Line 10",
202
- "Script 'ServerScriptService.pkg.Shared.Outer.spec', Line 30",
203
- 'Stack End',
256
+ ' ● Brine.serialize / Brine.deserialize roundtrip › propagates a tag added after subscribe',
257
+ '',
258
+ ' assertion failed',
259
+ '',
260
+ ' at ServerScriptService.brine.Shared.Brine.spec',
204
261
  ].join('\n');
205
- const result = parseJestLuaOutput(input, { packageName: 'pkg' });
206
- expect(result).toHaveLength(1);
207
- expect(result[0].file).toBe('src/pkg/src/Shared/Outer.spec.lua');
208
- expect(result[0].line).toBe(30);
262
+ const result = parseJestLuaOutput(input, {
263
+ packageName: '@quenty/brine',
264
+ repoRoot: REPO_ROOT,
265
+ workspace,
266
+ });
267
+ expect(result[0].file).toBe('src/brine/src/Shared/Brine.spec.lua');
268
+ expect(result[0].line).toBe(495);
269
+ });
270
+ it('falls back to the enclosing describe for a generated test name', () => {
271
+ const input = [
272
+ ' ● EllipticCurveCryptography Performance › should efficiently process 500 payloads of 100 bytes',
273
+ '',
274
+ ' assertion failed',
275
+ '',
276
+ ' at ServerScriptService.ellipticcurvecryptography.Shared.EllipticCurveCryptographyBenchmark.spec',
277
+ ].join('\n');
278
+ const result = parseJestLuaOutput(input, {
279
+ packageName: '@quenty/ellipticcurvecryptography',
280
+ repoRoot: REPO_ROOT,
281
+ workspace,
282
+ });
283
+ expect(result[0].file).toBe('src/ellipticcurvecryptography/src/Shared/EllipticCurveCryptographyBenchmark.spec.lua');
284
+ expect(result[0].line).toBe(20);
285
+ });
286
+ it('emits the file with no line when no test name matches', () => {
287
+ const input = [
288
+ ' ● should efficiently process 500 payloads of 100 bytes',
289
+ '',
290
+ ' assertion failed',
291
+ '',
292
+ ' at ServerScriptService.ellipticcurvecryptography.Shared.EllipticCurveCryptographyBenchmark.spec',
293
+ ].join('\n');
294
+ const result = parseJestLuaOutput(input, {
295
+ packageName: '@quenty/ellipticcurvecryptography',
296
+ repoRoot: REPO_ROOT,
297
+ workspace,
298
+ });
299
+ expect(result[0].file).toBe('src/ellipticcurvecryptography/src/Shared/EllipticCurveCryptographyBenchmark.spec.lua');
300
+ expect(result[0].line).toBeUndefined();
301
+ });
302
+ describe('real CI logs', () => {
303
+ it('unwraps chunk names and picks the innermost package frame of a runtime error', () => {
304
+ const input = [
305
+ `[string "ServerScriptService.saveslot.Server.HasSaveSlotsDataStore"]:1668: attempt to call missing method 'GetSubStore' of table`,
306
+ ' Stack Begin',
307
+ ` Script '[string "ServerScriptService.saveslot.Server.HasSaveSlotsDataStore"]', Line 1668 - function _stagePlaytime`,
308
+ ` Script '[string "ServerScriptService.saveslot.Server.HasSaveSlotsDataStore"]', Line 1647 - function _flushPlaytime`,
309
+ ` Script '[string "ServerScriptService.saveslot.Server.HasSaveSlotsDataStore"]', Line 1678 - function _endPlaySession`,
310
+ ` Script '[string "ServerScriptService.saveslot.Server.HasSaveSlotsDataStore"]', Line 1609`,
311
+ ` Script '[string "ServerScriptService.saveslot.node_modules.@quenty.adorneedata.node_modules.@quenty.attributeutils.node_modules.@quenty.baseobject.node_modules.@quenty.maid.Shared.Maid"]', Line 267 - function DoCleaning`,
312
+ ` Script '[string "ServerScriptService.saveslot.node_modules.@quenty.adorneedata.node_modules.@quenty.attributeutils.node_modules.@quenty.baseobject.Shared.BaseObject"]', Line 40 - function Destroy`,
313
+ ` Script '[string "ServerScriptService.saveslot.node_modules.@quenty.binder.Shared.Binder"]', Line 752 - function _remove`,
314
+ ` Script '[string "ServerScriptService.saveslot.node_modules.@quenty.binder.Shared.Binder"]', Line 224`,
315
+ ' Stack End',
316
+ ].join('\n');
317
+ const result = parseJestLuaOutput(input, {
318
+ packageName: '@quenty/saveslot',
319
+ repoRoot: REPO_ROOT,
320
+ workspace,
321
+ });
322
+ expect(result).toHaveLength(1);
323
+ expect(result[0].file).toBe('src/saveslot/src/Server/HasSaveSlotsDataStore.lua');
324
+ expect(result[0].line).toBe(1668);
325
+ });
326
+ it('reads past frames from other service roots', () => {
327
+ const input = [
328
+ ' ● GameProductCmdrService › registers commands',
329
+ '',
330
+ ' Cannot provide template "CmdrExecutionTemplate"',
331
+ '',
332
+ ' ServerScriptService.gameproduct.node_modules.@quenty.cmdrservice.node_modules.@quenty.templateprovider.Shared.TemplateProvider:726 function CloneTemplate',
333
+ ' ReplicatedStorage.Packages.CmdrClient:5',
334
+ ' ServerScriptService.gameproduct.Server.Cmdr.GameProductCmdrService:59 function _registerCommands',
335
+ '',
336
+ ].join('\n');
337
+ const result = parseJestLuaOutput(input, {
338
+ packageName: '@quenty/gameproductservice',
339
+ repoRoot: REPO_ROOT,
340
+ workspace,
341
+ });
342
+ expect(result[0].file).toBe('src/gameproductservice/src/Server/Cmdr/GameProductCmdrService.lua');
343
+ expect(result[0].line).toBe(59);
344
+ });
345
+ it('reads Jest frames without an `at` prefix', () => {
346
+ const input = [
347
+ '\x1b[1m\x1b[31m \x1b[1m● \x1b[22m\x1b[1msave slot playtime › persists accrued playtime on the save that triggered the flush\x1b[39m\x1b[22m',
348
+ '',
349
+ " attempt to call missing method 'GetSubStore' of table",
350
+ '\x1b[2m\x1b[22m',
351
+ '\x1b[2m ServerScriptService.saveslot.Server.HasSaveSlotsDataStore:1668\x1b[22m',
352
+ '',
353
+ '\x1b[1m\x1b[31m \x1b[1m● \x1b[22m\x1b[1msave slot playtime › keeps the replicated attribute and the stored value in step\x1b[39m\x1b[22m',
354
+ '',
355
+ " attempt to call missing method 'GetSubStore' of table",
356
+ '\x1b[2m\x1b[22m',
357
+ '\x1b[2m ServerScriptService.saveslot.Server.HasSaveSlotsDataStore:1668\x1b[22m',
358
+ '',
359
+ ].join('\n');
360
+ const result = parseJestLuaOutput(input, {
361
+ packageName: '@quenty/saveslot',
362
+ repoRoot: REPO_ROOT,
363
+ workspace,
364
+ });
365
+ expect(result).toHaveLength(2);
366
+ expect(result.map((d) => [d.file, d.line, d.title])).toEqual([
367
+ [
368
+ 'src/saveslot/src/Server/HasSaveSlotsDataStore.lua',
369
+ 1668,
370
+ 'save slot playtime › persists accrued playtime on the save that triggered the flush',
371
+ ],
372
+ [
373
+ 'src/saveslot/src/Server/HasSaveSlotsDataStore.lua',
374
+ 1668,
375
+ 'save slot playtime › keeps the replicated attribute and the stored value in step',
376
+ ],
377
+ ]);
378
+ expect(result[0].message).toBe("attempt to call missing method 'GetSubStore' of table");
379
+ });
380
+ it('prefers the package under test over dependency frames', () => {
381
+ const input = [
382
+ `[string "ServerScriptService.gameproduct.node_modules.@quenty.cmdrservice.node_modules.@quenty.templateprovider.Shared.TemplateProvider"]:726: [TemplateProvider.CmdrTemplateProviderServer.CloneTemplate] - Cannot provide template "CmdrExecutionTemplate"`,
383
+ ' Stack Begin',
384
+ ` Script '[string "ServerScriptService.gameproduct.node_modules.@quenty.cmdrservice.node_modules.@quenty.templateprovider.Shared.TemplateProvider"]', Line 726 - function CloneTemplate`,
385
+ ` Script '[string "ServerScriptService.gameproduct.node_modules.@quenty.cmdrservice.Server.CmdrService"]', Line 144 - function RegisterCommand`,
386
+ ` Script '[string "ServerScriptService.gameproduct.Server.Cmdr.GameProductCmdrService"]', Line 59 - function _registerCommands`,
387
+ ` Script '[string "ServerScriptService.gameproduct.Server.Cmdr.GameProductCmdrService"]', Line 55 - function Start`,
388
+ ` Script '[string "ServerScriptService.gameproduct.node_modules.@quenty.avatareditorutils.node_modules.@quenty.observablecollection.node_modules.@quenty.blend.node_modules.@quenty.playerthumbnailutils.node_modules.@quenty.playermock.node_modules.@quenty.servic..."]', Line 217`,
389
+ ' Stack End',
390
+ ].join('\n');
391
+ const result = parseJestLuaOutput(input, {
392
+ packageName: '@quenty/gameproductservice',
393
+ repoRoot: REPO_ROOT,
394
+ workspace,
395
+ });
396
+ expect(result).toHaveLength(1);
397
+ expect(result[0].file).toBe('src/gameproductservice/src/Server/Cmdr/GameProductCmdrService.lua');
398
+ expect(result[0].line).toBe(59);
399
+ });
400
+ it('does not let a sibling package frame land in the package under test', () => {
401
+ const input = [
402
+ `[string "ServerScriptService.saveslot.Server.HasSaveSlotsDataStore"]:1668: attempt to call missing method 'GetSubStore' of table`,
403
+ ' Stack Begin',
404
+ ` Script '[string "ServerScriptService.othersibling.Server.SaveSlotService"]', Line 10`,
405
+ ` Script '[string "ServerScriptService.saveslot.Server.HasSaveSlotsDataStore"]', Line 1668 - function _stagePlaytime`,
406
+ ' Stack End',
407
+ ].join('\n');
408
+ const result = parseJestLuaOutput(input, {
409
+ packageName: '@quenty/saveslot',
410
+ repoRoot: REPO_ROOT,
411
+ workspace,
412
+ });
413
+ expect(result).toHaveLength(1);
414
+ expect(result[0].file).toBe('src/saveslot/src/Server/HasSaveSlotsDataStore.lua');
415
+ expect(result[0].line).toBe(1668);
416
+ });
417
+ it('maps dependency frames back to the dependency source package', () => {
418
+ const input = [
419
+ `[string "ServerScriptService.gameproduct.node_modules.@quenty.cmdrservice.node_modules.@quenty.templateprovider.Shared.TemplateProvider"]:726: [TemplateProvider.CmdrTemplateProviderServer.CloneTemplate] - Cannot provide template "CmdrExecutionTemplate"`,
420
+ ' Stack Begin',
421
+ ` Script '[string "ServerScriptService.gameproduct.node_modules.@quenty.cmdrservice.node_modules.@quenty.templateprovider.Shared.TemplateProvider"]', Line 726 - function CloneTemplate`,
422
+ ` Script '[string "ServerScriptService.gameproduct.node_modules.@quenty.cmdrservice.Server.CmdrService"]', Line 144 - function RegisterCommand`,
423
+ ` Script '[string "ServerScriptService.gameproduct.node_modules.@quenty.gameconfig.Server.Cmdr.GameConfigCommandService"]', Line 48 - function _registerCommands`,
424
+ ` Script '[string "ServerScriptService.gameproduct.node_modules.@quenty.gameconfig.Server.Cmdr.GameConfigCommandService"]', Line 37 - function Start`,
425
+ ` Script '[string "ServerScriptService.gameproduct.node_modules.@quenty.avatareditorutils.node_modules.@quenty.observablecollection.node_modules.@quenty.blend.node_modules.@quenty.playerthumbnailutils.node_modules.@quenty.playermock.node_modules.@quenty.servic..."]', Line 217`,
426
+ ' Stack End',
427
+ ].join('\n');
428
+ const result = parseJestLuaOutput(input, {
429
+ packageName: '@quenty/gameproductservice',
430
+ repoRoot: REPO_ROOT,
431
+ workspace,
432
+ });
433
+ expect(result).toHaveLength(1);
434
+ expect(result[0].file).toBe('src/templateprovider/src/Shared/TemplateProvider.lua');
435
+ expect(result[0].line).toBe(726);
436
+ });
437
+ const studioBridgeHeader = [
438
+ '\x1b[0m\x1b[7m\x1b[1m\x1b[31m FAIL \x1b[39m\x1b[22m\x1b[27m\x1b[0m \x1b[2mstudiobridge/Shared/\x1b[22m\x1b[1mActionRouter.spec\x1b[22m ',
439
+ ' \x1b[1m● \x1b[22mTest suite failed to run',
440
+ '',
441
+ ];
442
+ const studioBridgeFrames = [
443
+ ' ServerScriptService.studiobridge.node_modules.@quenty.nevermore-test-runner.node_modules.@quentystudios.Jest._Index.jsdotlua_jest-runtime@3.10.0.jest-runtime:1263 function requireModule',
444
+ ' ServerScriptService.studiobridge.node_modules.@quenty.nevermore-test-runner.node_modules.@quentystudios.Jest._Index.jsdotlua_jest-circus@3.10.0.jest-circus.circus.legacy-code-todo-rewrite.jestAdapter:113',
445
+ ' ServerScriptService.studiobridge.node_modules.@quenty.nevermore-test-runner.node_modules.@quentystudios.Jest._Index.jsdotlua_promise@3.5.2.promise:172 function runExecutor',
446
+ '',
447
+ '\x1b[0m\x1b[7m\x1b[1m\x1b[31m FAIL \x1b[39m\x1b[22m\x1b[27m\x1b[0m \x1b[2mstudiobridge/Shared/\x1b[22m\x1b[1mBuiltInActions.spec\x1b[22m ',
448
+ ];
449
+ it('falls back to a chunk location inside the message', () => {
450
+ const input = [
451
+ ...studioBridgeHeader,
452
+ ` ServerScriptService.studiobridge.node_modules.@quenty.nevermore-test-runner.node_modules.@quentystudios.Jest._Index.jsdotlua_jest-runtime@3.10.0.jest-runtime:1263: [string "ServerScriptService.studiobridge.node_modules.@quenty.nevermore-test-runner.node_modules.@quenty.loader"]:214: [Loader] - "Jest" is not available. Please`,
453
+ '',
454
+ ...studioBridgeFrames,
455
+ ].join('\n');
456
+ const result = parseJestLuaOutput(input, {
457
+ packageName: '@quenty/studio-bridge',
458
+ repoRoot: REPO_ROOT,
459
+ workspace,
460
+ });
461
+ expect(result).toHaveLength(1);
462
+ expect(result[0].title).toBe('Test suite failed to run');
463
+ expect(result[0].file).toBe('src/loader/src/init.lua');
464
+ expect(result[0].line).toBe(214);
465
+ });
466
+ it('emits no file when only vendored frames are present', () => {
467
+ const input = [...studioBridgeHeader, ...studioBridgeFrames].join('\n');
468
+ const result = parseJestLuaOutput(input, {
469
+ packageName: '@quenty/studio-bridge',
470
+ repoRoot: REPO_ROOT,
471
+ workspace,
472
+ });
473
+ expect(result).toHaveLength(1);
474
+ expect(result[0].title).toBe('Test suite failed to run');
475
+ expect(result[0].file).toBeUndefined();
476
+ expect(result[0].line).toBeUndefined();
477
+ });
209
478
  });
210
479
  describe('with sourcemap resolver', () => {
211
480
  const repoRoot = '/repo';
@@ -240,6 +509,24 @@ describe('parseJestLuaOutput', () => {
240
509
  },
241
510
  ],
242
511
  },
512
+ {
513
+ name: 'binder',
514
+ className: 'Folder',
515
+ filePaths: [`${repoRoot}/src/binder/default.project.json`],
516
+ children: [
517
+ {
518
+ name: 'Shared',
519
+ className: 'Folder',
520
+ children: [
521
+ {
522
+ name: 'Binder',
523
+ className: 'ModuleScript',
524
+ filePaths: [`${repoRoot}/src/binder/src/Shared/Binder.lua`],
525
+ },
526
+ ],
527
+ },
528
+ ],
529
+ },
243
530
  ],
244
531
  };
245
532
  const resolver = SourcemapResolver.fromSourcemap(sourcemap, repoRoot);
@@ -253,44 +540,60 @@ describe('parseJestLuaOutput', () => {
253
540
  ' at ServerScriptService.mypkg.Shared.Foo.Foo.spec:10',
254
541
  ].join('\n');
255
542
  const result = parseJestLuaOutput(input, {
256
- packageName: 'mypkg',
543
+ packageName: '@quenty/mypkg',
257
544
  sourcemapResolver: resolver,
258
545
  });
259
546
  expect(result).toHaveLength(1);
260
547
  expect(result[0].file).toBe('src/mypkg/src/Shared/Foo.spec.lua');
261
548
  expect(result[0].line).toBe(10);
262
549
  });
263
- it('uses sourcemap resolver for runtime error paths', () => {
550
+ it('uses sourcemap resolver for chunk-wrapped runtime error paths', () => {
264
551
  const input = [
265
552
  'Error: attempt to index nil',
266
553
  'Stack Begin',
267
- "Script 'ServerScriptService.mypkg.Shared.Foo.Foo.spec', Line 5",
554
+ `Script '[string "ServerScriptService.mypkg.Shared.Foo.Foo.spec"]', Line 5`,
268
555
  'Stack End',
269
556
  ].join('\n');
270
557
  const result = parseJestLuaOutput(input, {
271
- packageName: 'mypkg',
558
+ packageName: '@quenty/mypkg',
272
559
  sourcemapResolver: resolver,
273
560
  });
274
561
  expect(result).toHaveLength(1);
275
562
  expect(result[0].file).toBe('src/mypkg/src/Shared/Foo.spec.lua');
276
563
  expect(result[0].line).toBe(5);
277
564
  });
278
- it('falls back to heuristic when sourcemap has no mapping', () => {
565
+ it('looks up dependency frames by their source package', () => {
566
+ const input = [
567
+ 'Error: attempt to index nil',
568
+ ' Stack Begin',
569
+ ` Script '[string "ServerScriptService.mypkg.node_modules.@quenty.binder.Shared.Binder"]', Line 752 - function _remove`,
570
+ ' Stack End',
571
+ ].join('\n');
572
+ const result = parseJestLuaOutput(input, {
573
+ packageName: '@quenty/mypkg',
574
+ sourcemapResolver: resolver,
575
+ });
576
+ expect(result).toHaveLength(1);
577
+ expect(result[0].file).toBe('src/binder/src/Shared/Binder.lua');
578
+ expect(result[0].line).toBe(752);
579
+ });
580
+ it('falls back to the repo layout when sourcemap has no mapping', () => {
279
581
  const input = [
280
582
  ' ● Suite > test one',
281
583
  '',
282
584
  ' Expected: 1',
283
585
  ' Received: 2',
284
586
  '',
285
- ' at ServerScriptService.unknown.Shared.Bar.spec:10',
587
+ ' at ServerScriptService.observablecollection.Shared.ObservableList.spec:10',
286
588
  ].join('\n');
287
589
  const result = parseJestLuaOutput(input, {
288
- packageName: 'unknown',
590
+ packageName: '@quenty/observablecollection',
289
591
  sourcemapResolver: resolver,
592
+ repoRoot: REPO_ROOT,
593
+ workspace,
290
594
  });
291
595
  expect(result).toHaveLength(1);
292
- // Falls back to heuristic
293
- expect(result[0].file).toBe('src/unknown/src/Shared/Bar.spec.lua');
596
+ expect(result[0].file).toBe('src/observablecollection/src/Shared/ObservableList.spec.lua');
294
597
  });
295
598
  });
296
599
  });
@@ -1 +1 @@
1
- {"version":3,"file":"jest-lua-parser.test.js","sourceRoot":"","sources":["../../../../src/utils/testing/parsers/jest-lua-parser.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jest-lua-parser.test.js","sourceRoot":"","sources":["../../../../src/utils/testing/parsers/jest-lua-parser.test.ts"],"names":[],"mappings":"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"}