diff --git a/packages/babel-core/test/errors-stacks.js b/packages/babel-core/test/errors-stacks.js index 9face3ebb355..ac0b41d7c408 100644 --- a/packages/babel-core/test/errors-stacks.js +++ b/packages/babel-core/test/errors-stacks.js @@ -9,19 +9,25 @@ function expectError(run) { run(); } catch (e) { let { stack } = e; - stack = replaceAll(stack, import.meta.url, "").replace( - /(?:\n\s*at[^\n]+?[^\n]+)+/g, - "\n ... frames from this test file ...", + // Remove absolute URLs + stack = replaceAll(stack, process.cwd(), ""); + stack = replaceAll(stack, "file://", ""); + // Remove jest-related stack frames. + // The `at async Promise.all` frame comes from inside jest-light-runner and is only + // visible when using --run-in-band, comes from inside jest but doesn't have an + // associated file path. + stack = stack.replace( + /(?:\n\s*at [^\n]+?node_modules\/(?:@?jest|piscina)[^\n]+|\n\s*at async Promise.all[^\n]+)+/g, + "\n at ... internal jest frames ...", ); - // Remove jest-related stack frames + // Remove node internal frames, since they change by version stack = stack.replace( - /(?:\n\s*at[^\n]+?node_modules\/(?:jest|piscina)[^\n]+)+/g, - "\n ... internal jest frames ...", + /(?:\n\s*at ((?:async )?[\w.]+)? ?\((?:node:)?internal\/[^\n]+)+/g, + "\n at $1 (... internal node frames ...)", ); - stack = replaceAll(stack, process.cwd(), ""); // Replace line/column numbers, since they are affected by how // the code is compiled. - stack = stack.replace(/:\d+:\d+\)$/gm, ":_:_)"); + stack = stack.replace(/\d*:\d+:\d+(\)?)$/gm, ":_:_$1"); return expect(stack); } throw new Error("It should have thrown an error."); @@ -40,8 +46,10 @@ describe("@babel/core errors", function () { "Error: Error inside config! at myConfig (/packages/babel-core/test/fixtures/errors/error-config-function/babel.config.js:_:_) at Module.parseSync (/packages/babel-core/lib/parse.js:_:_) - ... frames from this test file ... - ... internal jest frames ..." + at /packages/babel-core/test/errors-stacks.js?:_:_ + at expectError (/packages/babel-core/test/errors-stacks.js?:_:_) + at /packages/babel-core/test/errors-stacks.js?:_:_ + at ... internal jest frames ..." `); }); @@ -56,8 +64,10 @@ describe("@babel/core errors", function () { at g (/packages/babel-core/test/fixtures/errors/error-config-function-more-frames/babel.config.js:_:_) at myConfig (/packages/babel-core/test/fixtures/errors/error-config-function-more-frames/babel.config.js:_:_) at Module.parseSync (/packages/babel-core/lib/parse.js:_:_) - ... frames from this test file ... - ... internal jest frames ..." + at /packages/babel-core/test/errors-stacks.js?:_:_ + at expectError (/packages/babel-core/test/errors-stacks.js?:_:_) + at /packages/babel-core/test/errors-stacks.js?:_:_ + at ... internal jest frames ..." `); }); @@ -69,14 +79,10 @@ describe("@babel/core errors", function () { }).toMatchInlineSnapshot(` "Error: Error inside config! at Object. (/packages/babel-core/test/fixtures/errors/error-config-file/babel.config.js:_:_) - at Module._compile (node:internal/modules/cjs/loader:_:_) - at Module._extensions..js (node:internal/modules/cjs/loader:_:_) - at Module.load (node:internal/modules/cjs/loader:_:_) - at Module._load (node:internal/modules/cjs/loader:_:_) - at Module.require (node:internal/modules/cjs/loader:_:_) - at require (node:internal/modules/cjs/helpers:_:_) + at require (... internal node frames ...) at Module.parseSync (/packages/babel-core/lib/parse.js:_:_) - ... frames from this test file ..." + at /packages/babel-core/test/errors-stacks.js?:_:_ + at expectError (/packages/babel-core/test/errors-stacks.js?:_:_)" `); }); @@ -90,12 +96,7 @@ describe("@babel/core errors", function () { at f (/packages/babel-core/test/fixtures/errors/error-config-file-more-frames/babel.config.js:_:_) at g (/packages/babel-core/test/fixtures/errors/error-config-file-more-frames/babel.config.js:_:_) at Object. (/packages/babel-core/test/fixtures/errors/error-config-file-more-frames/babel.config.js:_:_) - at Module._compile (node:internal/modules/cjs/loader:_:_) - at Module._extensions..js (node:internal/modules/cjs/loader:_:_) - at Module.load (node:internal/modules/cjs/loader:_:_) - at Module._load (node:internal/modules/cjs/loader:_:_) - at Module.require (node:internal/modules/cjs/loader:_:_) - at require (node:internal/modules/cjs/helpers:_:_) + at require (... internal node frames ...) at Module.parseSync (/packages/babel-core/lib/parse.js:_:_)" `); }); @@ -113,15 +114,12 @@ describe("@babel/core errors", function () { at f (/packages/babel-core/test/fixtures/errors/error-config-file-more-frames/babel.config.js:_:_) at g (/packages/babel-core/test/fixtures/errors/error-config-file-more-frames/babel.config.js:_:_) at Object. (/packages/babel-core/test/fixtures/errors/error-config-file-more-frames/babel.config.js:_:_) - at Module._compile (node:internal/modules/cjs/loader:_:_) - at Module._extensions..js (node:internal/modules/cjs/loader:_:_) - at Module.load (node:internal/modules/cjs/loader:_:_) - at Module._load (node:internal/modules/cjs/loader:_:_) - at Module.require (node:internal/modules/cjs/loader:_:_) - at require (node:internal/modules/cjs/helpers:_:_) + at require (... internal node frames ...) at Module.parseSync (/packages/babel-core/lib/parse.js:_:_) - ... frames from this test file ... - ... internal jest frames ..." + at /packages/babel-core/test/errors-stacks.js?:_:_ + at expectError (/packages/babel-core/test/errors-stacks.js?:_:_) + at /packages/babel-core/test/errors-stacks.js?:_:_ + at ... internal jest frames ..." `); } finally { Error.stackTraceLimit -= INC; @@ -137,8 +135,10 @@ describe("@babel/core errors", function () { "Error: Error while parsing config - JSON5: invalid character '}' at 3:1 at /packages/babel-core/test/fixtures/errors/invalid-json/babel.config.json at Module.parseSync (/packages/babel-core/lib/parse.js:_:_) - ... frames from this test file ... - ... internal jest frames ..." + at /packages/babel-core/test/errors-stacks.js?:_:_ + at expectError (/packages/babel-core/test/errors-stacks.js?:_:_) + at /packages/babel-core/test/errors-stacks.js?:_:_ + at ... internal jest frames ..." `); }); @@ -151,8 +151,10 @@ describe("@babel/core errors", function () { "Error: Configuration contains string/RegExp pattern, but no filename was passed to Babel at /packages/babel-core/test/fixtures/errors/use-exclude/babel.config.js at Module.parseSync (/packages/babel-core/lib/parse.js:_:_) - ... frames from this test file ... - ... internal jest frames ..." + at /packages/babel-core/test/errors-stacks.js?:_:_ + at expectError (/packages/babel-core/test/errors-stacks.js?:_:_) + at /packages/babel-core/test/errors-stacks.js?:_:_ + at ... internal jest frames ..." `); }); @@ -165,8 +167,10 @@ describe("@babel/core errors", function () { }).toMatchInlineSnapshot(` "Error: Configuration contains string/RegExp pattern, but no filename was passed to Babel at Module.parseSync (/packages/babel-core/lib/parse.js:_:_) - ... frames from this test file ... - ... internal jest frames ..." + at /packages/babel-core/test/errors-stacks.js?:_:_ + at expectError (/packages/babel-core/test/errors-stacks.js?:_:_) + at /packages/babel-core/test/errors-stacks.js?:_:_ + at ... internal jest frames ..." `); }); @@ -182,8 +186,10 @@ describe("@babel/core errors", function () { \`\`\` See https://babeljs.io/docs/en/options#filename for more information. at Module.parseSync (/packages/babel-core/lib/parse.js:_:_) - ... frames from this test file ... - ... internal jest frames ..." + at /packages/babel-core/test/errors-stacks.js?:_:_ + at expectError (/packages/babel-core/test/errors-stacks.js?:_:_) + at /packages/babel-core/test/errors-stacks.js?:_:_ + at ... internal jest frames ..." `); }); @@ -196,8 +202,10 @@ describe("@babel/core errors", function () { "Error: .sourceType must be \\"module\\", \\"script\\", \\"unambiguous\\", or undefined at /packages/babel-core/test/fixtures/errors/invalid-option/babel.config.json at Module.parseSync (/packages/babel-core/lib/parse.js:_:_) - ... frames from this test file ... - ... internal jest frames ..." + at /packages/babel-core/test/errors-stacks.js?:_:_ + at expectError (/packages/babel-core/test/errors-stacks.js?:_:_) + at /packages/babel-core/test/errors-stacks.js?:_:_ + at ... internal jest frames ..." `); }); @@ -210,8 +218,10 @@ describe("@babel/core errors", function () { ).toMatchInlineSnapshot(` "Error: .sourceType must be \\"module\\", \\"script\\", \\"unambiguous\\", or undefined at Module.parseSync (/packages/babel-core/lib/parse.js:_:_) - ... frames from this test file ... - ... internal jest frames ..." + at /packages/babel-core/test/errors-stacks.js?:_:_ + at expectError (/packages/babel-core/test/errors-stacks.js?:_:_) + at /packages/babel-core/test/errors-stacks.js?:_:_ + at ... internal jest frames ..." `); }); @@ -230,7 +240,7 @@ describe("@babel/core errors", function () { } }).toMatchInlineSnapshot(` "Error: Internal error! This is a fake bug :) - ... frames from this test file ... + at Array.map (/packages/babel-core/test/errors-stacks.js?:_:_) at loadOneConfig (/packages/babel-core/lib/config/files/configuration.js:_:_) at loadOneConfig.next () at buildRootChain (/packages/babel-core/lib/config/config-chain.js:_:_)