From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shelley Vohr <shelley.vohr@gmail.com>
Date: Wed, 18 Oct 2023 10:40:34 +0200
Subject: test: fix edge snapshot stack traces

https://github.com/nodejs/node/pull/49659

diff --git a/test/common/assertSnapshot.js b/test/common/assertSnapshot.js
index 838ee86f74ea89e052676a5c25e23481369857fa..3aacfa064561c64c218fcc4e3090f7952cb1d218 100644
--- a/test/common/assertSnapshot.js
+++ b/test/common/assertSnapshot.js
@@ -8,6 +8,10 @@ const assert = require('node:assert/strict');
 const stackFramesRegexp = /(?<=\n)(\s+)((.+?)\s+\()?(?:\(?(.+?):(\d+)(?::(\d+))?)\)?(\s+\{)?(\[\d+m)?(\n|$)/g;
 const windowNewlineRegexp = /\r/g;
 
+function replaceNodeVersion(str) {
+  return str.replaceAll(process.version, '*');
+}
+
 function replaceStackTrace(str, replacement = '$1*$7$8\n') {
   return str.replace(stackFramesRegexp, replacement);
 }
@@ -84,6 +88,7 @@ async function spawnAndAssert(filename, transform = (x) => x, { tty = false, ...
 module.exports = {
   assertSnapshot,
   getSnapshotPath,
+  replaceNodeVersion,
   replaceFullPaths,
   replaceStackTrace,
   replaceWindowsLineEndings,
diff --git a/test/fixtures/errors/force_colors.snapshot b/test/fixtures/errors/force_colors.snapshot
index be1d45d0d8e8ba7b637754e32fe379cb2cf1e6ac..21410d492db861876ecfcb82dcc3c1815cba6d09 100644
--- a/test/fixtures/errors/force_colors.snapshot
+++ b/test/fixtures/errors/force_colors.snapshot
@@ -4,11 +4,12 @@ throw new Error('Should include grayed stack trace')
 
 Error: Should include grayed stack trace
     at Object.<anonymous> [90m(/[39mtest*force_colors.js:1:7[90m)[39m
-[90m    at Module._compile (node:internal*modules*cjs*loader:1241:14)[39m
-[90m    at Module._extensions..js (node:internal*modules*cjs*loader:1295:10)[39m
-[90m    at Module.load (node:internal*modules*cjs*loader:1091:32)[39m
-[90m    at Module._load (node:internal*modules*cjs*loader:938:12)[39m
-[90m    at Function.executeUserEntryPoint [as runMain] (node:internal*modules*run_main:83:12)[39m
-[90m    at node:internal*main*run_main_module:23:47[39m
+[90m    at *[39m
+[90m    at *[39m
+[90m    at *[39m
+[90m    at *[39m
+[90m    at *[39m
+[90m    at *[39m
+[90m    at *[39m
 
 Node.js *
diff --git a/test/fixtures/source-map/output/source_map_sourcemapping_url_string.snapshot b/test/fixtures/source-map/output/source_map_sourcemapping_url_string.snapshot
index 2c1e11eeb9eab1bcb101f8f5af909461b26036ec..6a109c904e115503b743d5c4e0418ae693ca9856 100644
--- a/test/fixtures/source-map/output/source_map_sourcemapping_url_string.snapshot
+++ b/test/fixtures/source-map/output/source_map_sourcemapping_url_string.snapshot
@@ -1,3 +1,3 @@
 Error: an exception.
     at Object.<anonymous> (*typescript-sourcemapping_url_string.ts:3:7)
-    at Module._compile (node:internal*modules*cjs*loader:1241:14)
+    *
diff --git a/test/parallel/test-node-output-errors.mjs b/test/parallel/test-node-output-errors.mjs
index b08bcd40cdf26093e158c0bb9ae566c76f2c731e..bf8eacbac479a2bf5698ed29ede648e149f185b5 100644
--- a/test/parallel/test-node-output-errors.mjs
+++ b/test/parallel/test-node-output-errors.mjs
@@ -10,15 +10,15 @@ const skipForceColors =
   process.config.variables.node_shared_openssl ||
   (common.isWindows && (Number(os.release().split('.')[0]) !== 10 || Number(os.release().split('.')[2]) < 14393)); // See https://github.com/nodejs/node/pull/33132
 
-
-function replaceNodeVersion(str) {
-  return str.replaceAll(process.version, '*');
-}
-
 function replaceStackTrace(str) {
   return snapshot.replaceStackTrace(str, '$1at *$7\n');
 }
 
+function replaceForceColorsStackTrace(str) {
+  // eslint-disable-next-line no-control-regex
+  return str.replaceAll(/(\[90m\W+)at .*node:.*/g, '$1at *[39m');
+}
+
 describe('errors output', { concurrency: true }, () => {
   function normalize(str) {
     return str.replaceAll(snapshot.replaceWindowsPaths(process.cwd()), '')
@@ -35,9 +35,12 @@ describe('errors output', { concurrency: true }, () => {
   }
   const common = snapshot
     .transform(snapshot.replaceWindowsLineEndings, snapshot.replaceWindowsPaths);
-  const defaultTransform = snapshot.transform(common, normalize, replaceNodeVersion);
-  const errTransform = snapshot.transform(common, normalizeNoNumbers, replaceNodeVersion);
-  const promiseTransform = snapshot.transform(common, replaceStackTrace, normalizeNoNumbers, replaceNodeVersion);
+  const defaultTransform = snapshot.transform(common, normalize, snapshot.replaceNodeVersion);
+  const errTransform = snapshot.transform(common, normalizeNoNumbers, snapshot.replaceNodeVersion);
+  const promiseTransform = snapshot.transform(common, replaceStackTrace,
+                                              normalizeNoNumbers, snapshot.replaceNodeVersion);
+  const forceColorsTransform = snapshot.transform(common, normalize,
+                                                  replaceForceColorsStackTrace, snapshot.replaceNodeVersion);
 
   const tests = [
     { name: 'errors/async_error_eval_cjs.js' },
@@ -57,7 +60,11 @@ describe('errors output', { concurrency: true }, () => {
     { name: 'errors/throw_in_line_with_tabs.js', transform: errTransform },
     { name: 'errors/throw_non_error.js', transform: errTransform },
     { name: 'errors/promise_always_throw_unhandled.js', transform: promiseTransform },
-    { skip: skipForceColors, name: 'errors/force_colors.js', env: { FORCE_COLOR: 1 } },
+    !skipForceColors ? {
+      name: 'errors/force_colors.js',
+      transform: forceColorsTransform,
+      env: { FORCE_COLOR: 1 }
+    } : null,
   ];
   for (const { name, transform = defaultTransform, env, skip = false } of tests) {
     it(name, { skip }, async () => {
diff --git a/test/parallel/test-node-output-sourcemaps.mjs b/test/parallel/test-node-output-sourcemaps.mjs
index 2043fa57f06a8d2326a4ea1ba24341502c8b7471..b01f30765c7de81a4d956b9c1124affea0fc2aef 100644
--- a/test/parallel/test-node-output-sourcemaps.mjs
+++ b/test/parallel/test-node-output-sourcemaps.mjs
@@ -4,10 +4,6 @@ import * as snapshot from '../common/assertSnapshot.js';
 import * as path from 'node:path';
 import { describe, it } from 'node:test';
 
-function replaceNodeVersion(str) {
-  return str.replaceAll(process.version, '*');
-}
-
 describe('sourcemaps output', { concurrency: true }, () => {
   function normalize(str) {
     const result = str
@@ -16,7 +12,8 @@ describe('sourcemaps output', { concurrency: true }, () => {
     .replaceAll('/Users/bencoe/oss/coffee-script-test', '')
     .replaceAll(/\/(\w)/g, '*$1')
     .replaceAll('*test*', '*')
-    .replaceAll('*fixtures*source-map*', '*');
+    .replaceAll('*fixtures*source-map*', '*')
+    .replaceAll(/(\W+).*node:internal\*modules.*/g, '$1*');
     if (common.isWindows) {
       const currentDeviceLetter = path.parse(process.cwd()).root.substring(0, 1).toLowerCase();
       const regex = new RegExp(`${currentDeviceLetter}:/?`, 'gi');
@@ -25,7 +22,8 @@ describe('sourcemaps output', { concurrency: true }, () => {
     return result;
   }
   const defaultTransform = snapshot
-    .transform(snapshot.replaceWindowsLineEndings, snapshot.replaceWindowsPaths, normalize, replaceNodeVersion);
+    .transform(snapshot.replaceWindowsLineEndings, snapshot.replaceWindowsPaths,
+               normalize, snapshot.replaceNodeVersion);
 
   const tests = [
     { name: 'source-map/output/source_map_disabled_by_api.js' },
