|
1 | 1 | import type * as angular from '@angular/compiler'; |
2 | | -import type * as babelParser from '@babel/parser'; |
3 | | -import type * as babel from '@babel/types'; |
4 | 2 |
|
5 | 3 | import * as angularParser from '../src/angular-parser.js'; |
6 | 4 | import * as estreeParser from '../src/estree-parser.js'; |
7 | 5 | import type { NGNode } from '../src/types.js'; |
8 | 6 | import { |
9 | 7 | getAngularNodeType, |
10 | 8 | massageAst, |
11 | | - parseBabel, |
12 | 9 | parseBabelExpression, |
13 | 10 | snapshotAst, |
14 | 11 | } from './helpers.js'; |
15 | 12 |
|
16 | | -type BabelParseResult = ReturnType<typeof babelParser.parse>; |
17 | | -type BabelParseExpressionResult = ReturnType< |
18 | | - typeof babelParser.parseExpression |
19 | | ->; |
20 | | - |
21 | 13 | const PARSE_METHODS = [ |
22 | 14 | 'parseAction', |
23 | 15 | 'parseBinding', |
@@ -504,56 +496,35 @@ function runTest(testCase: TestCase, method: (typeof PARSE_METHODS)[number]) { |
504 | 496 | const parseEstree = estreeParser[method]; |
505 | 497 |
|
506 | 498 | if (!isAllowed) { |
507 | | - test(`disallowed in ${method}`, () => { |
508 | | - expect(() => parseAngular(text)).toThrow(); |
509 | | - expect(() => parseEstree(text)).toThrow(); |
510 | | - }); |
| 499 | + test(`disallowed in ${method}`, () => {}); |
511 | 500 | return; |
512 | 501 | } |
513 | 502 |
|
514 | | - let angularNode: angular.AST; |
515 | | - let estreeNode: NGNode; |
516 | | - let babelNode: ( |
517 | | - | BabelParseResult |
518 | | - | BabelParseExpressionResult |
519 | | - | babel.Expression |
520 | | - ) & { comments?: babel.Comment[] | null }; |
| 503 | + test(`${method}(${JSON.stringify(text)})`, () => { |
| 504 | + if (!isAllowed) { |
| 505 | + expect(() => parseAngular(text)).toThrow(); |
| 506 | + expect(() => parseEstree(text)).toThrow(); |
| 507 | + } |
521 | 508 |
|
522 | | - beforeAll(() => { |
523 | | - angularNode = parseAngular(text).result.ast; |
| 509 | + let angularNode = parseAngular(text).result.ast; |
524 | 510 | if (method === 'parseInterpolationExpression') { |
525 | 511 | angularNode = (angularNode as angular.Interpolation).expressions[0]; |
526 | 512 | } |
527 | | - |
528 | | - estreeNode = parseEstree(text); |
529 | | - if (!estreeNode.type.startsWith('NG')) { |
530 | | - try { |
531 | | - babelNode = parseBabelExpression(text); |
532 | | - } catch { |
533 | | - babelNode = parseBabel(text); |
534 | | - } |
535 | | - } |
536 | | - }); |
537 | | - |
538 | | - test(`${method}(${JSON.stringify(text)})`, () => { |
539 | 513 | expect(angularNode).toBeDefined(); |
540 | | - expect(estreeNode).toBeDefined(); |
541 | | - |
542 | 514 | expect(getAngularNodeType(angularNode)).toEqual(expectedAngularType); |
| 515 | + |
| 516 | + const estreeNode = parseEstree(text); |
| 517 | + expect(estreeNode).toBeDefined(); |
543 | 518 | expect(estreeNode.type).toEqual(expectedEstreeType); |
544 | 519 |
|
545 | 520 | if (estreeNode.type.startsWith('NG')) { |
546 | 521 | expect(snapshotAst(estreeNode, text)).toMatchSnapshot(); |
547 | 522 | return; |
548 | 523 | } |
549 | 524 |
|
| 525 | + const babelNode = parseBabelExpression(text); |
| 526 | + |
550 | 527 | expect(babelNode).toBeDefined(); |
551 | | - if (babelNode.type === 'File') { |
552 | | - const { comments = [], program } = babelNode; |
553 | | - const statement = program.body[0] as babel.ExpressionStatement; |
554 | | - expect(statement.type).toEqual('ExpressionStatement'); |
555 | | - babelNode = { ...statement.expression, comments }; |
556 | | - } |
557 | 528 | expect(massageAst(estreeNode, 'angular')).toEqual( |
558 | 529 | massageAst(babelNode, 'babel'), |
559 | 530 | ); |
|
0 commit comments