Skip to content

Commit f2af20c

Browse files
committed
fix: fix the ts-estree tests
1 parent 3f5a6cd commit f2af20c

File tree

2 files changed

+44
-41
lines changed

2 files changed

+44
-41
lines changed

Diff for: packages/typescript-estree/src/parser.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,9 @@ export function parseAndGenerateServices<
392392
* Convert the TypeScript AST to an ESTree-compatible one, and optionally preserve
393393
* mappings between converted and original AST nodes
394394
*/
395-
const { estree, astMaps } = convert(ast, extra, true);
395+
const preserveNodeMaps =
396+
typeof extra.preserveNodeMaps === 'boolean' ? extra.preserveNodeMaps : true;
397+
const { estree, astMaps } = convert(ast, extra, preserveNodeMaps);
396398
/**
397399
* Even if TypeScript parsed the source code ok, and we had no problems converting the AST,
398400
* there may be other syntactic or semantic issues in the code that we can optionally report on.

Diff for: packages/typescript-estree/tests/lib/parse.ts

+41-40
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ describe('parse()', () => {
8888
tokens: expect.any(Array),
8989
tsconfigRootDir: expect.any(String),
9090
useJSXTextNode: false,
91-
preserveNodeMaps: false,
91+
preserveNodeMaps: true,
9292
},
9393
false,
9494
);
@@ -159,72 +159,73 @@ describe('parse()', () => {
159159
);
160160
});
161161

162-
it('should not preserve node maps by default for parseAndGenerateServices(), unless `project` is set', () => {
162+
it('should preserve node maps by default for parseAndGenerateServices()', () => {
163163
const noOptionSet = parser.parseAndGenerateServices(code, baseConfig);
164164

165-
expect(noOptionSet.services.esTreeNodeToTSNodeMap).toBeUndefined();
166-
expect(noOptionSet.services.tsNodeToESTreeNodeMap).toBeUndefined();
167-
168-
const withProjectNoOptionSet = parser.parseAndGenerateServices(code, {
169-
...baseConfig,
170-
project: './tsconfig.json',
171-
});
172-
173-
expect(withProjectNoOptionSet.services.esTreeNodeToTSNodeMap).toEqual(
174-
expect.any(WeakMap),
175-
);
176-
expect(withProjectNoOptionSet.services.tsNodeToESTreeNodeMap).toEqual(
177-
expect.any(WeakMap),
178-
);
179-
});
180-
181-
it('should preserve node maps for parseAndGenerateServices() when option is `true`, regardless of `project` config', () => {
182-
const optionSetToTrue = parser.parseAndGenerateServices(code, {
183-
...baseConfig,
184-
preserveNodeMaps: true,
185-
});
186-
187-
expect(optionSetToTrue.services.esTreeNodeToTSNodeMap).toEqual(
165+
expect(noOptionSet.services.esTreeNodeToTSNodeMap).toEqual(
188166
expect.any(WeakMap),
189167
);
190-
expect(optionSetToTrue.services.tsNodeToESTreeNodeMap).toEqual(
168+
expect(noOptionSet.services.tsNodeToESTreeNodeMap).toEqual(
191169
expect.any(WeakMap),
192170
);
193171

194-
const withProjectOptionSetToTrue = parser.parseAndGenerateServices(code, {
172+
const withProjectNoOptionSet = parser.parseAndGenerateServices(code, {
195173
...baseConfig,
196-
preserveNodeMaps: true,
197174
project: './tsconfig.json',
198175
});
199176

200-
expect(withProjectOptionSetToTrue.services.esTreeNodeToTSNodeMap).toEqual(
177+
expect(withProjectNoOptionSet.services.esTreeNodeToTSNodeMap).toEqual(
201178
expect.any(WeakMap),
202179
);
203-
expect(withProjectOptionSetToTrue.services.tsNodeToESTreeNodeMap).toEqual(
180+
expect(withProjectNoOptionSet.services.tsNodeToESTreeNodeMap).toEqual(
204181
expect.any(WeakMap),
205182
);
206183
});
207184

208-
it('should not preserve node maps for parseAndGenerateServices() when option is `false`, regardless of `project` config', () => {
185+
function checkNodeMaps(setting: boolean): void {
209186
const optionSetToFalse = parser.parseAndGenerateServices(code, {
210187
...baseConfig,
211-
preserveNodeMaps: false,
188+
preserveNodeMaps: setting,
212189
});
213190

214-
expect(optionSetToFalse.services.esTreeNodeToTSNodeMap).toBeUndefined();
215-
expect(optionSetToFalse.services.tsNodeToESTreeNodeMap).toBeUndefined();
191+
expect(
192+
optionSetToFalse.services.esTreeNodeToTSNodeMap.has(
193+
optionSetToFalse.ast.body[0],
194+
),
195+
).toBe(setting);
196+
expect(
197+
optionSetToFalse.services.tsNodeToESTreeNodeMap.has(
198+
optionSetToFalse.services.program.getSourceFile('estree.ts'),
199+
),
200+
).toBe(setting);
216201

217202
const withProjectOptionSetToFalse = parser.parseAndGenerateServices(
218203
code,
219-
{ ...baseConfig, preserveNodeMaps: false, project: './tsconfig.json' },
204+
{
205+
...baseConfig,
206+
preserveNodeMaps: setting,
207+
project: './tsconfig.json',
208+
},
220209
);
221210

222211
expect(
223-
withProjectOptionSetToFalse.services.esTreeNodeToTSNodeMap,
224-
).toBeUndefined();
212+
withProjectOptionSetToFalse.services.esTreeNodeToTSNodeMap.has(
213+
withProjectOptionSetToFalse.ast.body[0],
214+
),
215+
).toBe(setting);
225216
expect(
226-
withProjectOptionSetToFalse.services.tsNodeToESTreeNodeMap,
227-
).toBeUndefined();
228-
});
217+
withProjectOptionSetToFalse.services.tsNodeToESTreeNodeMap.has(
218+
withProjectOptionSetToFalse.services.program.getSourceFile(
219+
'estree.ts',
220+
),
221+
),
222+
).toBe(setting);
223+
}
224+
225+
it('should preserve node maps for parseAndGenerateServices() when option is `true`, regardless of `project` config', () =>
226+
checkNodeMaps(true));
227+
228+
it('should not preserve node maps for parseAndGenerateServices() when option is `false`, regardless of `project` config', () =>
229+
checkNodeMaps(false));
229230
});
230231
});

0 commit comments

Comments
 (0)