From c142bbc429f1e169e4420efd2ff7d9cadc796b12 Mon Sep 17 00:00:00 2001 From: Mauro Bringolf Date: Wed, 31 May 2017 21:33:25 +0200 Subject: [PATCH] Remove duplicated getStatementParent and refactor requires to imports in tests (#5746) * Additional testcase and require->import refactorings * Removed duplicated getStatementParent function. Refactored all babel-traverse tests to use ESmodules --- packages/babel-traverse/src/path/ancestry.js | 15 ++++++++++++--- packages/babel-traverse/src/path/family.js | 18 ------------------ packages/babel-traverse/test/ancestry.js | 20 +++++++++++++++++--- packages/babel-traverse/test/evaluation.js | 6 +++--- packages/babel-traverse/test/family.js | 6 +++--- packages/babel-traverse/test/scope.js | 6 +++--- packages/babel-traverse/test/traverse.js | 8 ++++---- 7 files changed, 42 insertions(+), 37 deletions(-) diff --git a/packages/babel-traverse/src/path/ancestry.js b/packages/babel-traverse/src/path/ancestry.js index d82ecc3f7e..beddb0a3fa 100644 --- a/packages/babel-traverse/src/path/ancestry.js +++ b/packages/babel-traverse/src/path/ancestry.js @@ -42,11 +42,20 @@ export function getFunctionParent() : ?NodePath { export function getStatementParent() : NodePath { let path = this; + do { - if (Array.isArray(path.container)) { - return path; + if (!path.parentPath || (Array.isArray(path.container) && path.isStatement())) { + break; + } else { + path = path.parentPath; } - } while (path = path.parentPath); + } while (path); + + if (path && (path.isProgram() || path.isFile())) { + throw new Error("File/Program node, we can't possibly find a statement parent to this"); + } + + return path; } /** diff --git a/packages/babel-traverse/src/path/family.js b/packages/babel-traverse/src/path/family.js index f466cb1bd6..de7e12a0c3 100644 --- a/packages/babel-traverse/src/path/family.js +++ b/packages/babel-traverse/src/path/family.js @@ -4,24 +4,6 @@ import type TraversalContext from "../index"; import NodePath from "./index"; import * as t from "babel-types"; -export function getStatementParent(): ?NodePath { - let path = this; - - do { - if (!path.parentPath || (Array.isArray(path.container) && path.isStatement())) { - break; - } else { - path = path.parentPath; - } - } while (path); - - if (path && (path.isProgram() || path.isFile())) { - throw new Error("File/Program node, we can't possibly find a statement parent to this"); - } - - return path; -} - export function getOpposite() : ?NodePath { if (this.key === "left") { return this.getSibling("right"); diff --git a/packages/babel-traverse/test/ancestry.js b/packages/babel-traverse/test/ancestry.js index d3587a71d0..fda574e782 100644 --- a/packages/babel-traverse/test/ancestry.js +++ b/packages/babel-traverse/test/ancestry.js @@ -1,6 +1,7 @@ -const traverse = require("../lib").default; -const assert = require("assert"); -const parse = require("babylon").parse; +import traverse from "../lib"; +import assert from "assert"; +import { parse } from "babylon"; +import { expect } from "chai"; describe("path/ancestry", function () { describe("isAncestor", function () { @@ -62,4 +63,17 @@ describe("path/ancestry", function () { assert(!numberPath.isDescendant(stringPath)); }); }); + + describe("getStatementParent", function () { + const ast = parse("var a = 1;"); + it("should throw", function () { + expect(function () { + traverse(ast, { + Program(path) { + path.getStatementParent(); + }, + }); + }).to.throw(/File\/Program node/); + }); + }); }); diff --git a/packages/babel-traverse/test/evaluation.js b/packages/babel-traverse/test/evaluation.js index 1269f7c013..bbeb4f7461 100644 --- a/packages/babel-traverse/test/evaluation.js +++ b/packages/babel-traverse/test/evaluation.js @@ -1,6 +1,6 @@ -const traverse = require("../lib").default; -const assert = require("assert"); -const parse = require("babylon").parse; +import traverse from "../lib"; +import assert from "assert"; +import { parse } from "babylon"; function getPath(code) { const ast = parse(code); diff --git a/packages/babel-traverse/test/family.js b/packages/babel-traverse/test/family.js index f261d4b87e..ffaa90e385 100644 --- a/packages/babel-traverse/test/family.js +++ b/packages/babel-traverse/test/family.js @@ -1,6 +1,6 @@ -const traverse = require("../lib").default; -const assert = require("assert"); -const parse = require("babylon").parse; +import traverse from "../lib"; +import assert from "assert"; +import { parse } from "babylon"; describe("path/family", function () { describe("getBindingIdentifiers", function () { diff --git a/packages/babel-traverse/test/scope.js b/packages/babel-traverse/test/scope.js index 75a01c7cdd..d715d74ebc 100644 --- a/packages/babel-traverse/test/scope.js +++ b/packages/babel-traverse/test/scope.js @@ -1,6 +1,6 @@ -const traverse = require("../lib").default; -const assert = require("assert"); -const parse = require("babylon").parse; +import traverse from "../lib"; +import assert from "assert"; +import { parse } from "babylon"; function getPath(code) { const ast = parse(code); diff --git a/packages/babel-traverse/test/traverse.js b/packages/babel-traverse/test/traverse.js index 59863b5f31..bc6c0c50f0 100644 --- a/packages/babel-traverse/test/traverse.js +++ b/packages/babel-traverse/test/traverse.js @@ -1,7 +1,7 @@ -const cloneDeep = require("lodash/cloneDeep"); -const traverse = require("../lib").default; -const assert = require("assert"); -const parse = require("babylon").parse; +import cloneDeep from "lodash/cloneDeep"; +import traverse from "../lib"; +import assert from "assert"; +import { parse } from "babylon"; describe("traverse", function () { const code = `