From a33ad2731c5702c55ac8b3baaf181677e091fb72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Mon, 18 Jul 2022 16:28:23 +0200 Subject: [PATCH] Convert `@babel/helpers` tests to ESM (#14753) * Convert `@babel/helpers` tests to ESM * Run some tests on older versions * Fix * Update jest.config.js --- jest.config.js | 8 ------- .../get-with-falsy-receiver/options.json | 2 +- .../{plugin.js => plugin.cjs} | 0 .../get-without-receiver/options.json | 2 +- .../{plugin.js => plugin.cjs} | 0 .../fixtures/dependencies/basic/plugin.js | 8 +++---- .../test/fixtures/dependencies/deep/plugin.js | 10 ++++---- .../fixtures/dependencies/missing/plugin.js | 6 ++--- .../fixtures/dependencies/multiple/plugin.js | 10 ++++---- .../test/fixtures/dependencies/options.json | 4 ++++ .../rename-binding-equal/plugin.js | 8 +++---- .../dependencies/rename-deep-global/plugin.js | 8 +++---- .../dependencies/reuse-dependency/plugin.js | 8 +++---- .../variable-same-name-dependency/plugin.js | 8 +++---- .../babel-helpers/test/fixtures/package.json | 1 - .../fixtures/regression/9496/options.json | 1 + .../test/fixtures/regression/9496/plugin.js | 6 ++--- .../test/helpers/define-helper.cjs | 23 ------------------ .../test/helpers/define-helper.js | 24 +++++++++++++++++++ 19 files changed, 67 insertions(+), 70 deletions(-) rename packages/babel-helpers/test/fixtures/behavior/get-with-falsy-receiver/{plugin.js => plugin.cjs} (100%) rename packages/babel-helpers/test/fixtures/behavior/get-without-receiver/{plugin.js => plugin.cjs} (100%) create mode 100644 packages/babel-helpers/test/fixtures/dependencies/options.json delete mode 100644 packages/babel-helpers/test/fixtures/package.json delete mode 100644 packages/babel-helpers/test/helpers/define-helper.cjs create mode 100644 packages/babel-helpers/test/helpers/define-helper.js diff --git a/jest.config.js b/jest.config.js index 687ecb1dc112..5782261dd3ea 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,4 +1,3 @@ -const fs = require("fs"); const semver = require("semver"); const nodeVersion = process.versions.node; const supportsESMAndJestLightRunner = semver.satisfies( @@ -9,12 +8,6 @@ const supportsESMAndJestLightRunner = semver.satisfies( ); const isPublishBundle = process.env.IS_PUBLISH; -let LIB_USE_ESM = false; -try { - const type = fs.readFileSync(`${__dirname}/.module-type`, "utf-8").trim(); - LIB_USE_ESM = type === "module"; -} catch (_) {} - module.exports = { runner: supportsESMAndJestLightRunner ? "jest-light-runner" : "jest-runner", @@ -43,7 +36,6 @@ module.exports = { // Some tests require internal files of bundled packages, which are not available // in production builds. They are marked using the .skip-bundled.js extension. ...(isPublishBundle ? ["\\.skip-bundled\\.js$"] : []), - ...(LIB_USE_ESM ? ["/babel-helpers/"] : []), // Ignore @babel/standalone test in coverage testing because it is not built ...(process.env.TEST_TYPE === "cov" ? ["/packages/babel-standalone/"] diff --git a/packages/babel-helpers/test/fixtures/behavior/get-with-falsy-receiver/options.json b/packages/babel-helpers/test/fixtures/behavior/get-with-falsy-receiver/options.json index 14af0e5feac8..b8a610b03556 100644 --- a/packages/babel-helpers/test/fixtures/behavior/get-with-falsy-receiver/options.json +++ b/packages/babel-helpers/test/fixtures/behavior/get-with-falsy-receiver/options.json @@ -1,3 +1,3 @@ { - "plugins": ["./plugin"] + "plugins": ["./plugin.cjs"] } diff --git a/packages/babel-helpers/test/fixtures/behavior/get-with-falsy-receiver/plugin.js b/packages/babel-helpers/test/fixtures/behavior/get-with-falsy-receiver/plugin.cjs similarity index 100% rename from packages/babel-helpers/test/fixtures/behavior/get-with-falsy-receiver/plugin.js rename to packages/babel-helpers/test/fixtures/behavior/get-with-falsy-receiver/plugin.cjs diff --git a/packages/babel-helpers/test/fixtures/behavior/get-without-receiver/options.json b/packages/babel-helpers/test/fixtures/behavior/get-without-receiver/options.json index 14af0e5feac8..b8a610b03556 100644 --- a/packages/babel-helpers/test/fixtures/behavior/get-without-receiver/options.json +++ b/packages/babel-helpers/test/fixtures/behavior/get-without-receiver/options.json @@ -1,3 +1,3 @@ { - "plugins": ["./plugin"] + "plugins": ["./plugin.cjs"] } diff --git a/packages/babel-helpers/test/fixtures/behavior/get-without-receiver/plugin.js b/packages/babel-helpers/test/fixtures/behavior/get-without-receiver/plugin.cjs similarity index 100% rename from packages/babel-helpers/test/fixtures/behavior/get-without-receiver/plugin.js rename to packages/babel-helpers/test/fixtures/behavior/get-without-receiver/plugin.cjs diff --git a/packages/babel-helpers/test/fixtures/dependencies/basic/plugin.js b/packages/babel-helpers/test/fixtures/dependencies/basic/plugin.js index 38a74880bfbe..b1aa86c1c244 100644 --- a/packages/babel-helpers/test/fixtures/dependencies/basic/plugin.js +++ b/packages/babel-helpers/test/fixtures/dependencies/basic/plugin.js @@ -1,10 +1,10 @@ -const defineHelper = require("../../../helpers/define-helper.cjs"); +import defineHelper from "../../../helpers/define-helper.js"; -const dependency = defineHelper(__dirname, "dependency", ` +const dependency = defineHelper(import.meta.url, "dependency", ` export default function fn() {} `); -const main = defineHelper(__dirname, "main", ` +const main = defineHelper(import.meta.url, "main", ` import dep from "${dependency}"; export default function helper() { @@ -12,7 +12,7 @@ const main = defineHelper(__dirname, "main", ` } `); -module.exports = function() { +export default function() { return { visitor: { Identifier(path) { diff --git a/packages/babel-helpers/test/fixtures/dependencies/deep/plugin.js b/packages/babel-helpers/test/fixtures/dependencies/deep/plugin.js index 33a5629fb5df..581b84ec8a61 100644 --- a/packages/babel-helpers/test/fixtures/dependencies/deep/plugin.js +++ b/packages/babel-helpers/test/fixtures/dependencies/deep/plugin.js @@ -1,15 +1,15 @@ -const defineHelper = require("../../../helpers/define-helper.cjs"); +import defineHelper from "../../../helpers/define-helper.js"; -const dependencyDeep = defineHelper(__dirname, "dependencyDeep", ` +const dependencyDeep = defineHelper(import.meta.url, "dependencyDeep", ` export default function fn() {} `) -const dependency = defineHelper(__dirname, "dependency", ` +const dependency = defineHelper(import.meta.url, "dependency", ` import f from "${dependencyDeep}"; export default function fn() { return f; } `); -const main = defineHelper(__dirname, "main", ` +const main = defineHelper(import.meta.url, "main", ` import dep from "${dependency}"; export default function helper() { @@ -17,7 +17,7 @@ const main = defineHelper(__dirname, "main", ` } `); -module.exports = function() { +export default function() { return { visitor: { Identifier(path) { diff --git a/packages/babel-helpers/test/fixtures/dependencies/missing/plugin.js b/packages/babel-helpers/test/fixtures/dependencies/missing/plugin.js index 14d33a376c9b..a4b68904bfef 100644 --- a/packages/babel-helpers/test/fixtures/dependencies/missing/plugin.js +++ b/packages/babel-helpers/test/fixtures/dependencies/missing/plugin.js @@ -1,6 +1,6 @@ -const defineHelper = require("../../../helpers/define-helper.cjs"); +import defineHelper from "../../../helpers/define-helper.js"; -const main = defineHelper(__dirname, "main", ` +const main = defineHelper(import.meta.url, "main", ` import dep from "(!!!)%-..a,4892 missing"; export default function helper() { @@ -8,7 +8,7 @@ const main = defineHelper(__dirname, "main", ` } `); -module.exports = function() { +export default function() { return { visitor: { Identifier(path) { diff --git a/packages/babel-helpers/test/fixtures/dependencies/multiple/plugin.js b/packages/babel-helpers/test/fixtures/dependencies/multiple/plugin.js index 6d8f0dabba3b..134cd0952455 100644 --- a/packages/babel-helpers/test/fixtures/dependencies/multiple/plugin.js +++ b/packages/babel-helpers/test/fixtures/dependencies/multiple/plugin.js @@ -1,14 +1,14 @@ -const defineHelper = require("../../../helpers/define-helper.cjs"); +import defineHelper from "../../../helpers/define-helper.js"; -const dependency1 = defineHelper(__dirname, "dependency1", ` +const dependency1 = defineHelper(import.meta.url, "dependency1", ` export default function fn() { 0; } `); -const dependency2 = defineHelper(__dirname, "dependency2", ` +const dependency2 = defineHelper(import.meta.url, "dependency2", ` export default function fn() { 1; } `); -const main = defineHelper(__dirname, "main", ` +const main = defineHelper(import.meta.url, "main", ` import dep1 from "${dependency1}"; import dep2 from "${dependency2}"; @@ -17,7 +17,7 @@ const main = defineHelper(__dirname, "main", ` } `); -module.exports = function() { +export default function() { return { visitor: { Identifier(path) { diff --git a/packages/babel-helpers/test/fixtures/dependencies/options.json b/packages/babel-helpers/test/fixtures/dependencies/options.json new file mode 100644 index 000000000000..786c2fed1398 --- /dev/null +++ b/packages/babel-helpers/test/fixtures/dependencies/options.json @@ -0,0 +1,4 @@ +{ + "minNodeVersion": "12.22.0", + "externalHelpers": false +} diff --git a/packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/plugin.js b/packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/plugin.js index 48c8808d41d3..09a0e850fa98 100644 --- a/packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/plugin.js +++ b/packages/babel-helpers/test/fixtures/dependencies/rename-binding-equal/plugin.js @@ -1,11 +1,11 @@ -const defineHelper = require("../../../helpers/define-helper.cjs"); +import defineHelper from "../../../helpers/define-helper.js"; -const dependency = defineHelper(__dirname, "dependency", ` +const dependency = defineHelper(import.meta.url, "dependency", ` let foo = "dependency"; export default function fn() { return foo } `); -const main = defineHelper(__dirname, "main", ` +const main = defineHelper(import.meta.url, "main", ` import dep from "${dependency}"; let foo = "main"; @@ -15,7 +15,7 @@ const main = defineHelper(__dirname, "main", ` } `); -module.exports = function() { +export default function() { return { visitor: { Identifier(path) { diff --git a/packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/plugin.js b/packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/plugin.js index 1f4c30142662..b73225ae0b67 100644 --- a/packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/plugin.js +++ b/packages/babel-helpers/test/fixtures/dependencies/rename-deep-global/plugin.js @@ -1,12 +1,12 @@ -const defineHelper = require("../../../helpers/define-helper.cjs"); +import defineHelper from "../../../helpers/define-helper.js"; -const dependency = defineHelper(__dirname, "dependency", ` +const dependency = defineHelper(import.meta.url, "dependency", ` export default function fn() { return Promise; } `); -const main = defineHelper(__dirname, "main", ` +const main = defineHelper(import.meta.url, "main", ` import dep from "${dependency}"; export default function helper() { @@ -14,7 +14,7 @@ const main = defineHelper(__dirname, "main", ` } `); -module.exports = function() { +export default function() { return { visitor: { Identifier(path) { diff --git a/packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/plugin.js b/packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/plugin.js index 8dd43a6c5c1e..0eb871942093 100644 --- a/packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/plugin.js +++ b/packages/babel-helpers/test/fixtures/dependencies/reuse-dependency/plugin.js @@ -1,10 +1,10 @@ -const defineHelper = require("../../../helpers/define-helper.cjs"); +import defineHelper from "../../../helpers/define-helper.js"; -const dependency = defineHelper(__dirname, "dependency", ` +const dependency = defineHelper(import.meta.url, "dependency", ` export default function fn() { 0; } `); -const main = defineHelper(__dirname, "main", ` +const main = defineHelper(import.meta.url, "main", ` import dep from "${dependency}"; export default function helper() { @@ -12,7 +12,7 @@ const main = defineHelper(__dirname, "main", ` } `); -module.exports = function() { +export default function() { return { visitor: { Identifier(path) { diff --git a/packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/plugin.js b/packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/plugin.js index bdf1562ce51a..c74c00fc19d7 100644 --- a/packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/plugin.js +++ b/packages/babel-helpers/test/fixtures/dependencies/variable-same-name-dependency/plugin.js @@ -1,10 +1,10 @@ -const defineHelper = require("../../../helpers/define-helper.cjs"); +import defineHelper from "../../../helpers/define-helper.js"; -const dependency = defineHelper(__dirname, "dependency", ` +const dependency = defineHelper(import.meta.url, "dependency", ` export default function fn() {} `); -const main = defineHelper(__dirname, "main", ` +const main = defineHelper(import.meta.url, "main", ` import dep from "${dependency}"; export default function helper() { @@ -15,7 +15,7 @@ const main = defineHelper(__dirname, "main", ` } `); -module.exports = function() { +export default function() { return { visitor: { Identifier(path) { diff --git a/packages/babel-helpers/test/fixtures/package.json b/packages/babel-helpers/test/fixtures/package.json deleted file mode 100644 index a3c15a7a6312..000000000000 --- a/packages/babel-helpers/test/fixtures/package.json +++ /dev/null @@ -1 +0,0 @@ -{ "type": "commonjs" } diff --git a/packages/babel-helpers/test/fixtures/regression/9496/options.json b/packages/babel-helpers/test/fixtures/regression/9496/options.json index 14af0e5feac8..484633d64278 100644 --- a/packages/babel-helpers/test/fixtures/regression/9496/options.json +++ b/packages/babel-helpers/test/fixtures/regression/9496/options.json @@ -1,3 +1,4 @@ { + "minNodeVersion": "12.22.0", "plugins": ["./plugin"] } diff --git a/packages/babel-helpers/test/fixtures/regression/9496/plugin.js b/packages/babel-helpers/test/fixtures/regression/9496/plugin.js index 6ca1b152857f..97d42c1683c0 100644 --- a/packages/babel-helpers/test/fixtures/regression/9496/plugin.js +++ b/packages/babel-helpers/test/fixtures/regression/9496/plugin.js @@ -1,10 +1,10 @@ -const defineHelper = require("../../../helpers/define-helper.cjs"); +import defineHelper from "../../../helpers/define-helper.js"; -const main = defineHelper(__dirname, "main", ` +const main = defineHelper(import.meta.url, "main", ` export default function helper() {} `); -module.exports = function() { +export default function() { return { visitor: { Identifier(path) { diff --git a/packages/babel-helpers/test/helpers/define-helper.cjs b/packages/babel-helpers/test/helpers/define-helper.cjs deleted file mode 100644 index 4b70746f835d..000000000000 --- a/packages/babel-helpers/test/helpers/define-helper.cjs +++ /dev/null @@ -1,23 +0,0 @@ -const path = require("path"); -// eslint-disable-next-line import/no-extraneous-dependencies -const template = require("@babel/template").default; -const helpers = require("../../lib/helpers.js").default; - -function getHelperId(dir, name) { - const testName = path.basename(dir); - return `_$_${testName}_${name}`; -} - -module.exports = function defineHelper(dir, name, code) { - const id = getHelperId(dir, name); - if (id in helpers) { - throw new Error(`The ${id} helper is already defined.`); - } - Object.defineProperty(helpers, id, { - value: { - minVersion: "7.0.0-beta.0", - ast: template.program(code), - }, - }); - return id; -}; diff --git a/packages/babel-helpers/test/helpers/define-helper.js b/packages/babel-helpers/test/helpers/define-helper.js new file mode 100644 index 000000000000..6491afc180ce --- /dev/null +++ b/packages/babel-helpers/test/helpers/define-helper.js @@ -0,0 +1,24 @@ +import path from "path"; +import _template from "@babel/template"; +import _helpers from "../../lib/helpers.js"; +const template = _template.default || _template; +const helpers = _helpers.default || _helpers; + +function getHelperId(baseURL, name) { + const testName = path.basename(new URL(".", baseURL).pathname); + return `_$_${testName}_${name}`; +} + +export default function defineHelper(baseURL, name, code) { + const id = getHelperId(baseURL, name); + if (id in helpers) { + throw new Error(`The ${id} helper is already defined.`); + } + Object.defineProperty(helpers, id, { + value: { + minVersion: "7.0.0-beta.0", + ast: template.program(code), + }, + }); + return id; +}