]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/shared/traverser.js
3 const assert
= require("chai").assert
;
4 const Traverser
= require("../../../lib/shared/traverser");
6 describe("Traverser", () => {
7 it("traverses all keys except 'parent', 'leadingComments', and 'trailingComments'", () => {
8 const traverser
= new Traverser();
13 type
: "ExpressionStatement",
30 fakeAst
.body
[0].parent
= fakeAst
;
32 const enteredNodes
= [];
33 const exitedNodes
= [];
35 traverser
.traverse(fakeAst
, {
36 enter
: node
=> enteredNodes
.push(node
),
37 leave
: node
=> exitedNodes
.push(node
)
40 assert
.deepStrictEqual(enteredNodes
, [fakeAst
, fakeAst
.body
[0], fakeAst
.body
[1], fakeAst
.body
[1].foo
]);
41 assert
.deepStrictEqual(exitedNodes
, [fakeAst
.body
[0], fakeAst
.body
[1].foo
, fakeAst
.body
[1], fakeAst
]);
44 it("traverses AST as using 'visitorKeys' option if given", () => {
45 const traverser
= new Traverser();
50 type
: "ClassDeclaration",
59 experimentalDecorators
: [
69 fakeAst
.body
[0].parent
= fakeAst
;
73 // with 'visitorKeys' option to traverse decorators.
74 traverser
.traverse(fakeAst
, {
75 enter
: node
=> visited
.push(node
.type
),
76 visitorKeys
: Object
.assign({}, Traverser
.DEFAULT_VISITOR_KEYS
, {
77 ClassDeclaration
: Traverser
.DEFAULT_VISITOR_KEYS
.ClassDeclaration
.concat(["experimentalDecorators"])
80 assert
.deepStrictEqual(visited
, ["Program", "ClassDeclaration", "Identifier", "ClassBody", "Decorator"]);