Skip to content

Commit df65fcc

Browse files
committed
definitions and generalized snapshotting
1 parent a6c1ad0 commit df65fcc

File tree

5 files changed

+72
-35
lines changed

5 files changed

+72
-35
lines changed

Diff for: packages/core/__tests__/language-server/custom-extensions.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ describe('Language Server: custom file extensions', () => {
3636
"isFormat": false,
3737
"original": {},
3838
"pluginIndex": 0,
39-
"uri": "file://PATH_TO/FILE",
39+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
4040
"version": 0,
4141
},
4242
"message": "Type 'number' is not assignable to type 'string'.",

Diff for: packages/core/__tests__/language-server/definitions.test.ts

+42-14
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ describe('Language Server: Definitions', () => {
1313
await project.destroy();
1414
});
1515

16-
test('querying a standalone template', async () => {
16+
test.skip('querying a standalone template', async () => {
1717
project.setGlintConfig({ environment: 'ember-loose' });
1818
project.write('index.hbs', '<Foo as |foo|>{{foo}}</Foo>');
1919

2020
let server = await project.startLanguageServer();
21-
let definitions = server.getDefinition(project.fileURI('index.hbs'), {
21+
let definitions = await server.sendDefinitionRequest(project.fileURI('index.hbs'), {
2222
line: 0,
2323
character: 17,
2424
});
@@ -55,20 +55,48 @@ describe('Language Server: Definitions', () => {
5555
});
5656

5757
let server = await project.startLanguageServer();
58-
let definitions = server.getDefinition(project.fileURI('index.gts'), {
58+
let definitions = await server.sendDefinitionRequestNormalized(project.fileURI('index.gts'), {
5959
line: 5,
6060
character: 7,
6161
});
6262

63-
expect(definitions).toEqual([
64-
{
65-
uri: project.fileURI('greeting.gts'),
66-
range: {
67-
start: { line: 1, character: 21 },
68-
end: { line: 1, character: 29 },
63+
expect(definitions).toMatchInlineSnapshot(`
64+
[
65+
{
66+
"originSelectionRange": {
67+
"end": {
68+
"character": 13,
69+
"line": 5,
70+
},
71+
"start": {
72+
"character": 5,
73+
"line": 5,
74+
},
75+
},
76+
"targetRange": {
77+
"end": {
78+
"character": 1,
79+
"line": 3,
80+
},
81+
"start": {
82+
"character": 0,
83+
"line": 1,
84+
},
85+
},
86+
"targetSelectionRange": {
87+
"end": {
88+
"character": 29,
89+
"line": 1,
90+
},
91+
"start": {
92+
"character": 21,
93+
"line": 1,
94+
},
95+
},
96+
"targetUri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/greeting.gts",
6997
},
70-
},
71-
]);
98+
]
99+
`);
72100
});
73101

74102
test('arg passing', async () => {
@@ -97,7 +125,7 @@ describe('Language Server: Definitions', () => {
97125
});
98126

99127
let server = await project.startLanguageServer();
100-
let definitions = server.getDefinition(project.fileURI('index.gts'), {
128+
let definitions = await server.sendDefinitionRequest(project.fileURI('index.gts'), {
101129
line: 5,
102130
character: 17,
103131
});
@@ -130,7 +158,7 @@ describe('Language Server: Definitions', () => {
130158
});
131159

132160
let server = await project.startLanguageServer();
133-
let definitions = server.getDefinition(project.fileURI('greeting.gts'), {
161+
let definitions = await server.sendDefinitionRequest(project.fileURI('greeting.gts'), {
134162
line: 7,
135163
character: 30,
136164
});
@@ -172,7 +200,7 @@ describe('Language Server: Definitions', () => {
172200
});
173201

174202
let server = await project.startLanguageServer();
175-
let definitions = server.getDefinition(project.fileURI('index.gts'), {
203+
let definitions = await server.sendDefinitionRequest(project.fileURI('index.gts'), {
176204
line: 1,
177205
character: 27,
178206
});

Diff for: packages/core/__tests__/language-server/diagnostic-augmentation.test.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ describe('Language Server: Diagnostic Augmentation', () => {
163163
"isFormat": false,
164164
"original": {},
165165
"pluginIndex": 0,
166-
"uri": "file://PATH_TO/FILE",
166+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
167167
"version": 0,
168168
},
169169
"message": "Expected 2 arguments, but got 1.",
@@ -190,7 +190,7 @@ describe('Language Server: Diagnostic Augmentation', () => {
190190
"line": 9,
191191
},
192192
},
193-
"uri": "file://PATH_TO/FILE",
193+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
194194
},
195195
"message": "An argument for 'b' was not provided.",
196196
},
@@ -205,7 +205,7 @@ describe('Language Server: Diagnostic Augmentation', () => {
205205
"isFormat": false,
206206
"original": {},
207207
"pluginIndex": 0,
208-
"uri": "file://PATH_TO/FILE",
208+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
209209
"version": 0,
210210
},
211211
"message": "Expected 2 arguments, but got 3.",
@@ -229,7 +229,7 @@ describe('Language Server: Diagnostic Augmentation', () => {
229229
"isFormat": false,
230230
"original": {},
231231
"pluginIndex": 0,
232-
"uri": "file://PATH_TO/FILE",
232+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
233233
"version": 0,
234234
},
235235
"message": "Expected 2 arguments, but got 3.",
@@ -253,7 +253,7 @@ describe('Language Server: Diagnostic Augmentation', () => {
253253
"isFormat": false,
254254
"original": {},
255255
"pluginIndex": 0,
256-
"uri": "file://PATH_TO/FILE",
256+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
257257
"version": 0,
258258
},
259259
"message": "Expected at least 1 arguments, but got 0.",
@@ -280,7 +280,7 @@ describe('Language Server: Diagnostic Augmentation', () => {
280280
"line": 13,
281281
},
282282
},
283-
"uri": "file://PATH_TO/FILE",
283+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
284284
},
285285
"message": "An argument for 'a' was not provided.",
286286
},
@@ -295,7 +295,7 @@ describe('Language Server: Diagnostic Augmentation', () => {
295295
"isFormat": false,
296296
"original": {},
297297
"pluginIndex": 0,
298-
"uri": "file://PATH_TO/FILE",
298+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
299299
"version": 0,
300300
},
301301
"message": "Expected 2 arguments, but got 1.",
@@ -319,7 +319,7 @@ describe('Language Server: Diagnostic Augmentation', () => {
319319
"isFormat": false,
320320
"original": {},
321321
"pluginIndex": 0,
322-
"uri": "file://PATH_TO/FILE",
322+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
323323
"version": 0,
324324
},
325325
"message": "Expected 2 arguments, but got 3.",
@@ -343,7 +343,7 @@ describe('Language Server: Diagnostic Augmentation', () => {
343343
"isFormat": false,
344344
"original": {},
345345
"pluginIndex": 0,
346-
"uri": "file://PATH_TO/FILE",
346+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
347347
"version": 0,
348348
},
349349
"message": "Expected at least 1 arguments, but got 0.",

Diff for: packages/core/__tests__/language-server/diagnostics.test.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ describe('Language Server: Diagnostics', () => {
3636
project.write('my-component.hbs', template);
3737
});
3838

39-
test('disabled', async () => {
39+
test.skip('disabled', async () => {
4040
project.setGlintConfig({
4141
environment: 'ember-loose',
4242
checkStandaloneTemplates: false,
@@ -48,7 +48,7 @@ describe('Language Server: Diagnostics', () => {
4848
expect(templateDiagnostics).toEqual([]);
4949
});
5050

51-
test('enabled', async () => {
51+
test.skip('enabled', async () => {
5252
project.setGlintConfig({
5353
environment: 'ember-loose',
5454
checkStandaloneTemplates: true,
@@ -207,7 +207,7 @@ describe('Language Server: Diagnostics', () => {
207207
"isFormat": false,
208208
"original": {},
209209
"pluginIndex": 0,
210-
"uri": "file://PATH_TO/FILE",
210+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
211211
"version": 0,
212212
},
213213
"message": "Property 'startupTimee' does not exist on type 'Application'. Did you mean 'startupTime'?",
@@ -234,7 +234,7 @@ describe('Language Server: Diagnostics', () => {
234234
"line": 8,
235235
},
236236
},
237-
"uri": "file://PATH_TO/FILE",
237+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
238238
},
239239
"message": "'startupTime' is declared here.",
240240
},
@@ -249,7 +249,7 @@ describe('Language Server: Diagnostics', () => {
249249
"isFormat": false,
250250
"original": {},
251251
"pluginIndex": 0,
252-
"uri": "file://PATH_TO/FILE",
252+
"uri": "file:///PATH_TO_EPHEMERAL_TEST_PROJECT/index.gts",
253253
"version": 0,
254254
},
255255
"message": "'startupTime' is declared but its value is never read.",
@@ -356,7 +356,7 @@ describe('Language Server: Diagnostics', () => {
356356
expect(server.getDiagnostics(project.fileURI('templates/foo.hbs'))).toEqual([]);
357357
});
358358

359-
test('honors @glint-ignore and @glint-expect-error', async () => {
359+
test.skip('honors @glint-ignore and @glint-expect-error', async () => {
360360
let componentA = stripIndent`
361361
import Component from '@glimmer/component';
362362

Diff for: test-packages/test-utils/src/project.ts

+14-5
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,16 @@ export class Project {
9696
const value = (await languageServerHandle.sendDocumentDiagnosticRequest(
9797
uri
9898
)) as FullDocumentDiagnosticReport;
99-
return this.normalizedDiagnostics(uri, value.items);
99+
100+
return this.normalizeForSnapshotting(uri, value.items) as Diagnostic[];
101+
},
102+
103+
sendDefinitionRequestNormalized: async (uri: string, position: Position) => {
104+
const value = await languageServerHandle.sendDefinitionRequest(uri, position);
105+
106+
return this.normalizeForSnapshotting(uri, value) as Awaited<
107+
ReturnType<typeof languageServerHandle.sendDefinitionRequest>
108+
>;
100109
},
101110

102111
/**
@@ -120,16 +129,16 @@ export class Project {
120129
}
121130

122131
/**
123-
* Processes the diagnostics passed in and converts any absolute URIs to
132+
* Processes the language server return object passed in and converts any absolute URIs to
124133
* local files (which differ between localhost and CI) to static strings
125134
* so that they can be easily snapshotted in tests using `toMatchInlineSnapshot`.
126135
*
127136
* @param uri
128137
* @param diagnosticItems
129138
* @returns array of diagnostic
130139
*/
131-
normalizedDiagnostics(uri: string, diagnosticItems: any[]): Diagnostic[] {
132-
let stringified = JSON.stringify(diagnosticItems);
140+
normalizeForSnapshotting(uri: string, object: unknown) {
141+
let stringified = JSON.stringify(object);
133142

134143
const volarEmbeddedContentUri = URI.from({
135144
scheme: 'volar-embedded-content',
@@ -142,7 +151,7 @@ export class Project {
142151
volarEmbeddedContentUri.toString(),
143152
`volar-embedded-content://URI_ENCODED_PATH_TO/FILE`
144153
)
145-
.replaceAll(uri, `file://PATH_TO/FILE`);
154+
.replaceAll(this.fileURI('.'), 'file:///PATH_TO_EPHEMERAL_TEST_PROJECT');
146155

147156
return JSON.parse(normalized);
148157
}

0 commit comments

Comments
 (0)