Run tests in a native Node.js ESM environment (#13966)
This commit is contained in:
parent
578ab22fb7
commit
2d989a983d
@ -4,10 +4,22 @@ const path = require("path");
|
|||||||
|
|
||||||
const cjsGlobals = ["__dirname", "__filename", "require", "module", "exports"];
|
const cjsGlobals = ["__dirname", "__filename", "require", "module", "exports"];
|
||||||
|
|
||||||
|
const testFiles = [
|
||||||
|
"packages/*/test/**/*.js",
|
||||||
|
"codemods/*/test/**/*.js",
|
||||||
|
"eslint/*/test/**/*.js",
|
||||||
|
];
|
||||||
|
const sourceFiles = exts => [
|
||||||
|
`packages/*/src/**/*.{${exts}}`,
|
||||||
|
`codemods/*/src/**/*.{${exts}}`,
|
||||||
|
`eslint/*/src/**/*.{${exts}}`,
|
||||||
|
];
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
root: true,
|
root: true,
|
||||||
plugins: [
|
plugins: [
|
||||||
"import",
|
"import",
|
||||||
|
"node",
|
||||||
"jest",
|
"jest",
|
||||||
"prettier",
|
"prettier",
|
||||||
"@babel/development",
|
"@babel/development",
|
||||||
@ -36,11 +48,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
files: [
|
files: sourceFiles("js,ts,cjs,mjs"),
|
||||||
"packages/*/src/**/*.{js,ts,cjs}",
|
|
||||||
"codemods/*/src/**/*.{js,ts,cjs}",
|
|
||||||
"eslint/*/src/**/*.{js,ts,cjs}",
|
|
||||||
],
|
|
||||||
rules: {
|
rules: {
|
||||||
"@babel/development/no-undefined-identifier": "error",
|
"@babel/development/no-undefined-identifier": "error",
|
||||||
"@babel/development/no-deprecated-clone": "error",
|
"@babel/development/no-deprecated-clone": "error",
|
||||||
@ -51,9 +59,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
files: [
|
files: [
|
||||||
"packages/*/test/**/*.js",
|
...testFiles,
|
||||||
"codemods/*/test/**/*.js",
|
|
||||||
"eslint/*/test/**/*.js",
|
|
||||||
"packages/babel-helper-transform-fixture-test-runner/src/helpers.{ts,js}",
|
"packages/babel-helper-transform-fixture-test-runner/src/helpers.{ts,js}",
|
||||||
"test/**/*.js",
|
"test/**/*.js",
|
||||||
],
|
],
|
||||||
@ -68,20 +74,21 @@ module.exports = {
|
|||||||
"jest/no-test-callback": "off",
|
"jest/no-test-callback": "off",
|
||||||
"jest/valid-describe": "off",
|
"jest/valid-describe": "off",
|
||||||
"import/extensions": ["error", "always"],
|
"import/extensions": ["error", "always"],
|
||||||
|
"import/no-extraneous-dependencies": "off",
|
||||||
"no-restricted-imports": ["error", { patterns: ["**/src/**"] }],
|
"no-restricted-imports": ["error", { patterns: ["**/src/**"] }],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
files: [
|
files: testFiles,
|
||||||
"packages/*/src/**/*.{js,ts}",
|
rules: {
|
||||||
"codemods/*/src/**/*.{js,ts}",
|
"node/no-unsupported-features": [
|
||||||
"eslint/*/src/**/*.{js,ts}",
|
"error",
|
||||||
"packages/*/test/**/*.js",
|
{ version: "12.17.0", ignores: ["modules"] },
|
||||||
"codemods/*/test/**/*.js",
|
],
|
||||||
"eslint/*/test/**/*.js",
|
},
|
||||||
"packages/babel-helper-transform-fixture-test-runner/src/helpers.{ts,js}",
|
},
|
||||||
"test/**/*.js",
|
{
|
||||||
],
|
files: [...sourceFiles("js,ts,mjs"), ...testFiles, "test/**/*.js"],
|
||||||
excludedFiles: [
|
excludedFiles: [
|
||||||
// @babel/register is the require() hook, so it will always be CJS-based
|
// @babel/register is the require() hook, so it will always be CJS-based
|
||||||
"packages/babel-register/**/*.{js,ts}",
|
"packages/babel-register/**/*.{js,ts}",
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@ -52,7 +52,8 @@ package-lock.json
|
|||||||
/packages/babel-runtime-corejs3/core-js/**/*.js
|
/packages/babel-runtime-corejs3/core-js/**/*.js
|
||||||
/packages/babel-runtime-corejs3/core-js-stable/**/*.js
|
/packages/babel-runtime-corejs3/core-js-stable/**/*.js
|
||||||
|
|
||||||
/packages/babel-register/test/.babel
|
/packages/babel-register/test/.cache.babel
|
||||||
|
/packages/babel-register/test/.index.babel
|
||||||
/packages/babel-cli/test/tmp
|
/packages/babel-cli/test/tmp
|
||||||
/packages/babel-node/test/tmp
|
/packages/babel-node/test/tmp
|
||||||
/packages/*/lib
|
/packages/*/lib
|
||||||
|
|||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
eslint/babel-eslint-parser/test/package.json
Normal file
1
eslint/babel-eslint-parser/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
eslint/babel-eslint-plugin/test/rules/package.json
Normal file
1
eslint/babel-eslint-plugin/test/rules/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
eslint/babel-eslint-tests/test/fixtures/package.json
vendored
Normal file
1
eslint/babel-eslint-tests/test/fixtures/package.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "commonjs" }
|
||||||
@ -31,7 +31,7 @@ export default function verifyAndAssertMessages(
|
|||||||
"../../../babel-eslint-shared-fixtures/config/babel.config.js",
|
"../../../babel-eslint-shared-fixtures/config/babel.config.js",
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
...overrideConfig?.parserOptions,
|
...(overrideConfig && overrideConfig.parserOptions),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
1
eslint/babel-eslint-tests/test/package.json
Normal file
1
eslint/babel-eslint-tests/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -2,6 +2,8 @@ const supportsESM = parseInt(process.versions.node) >= 12;
|
|||||||
const isPublishBundle = process.env.IS_PUBLISH;
|
const isPublishBundle = process.env.IS_PUBLISH;
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
runner: supportsESM ? "./test/jest-light-runner" : "jest-runner",
|
||||||
|
|
||||||
collectCoverageFrom: [
|
collectCoverageFrom: [
|
||||||
"packages/*/src/**/*.{js,mjs,ts}",
|
"packages/*/src/**/*.{js,mjs,ts}",
|
||||||
"codemods/*/src/**/*.{js,mjs,ts}",
|
"codemods/*/src/**/*.{js,mjs,ts}",
|
||||||
@ -47,7 +49,6 @@ module.exports = {
|
|||||||
"/test/__data__/",
|
"/test/__data__/",
|
||||||
"<rootDir>/build/",
|
"<rootDir>/build/",
|
||||||
],
|
],
|
||||||
resolver: supportsESM ? "./test/jestExportsMapResolver.cjs" : null,
|
|
||||||
// We don't need module name mappers here as depedencies of workspace
|
// We don't need module name mappers here as depedencies of workspace
|
||||||
// package should be declared explicitly in the package.json
|
// package should be declared explicitly in the package.json
|
||||||
// Yarn will generate correct file links so that Jest can resolve correctly
|
// Yarn will generate correct file links so that Jest can resolve correctly
|
||||||
|
|||||||
@ -53,6 +53,7 @@
|
|||||||
"eslint-plugin-flowtype": "^8.0.3",
|
"eslint-plugin-flowtype": "^8.0.3",
|
||||||
"eslint-plugin-import": "^2.25.2",
|
"eslint-plugin-import": "^2.25.2",
|
||||||
"eslint-plugin-jest": "^25.2.2",
|
"eslint-plugin-jest": "^25.2.2",
|
||||||
|
"eslint-plugin-node": "^11.1.0",
|
||||||
"eslint-plugin-prettier": "^3.4.0",
|
"eslint-plugin-prettier": "^3.4.0",
|
||||||
"fancy-log": "^1.3.3",
|
"fancy-log": "^1.3.3",
|
||||||
"flow-bin": "^0.123.0",
|
"flow-bin": "^0.123.0",
|
||||||
@ -61,8 +62,8 @@
|
|||||||
"gulp-filter": "^7.0.0",
|
"gulp-filter": "^7.0.0",
|
||||||
"gulp-plumber": "^1.2.1",
|
"gulp-plumber": "^1.2.1",
|
||||||
"husky": "^7.0.4",
|
"husky": "^7.0.4",
|
||||||
"jest": "^27.2.0",
|
"jest": "^27.4.0",
|
||||||
"jest-worker": "^27.2.0",
|
"jest-worker": "^27.4.0",
|
||||||
"lint-staged": "^9.2.0",
|
"lint-staged": "^9.2.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"mergeiterator": "^1.2.5",
|
"mergeiterator": "^1.2.5",
|
||||||
@ -80,6 +81,7 @@
|
|||||||
"eslint/*",
|
"eslint/*",
|
||||||
"packages/*",
|
"packages/*",
|
||||||
"test/esm",
|
"test/esm",
|
||||||
|
"test/jest-light-runner",
|
||||||
"test/runtime-integration/*",
|
"test/runtime-integration/*",
|
||||||
"benchmark"
|
"benchmark"
|
||||||
],
|
],
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"args": ["./src/index.js"],
|
"args": ["./src/index.js"],
|
||||||
"env": {
|
"env": {
|
||||||
|
"BABEL_ENV": "test",
|
||||||
"BABEL_SHOW_CONFIG_FOR": "./src/index.js"
|
"BABEL_SHOW_CONFIG_FOR": "./src/index.js"
|
||||||
},
|
},
|
||||||
"os": ["darwin", "linux"]
|
"os": ["darwin", "linux"]
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"args": ["./src/index.js"],
|
"args": ["./src/index.js"],
|
||||||
"env": {
|
"env": {
|
||||||
|
"BABEL_ENV": "test",
|
||||||
"BABEL_SHOW_CONFIG_FOR": "./src/index.js"
|
"BABEL_SHOW_CONFIG_FOR": "./src/index.js"
|
||||||
},
|
},
|
||||||
"os": ["darwin", "linux"]
|
"os": ["darwin", "linux"]
|
||||||
|
|||||||
1
packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/package.json
vendored
Normal file
1
packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/package.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "commonjs" }
|
||||||
1
packages/babel-cli/test/fixtures/package.json
vendored
Normal file
1
packages/babel-cli/test/fixtures/package.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "commonjs" }
|
||||||
@ -45,13 +45,13 @@ const readDir = function (loc, filter) {
|
|||||||
|
|
||||||
const saveInFiles = function (files) {
|
const saveInFiles = function (files) {
|
||||||
// Place an empty .babelrc in each test so tests won't unexpectedly get to repo-level config.
|
// Place an empty .babelrc in each test so tests won't unexpectedly get to repo-level config.
|
||||||
if (!fs.existsSync(".babelrc")) {
|
if (!fs.existsSync(path.join(tmpLoc, ".babelrc"))) {
|
||||||
outputFileSync(".babelrc", "{}");
|
outputFileSync(path.join(tmpLoc, ".babelrc"), "{}");
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.keys(files).forEach(function (filename) {
|
Object.keys(files).forEach(function (filename) {
|
||||||
const content = files[filename];
|
const content = files[filename];
|
||||||
outputFileSync(filename, content);
|
outputFileSync(path.join(tmpLoc, filename), content);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ const assertTest = function (stdout, stderr, opts, cwd) {
|
|||||||
const expected = opts.outFiles[filename];
|
const expected = opts.outFiles[filename];
|
||||||
const actual = actualFiles[filename];
|
const actual = actualFiles[filename];
|
||||||
|
|
||||||
expect(actual).toBe(expected ?? "");
|
expect(actual).toBe(expected || "");
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
e.message += "\n at " + filename;
|
e.message += "\n at " + filename;
|
||||||
@ -152,7 +152,7 @@ const buildTest = function (binName, testName, opts) {
|
|||||||
args = args.concat(opts.args);
|
args = args.concat(opts.args);
|
||||||
const env = { ...process.env, ...opts.env };
|
const env = { ...process.env, ...opts.env };
|
||||||
|
|
||||||
const spawn = child.spawn(process.execPath, args, { env });
|
const spawn = child.spawn(process.execPath, args, { env, cwd: tmpLoc });
|
||||||
|
|
||||||
let stderr = "";
|
let stderr = "";
|
||||||
let stdout = "";
|
let stdout = "";
|
||||||
@ -190,15 +190,11 @@ const buildTest = function (binName, testName, opts) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
fs.readdirSync(fixtureLoc).forEach(function (binName) {
|
fs.readdirSync(fixtureLoc).forEach(function (binName) {
|
||||||
if (binName.startsWith(".")) return;
|
if (binName.startsWith(".") || binName === "package.json") return;
|
||||||
|
|
||||||
const suiteLoc = path.join(fixtureLoc, binName);
|
const suiteLoc = path.join(fixtureLoc, binName);
|
||||||
describe("bin/" + binName, function () {
|
describe("bin/" + binName, function () {
|
||||||
let cwd;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cwd = process.cwd();
|
|
||||||
|
|
||||||
if (fs.existsSync(tmpLoc)) {
|
if (fs.existsSync(tmpLoc)) {
|
||||||
for (const child of fs.readdirSync(tmpLoc)) {
|
for (const child of fs.readdirSync(tmpLoc)) {
|
||||||
rimraf.sync(path.join(tmpLoc, child));
|
rimraf.sync(path.join(tmpLoc, child));
|
||||||
@ -206,12 +202,6 @@ fs.readdirSync(fixtureLoc).forEach(function (binName) {
|
|||||||
} else {
|
} else {
|
||||||
fs.mkdirSync(tmpLoc);
|
fs.mkdirSync(tmpLoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
process.chdir(tmpLoc);
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
process.chdir(cwd);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
fs.readdirSync(suiteLoc).forEach(function (testName) {
|
fs.readdirSync(suiteLoc).forEach(function (testName) {
|
||||||
|
|||||||
1
packages/babel-cli/test/package.json
Normal file
1
packages/babel-cli/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
packages/babel-code-frame/test/package.json
Normal file
1
packages/babel-code-frame/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -138,13 +138,13 @@ describe("parser and generator options", function () {
|
|||||||
describe("api", function () {
|
describe("api", function () {
|
||||||
it("exposes the resolvePlugin method", function () {
|
it("exposes the resolvePlugin method", function () {
|
||||||
expect(() => babel.resolvePlugin("nonexistent-plugin")).toThrow(
|
expect(() => babel.resolvePlugin("nonexistent-plugin")).toThrow(
|
||||||
/Cannot resolve module 'babel-plugin-nonexistent-plugin'/,
|
/Cannot (?:find|resolve) module 'babel-plugin-nonexistent-plugin'/,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("exposes the resolvePreset method", function () {
|
it("exposes the resolvePreset method", function () {
|
||||||
expect(() => babel.resolvePreset("nonexistent-preset")).toThrow(
|
expect(() => babel.resolvePreset("nonexistent-preset")).toThrow(
|
||||||
/Cannot resolve module 'babel-preset-nonexistent-preset'/,
|
/Cannot (?:find|resolve) module 'babel-preset-nonexistent-preset'/,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import { isMJS, loadOptionsAsync, skipUnsupportedESM } from "./helpers/esm.js";
|
|||||||
// TODO: In Babel 8, we can directly uses fs.promises which is supported by
|
// TODO: In Babel 8, we can directly uses fs.promises which is supported by
|
||||||
// node 8+
|
// node 8+
|
||||||
const pfs =
|
const pfs =
|
||||||
fs.promises ??
|
fs.promises ||
|
||||||
new Proxy(fs, {
|
new Proxy(fs, {
|
||||||
get(target, name) {
|
get(target, name) {
|
||||||
if (name === "copyFile") {
|
if (name === "copyFile") {
|
||||||
|
|||||||
1
packages/babel-core/test/fixtures/package.json
vendored
Normal file
1
packages/babel-core/test/fixtures/package.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "commonjs" }
|
||||||
1
packages/babel-core/test/package.json
Normal file
1
packages/babel-core/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -355,8 +355,8 @@ describe("addon resolution", function () {
|
|||||||
// `require.resolve` is provided.
|
// `require.resolve` is provided.
|
||||||
// see https://github.com/babel/babel/pull/12439/files#r535996000
|
// see https://github.com/babel/babel/pull/12439/files#r535996000
|
||||||
process.versions.node.startsWith("8.")
|
process.versions.node.startsWith("8.")
|
||||||
? /Cannot resolve module 'babel-preset-foo'/
|
? /Cannot (?:find|resolve) module 'babel-preset-foo'/
|
||||||
: /Cannot resolve module 'babel-preset-foo'.*\n- If you want to resolve "foo", use "module:foo"/,
|
: /Cannot (?:find|resolve) module 'babel-preset-foo'.*\n- If you want to resolve "foo", use "module:foo"/s,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -371,8 +371,8 @@ describe("addon resolution", function () {
|
|||||||
});
|
});
|
||||||
}).toThrow(
|
}).toThrow(
|
||||||
process.versions.node.startsWith("8.")
|
process.versions.node.startsWith("8.")
|
||||||
? /Cannot resolve module 'babel-plugin-foo'/
|
? /Cannot (?:find|resolve) module 'babel-plugin-foo'/
|
||||||
: /Cannot resolve module 'babel-plugin-foo'.*\n- If you want to resolve "foo", use "module:foo"/,
|
: /Cannot (?:find|resolve) module 'babel-plugin-foo'.*\n- If you want to resolve "foo", use "module:foo"/s,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -387,8 +387,8 @@ describe("addon resolution", function () {
|
|||||||
});
|
});
|
||||||
}).toThrow(
|
}).toThrow(
|
||||||
process.versions.node.startsWith("8.")
|
process.versions.node.startsWith("8.")
|
||||||
? /Cannot resolve module 'babel-preset-foo'/
|
? /Cannot (?:find|resolve) module 'babel-preset-foo'/
|
||||||
: /Cannot resolve module 'babel-preset-foo'.*\n- Did you mean "@babel\/foo"\?/,
|
: /Cannot (?:find|resolve) module 'babel-preset-foo'.*\n- Did you mean "@babel\/foo"\?/s,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -403,8 +403,8 @@ describe("addon resolution", function () {
|
|||||||
});
|
});
|
||||||
}).toThrow(
|
}).toThrow(
|
||||||
process.versions.node.startsWith("8.")
|
process.versions.node.startsWith("8.")
|
||||||
? /Cannot resolve module 'babel-plugin-foo'/
|
? /Cannot (?:find|resolve) module 'babel-plugin-foo'/
|
||||||
: /Cannot resolve module 'babel-plugin-foo'.*\n- Did you mean "@babel\/foo"\?/,
|
: /Cannot (?:find|resolve) module 'babel-plugin-foo'.*\n- Did you mean "@babel\/foo"\?/s,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -419,8 +419,8 @@ describe("addon resolution", function () {
|
|||||||
});
|
});
|
||||||
}).toThrow(
|
}).toThrow(
|
||||||
process.versions.node.startsWith("8.")
|
process.versions.node.startsWith("8.")
|
||||||
? /Cannot resolve module 'babel-preset-testplugin'/
|
? /Cannot (?:find|resolve) module 'babel-preset-testplugin'/
|
||||||
: /Cannot resolve module 'babel-preset-testplugin'.*\n- Did you accidentally pass a plugin as a preset\?/,
|
: /Cannot (?:find|resolve) module 'babel-preset-testplugin'.*\n- Did you accidentally pass a plugin as a preset\?/s,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -435,8 +435,8 @@ describe("addon resolution", function () {
|
|||||||
});
|
});
|
||||||
}).toThrow(
|
}).toThrow(
|
||||||
process.versions.node.startsWith("8.")
|
process.versions.node.startsWith("8.")
|
||||||
? /Cannot resolve module 'babel-plugin-testpreset'/
|
? /Cannot (?:find|resolve) module 'babel-plugin-testpreset'/
|
||||||
: /Cannot resolve module 'babel-plugin-testpreset'.*\n- Did you accidentally pass a preset as a plugin\?/,
|
: /Cannot (?:find|resolve) module 'babel-plugin-testpreset'.*\n- Did you accidentally pass a preset as a plugin\?/s,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -449,7 +449,7 @@ describe("addon resolution", function () {
|
|||||||
babelrc: false,
|
babelrc: false,
|
||||||
presets: ["foo"],
|
presets: ["foo"],
|
||||||
});
|
});
|
||||||
}).toThrow(/Cannot resolve module 'babel-preset-foo'/);
|
}).toThrow(/Cannot (?:find|resolve) module 'babel-preset-foo'/);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should throw about missing plugins", function () {
|
it("should throw about missing plugins", function () {
|
||||||
@ -461,6 +461,6 @@ describe("addon resolution", function () {
|
|||||||
babelrc: false,
|
babelrc: false,
|
||||||
plugins: ["foo"],
|
plugins: ["foo"],
|
||||||
});
|
});
|
||||||
}).toThrow(/Cannot resolve module 'babel-plugin-foo'/);
|
}).toThrow(/Cannot (?:find|resolve) module 'babel-plugin-foo'/);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
1
packages/babel-generator/test/package.json
Normal file
1
packages/babel-generator/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
packages/babel-helper-annotate-as-pure/test/package.json
Normal file
1
packages/babel-helper-annotate-as-pure/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -1,3 +1,4 @@
|
|||||||
{
|
{
|
||||||
"browserslist": "chrome 4"
|
"browserslist": "chrome 4",
|
||||||
|
"type": "module"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -60,7 +60,11 @@ function shouldIgnore(name, ignore?: Array<string>) {
|
|||||||
const base = path.basename(name, ext);
|
const base = path.basename(name, ext);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
name[0] === "." || ext === ".md" || base === "LICENSE" || base === "options"
|
name[0] === "." ||
|
||||||
|
ext === ".md" ||
|
||||||
|
base === "LICENSE" ||
|
||||||
|
base === "options" ||
|
||||||
|
name === "package.json"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
1
packages/babel-helper-module-imports/test/package.json
Normal file
1
packages/babel-helper-module-imports/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
11
packages/babel-helper-plugin-test-runner/esm.mjs
Normal file
11
packages/babel-helper-plugin-test-runner/esm.mjs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import _cjs from "./lib/index.js";
|
||||||
|
|
||||||
|
const adapter = _cjs.default.bind();
|
||||||
|
|
||||||
|
// For backward compatibility with the CJS-only version, this makes
|
||||||
|
// import _x from "@babel/helper-plugin-test-runner"
|
||||||
|
// const x = _x.default
|
||||||
|
// still work.
|
||||||
|
adapter.default = _cjs.default;
|
||||||
|
|
||||||
|
export default adapter;
|
||||||
@ -13,6 +13,20 @@
|
|||||||
"access": "public"
|
"access": "public"
|
||||||
},
|
},
|
||||||
"main": "./lib/index.js",
|
"main": "./lib/index.js",
|
||||||
|
"exports": {
|
||||||
|
".": [
|
||||||
|
{
|
||||||
|
"import": "./esm.mjs",
|
||||||
|
"default": "./lib/index.js"
|
||||||
|
},
|
||||||
|
"./lib/index.js"
|
||||||
|
],
|
||||||
|
"./lib": "./lib/index.js",
|
||||||
|
"./lib/index": "./lib/index.js",
|
||||||
|
"./lib/index.js": "./lib/index.js",
|
||||||
|
"./package": "./package.json",
|
||||||
|
"./package.json": "./package.json"
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-transform-fixture-test-runner": "workspace:^"
|
"@babel/helper-transform-fixture-test-runner": "workspace:^"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
packages/babel-helper-validator-option/test/package.json
Normal file
1
packages/babel-helper-validator-option/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
packages/babel-helpers/test/fixtures/package.json
vendored
Normal file
1
packages/babel-helpers/test/fixtures/package.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "commonjs" }
|
||||||
1
packages/babel-helpers/test/package.json
Normal file
1
packages/babel-helpers/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
packages/babel-highlight/test/package.json
Normal file
1
packages/babel-highlight/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -34,12 +34,9 @@ const readDir = function (loc, filter) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const saveInFiles = function (files) {
|
const saveInFiles = function (files) {
|
||||||
// Place an empty .babelrc in each test so tests won't unexpectedly get to repo-level config.
|
|
||||||
outputFileSync(".babelrc", "{}");
|
|
||||||
|
|
||||||
Object.keys(files).forEach(function (filename) {
|
Object.keys(files).forEach(function (filename) {
|
||||||
const content = files[filename];
|
const content = files[filename];
|
||||||
outputFileSync(filename, content);
|
outputFileSync(path.join(tmpLoc, filename), content);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -76,14 +73,17 @@ const assertTest = function (stdout, stderr, ipcMessage, opts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (opts.outFiles) {
|
if (opts.outFiles) {
|
||||||
const actualFiles = readDir(path.join(tmpLoc));
|
// For some reaons, on GH actions always appears a file called "null" ¯\_(ツ)_/¯
|
||||||
|
const actualFiles = readDir(tmpLoc, name => name !== "null");
|
||||||
|
|
||||||
Object.keys(actualFiles).forEach(function (filename) {
|
Object.keys(actualFiles).forEach(function (filename) {
|
||||||
if (!Object.prototype.hasOwnProperty.call(opts.inFiles, filename)) {
|
if (!Object.prototype.hasOwnProperty.call(opts.inFiles, filename)) {
|
||||||
const expected = opts.outFiles[filename];
|
const expected = opts.outFiles[filename];
|
||||||
const actual = actualFiles[filename];
|
const actual = actualFiles[filename];
|
||||||
|
|
||||||
expect(expected).not.toBeUndefined();
|
if (expected == null) {
|
||||||
|
throw new Error("Unexpected generated file: " + filename);
|
||||||
|
}
|
||||||
|
|
||||||
if (expected) {
|
if (expected) {
|
||||||
expect(actual).toBe(expected);
|
expect(actual).toBe(expected);
|
||||||
@ -100,11 +100,9 @@ const assertTest = function (stdout, stderr, ipcMessage, opts) {
|
|||||||
const buildTest = function (testName, opts) {
|
const buildTest = function (testName, opts) {
|
||||||
return function (callback) {
|
return function (callback) {
|
||||||
saveInFiles(opts.inFiles);
|
saveInFiles(opts.inFiles);
|
||||||
let args = [binLoc];
|
const args = [binLoc].concat(opts.args);
|
||||||
args.push("--config-file", "../config.json");
|
|
||||||
args = args.concat(opts.args);
|
|
||||||
|
|
||||||
const spawnOpts = {};
|
const spawnOpts = { cwd: tmpLoc, env: { BABEL_DISABLE_CACHE: true } };
|
||||||
if (opts.ipc) {
|
if (opts.ipc) {
|
||||||
spawnOpts.stdio = ["pipe", "pipe", "pipe", "ipc"];
|
spawnOpts.stdio = ["pipe", "pipe", "pipe", "ipc"];
|
||||||
}
|
}
|
||||||
@ -136,9 +134,6 @@ const buildTest = function (testName, opts) {
|
|||||||
assertTest(stdout, stderr, ipcMessage, opts);
|
assertTest(stdout, stderr, ipcMessage, opts);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
err = e;
|
err = e;
|
||||||
}
|
|
||||||
|
|
||||||
if (err) {
|
|
||||||
err.message =
|
err.message =
|
||||||
args.map(arg => `"${arg}"`).join(" ") + ": " + err.message;
|
args.map(arg => `"${arg}"`).join(" ") + ": " + err.message;
|
||||||
}
|
}
|
||||||
@ -154,24 +149,11 @@ const buildTest = function (testName, opts) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
describe("bin/babel-node", function () {
|
describe("bin/babel-node", function () {
|
||||||
let cwd;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cwd = process.cwd();
|
|
||||||
|
|
||||||
if (fs.existsSync(tmpLoc)) {
|
if (fs.existsSync(tmpLoc)) {
|
||||||
for (const child of fs.readdirSync(tmpLoc)) {
|
rimraf.sync(tmpLoc);
|
||||||
rimraf.sync(path.join(tmpLoc, child));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
fs.mkdirSync(tmpLoc);
|
|
||||||
}
|
}
|
||||||
|
fs.mkdirSync(tmpLoc);
|
||||||
process.chdir(tmpLoc);
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
process.chdir(cwd);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
fs.readdirSync(fixtureLoc).forEach(function (testName) {
|
fs.readdirSync(fixtureLoc).forEach(function (testName) {
|
||||||
@ -202,6 +184,12 @@ describe("bin/babel-node", function () {
|
|||||||
if (fs.existsSync(babelrcLoc)) {
|
if (fs.existsSync(babelrcLoc)) {
|
||||||
// copy .babelrc file to tmp directory
|
// copy .babelrc file to tmp directory
|
||||||
opts.inFiles[".babelrc"] = helper.readFile(babelrcLoc);
|
opts.inFiles[".babelrc"] = helper.readFile(babelrcLoc);
|
||||||
|
} else {
|
||||||
|
// Place an empty .babelrc in each test so tests won't unexpectedly get to repo-level config.
|
||||||
|
opts.inFiles[".babelrc"] = "{}";
|
||||||
|
}
|
||||||
|
if (!opts.inFiles["package.json"]) {
|
||||||
|
opts.inFiles["package.json"] = `{ "type": "commonjs" }`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line jest/valid-title
|
// eslint-disable-next-line jest/valid-title
|
||||||
|
|||||||
6
packages/babel-node/test/fixtures/cli/require/.babelrc
vendored
Normal file
6
packages/babel-node/test/fixtures/cli/require/.babelrc
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"presets": [
|
||||||
|
"@babel/preset-env",
|
||||||
|
["@babel/preset-react", { "runtime": "classic" }]
|
||||||
|
]
|
||||||
|
}
|
||||||
1
packages/babel-node/test/package.json
Normal file
1
packages/babel-node/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -6,8 +6,7 @@ import { fileURLToPath } from "url";
|
|||||||
runFixtureTestsWithoutExactASTMatch(
|
runFixtureTestsWithoutExactASTMatch(
|
||||||
path.join(path.dirname(fileURLToPath(import.meta.url)), "fixtures"),
|
path.join(path.dirname(fileURLToPath(import.meta.url)), "fixtures"),
|
||||||
(input, options = {}) => {
|
(input, options = {}) => {
|
||||||
options.plugins = options.plugins || [];
|
const plugins = options.plugins || [];
|
||||||
options.plugins.push("estree");
|
return parse(input, { ...options, plugins: plugins.concat("estree") });
|
||||||
return parse(input, options);
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@ -218,7 +218,7 @@ function runTest(test, parseFunction, compareErrorsOnly = false) {
|
|||||||
return save(test, ast);
|
return save(test, ast);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ast.errors?.length) {
|
if (ast.errors && ast.errors.length) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Expected non-recoverable error message: ${
|
`Expected non-recoverable error message: ${
|
||||||
opts.throws
|
opts.throws
|
||||||
|
|||||||
1
packages/babel-parser/test/package.json
Normal file
1
packages/babel-parser/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "commonjs" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
packages/babel-plugin-external-helpers/test/package.json
Normal file
1
packages/babel-plugin-external-helpers/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
packages/babel-plugin-proposal-object-rest-spread/test/fixtures/package.json
vendored
Normal file
1
packages/babel-plugin-proposal-object-rest-spread/test/fixtures/package.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "commonjs" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
packages/babel-plugin-transform-for-of/test/package.json
Normal file
1
packages/babel-plugin-transform-for-of/test/package.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
1
packages/babel-plugin-transform-modules-commonjs/test/fixtures/package.json
vendored
Normal file
1
packages/babel-plugin-transform-modules-commonjs/test/fixtures/package.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ "type": "commonjs" }
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{ "type": "module" }
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user