Skip to content

Commit

Permalink
test: fix Node.js color edge snapshot stack traces
Browse files Browse the repository at this point in the history
  • Loading branch information
codebytere committed Oct 18, 2023
1 parent 666907d commit 5eb2b1a
Show file tree
Hide file tree
Showing 3 changed files with 140 additions and 35 deletions.
2 changes: 1 addition & 1 deletion patches/node/.patches
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ fix_do_not_resolve_electron_entrypoints.patch
fix_ftbfs_werror_wextra-semi.patch
fix_isurl_implementation.patch
ci_ensure_node_tests_set_electron_run_as_node.patch
chore_update_fixtures_errors_force_colors_snapshot.patch
fix_assert_module_in_the_renderer_process.patch
src_cast_v8_object_getinternalfield_return_value_to_v8_value.patch
fix_add_trusted_space_and_trusted_lo_space_to_the_v8_heap.patch
Expand All @@ -53,3 +52,4 @@ src_adapt_to_v8_exception_api_change.patch
lib_test_do_not_hardcode_buffer_kmaxlength.patch
fix_handle_possible_disabled_sharedarraybuffer.patch
win_process_avoid_assert_after_spawning_store_app_4152.patch
test_fix_edge_snapshot_stack_traces.patch

This file was deleted.

139 changes: 139 additions & 0 deletions patches/node/test_fix_edge_snapshot_stack_traces.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
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 83ee45f5f906adddcbc701112f373332dd1f66f9..7b6a9d59bfaa0247f4466277097cd5575ff81d0c 100644
--- a/test/common/assertSnapshot.js
+++ b/test/common/assertSnapshot.js
@@ -8,6 +8,10 @@ const assert = require('node:assert/strict');
const stackFramesRegexp = /(\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);
}
@@ -70,6 +74,7 @@ async function spawnAndAssert(filename, transform = (x) => x, { tty = false, ...
module.exports = {
assertSnapshot,
getSnapshotPath,
+ replaceNodeVersion,
replaceStackTrace,
replaceWindowsLineEndings,
replaceWindowsPaths,
diff --git a/test/fixtures/errors/force_colors.snapshot b/test/fixtures/errors/force_colors.snapshot
index 4c33acbc2d5c12ac8750b72e0796284176af3da2..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> (/test*force_colors.js:1:7)
- at Module._compile (node:internal*modules*cjs*loader:1256:14)
- at Module._extensions..js (node:internal*modules*cjs*loader:1310:10)
- at Module.load (node:internal*modules*cjs*loader:1119:32)
- at Module._load (node:internal*modules*cjs*loader:960:12)
- at Function.executeUserEntryPoint [as runMain] (node:internal*modules*run_main:86:12)
- at node:internal*main*run_main_module:23:47
+ at *
+ at *
+ at *
+ at *
+ at *
+ at *
+ at *

Node.js *

diff --git a/test/parallel/test-node-output-errors.mjs b/test/parallel/test-node-output-errors.mjs
index b9a55fb7ea22e62553f69bd035797f7aaee1fc38..d27bb1003d01df72f55a828d757cb967f8b03cc8 100644
--- a/test/parallel/test-node-output-errors.mjs
+++ b/test/parallel/test-node-output-errors.mjs
@@ -10,14 +10,15 @@ const skipForceColors =
(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 *');
+}
+
describe('errors output', { concurrency: true }, () => {
function normalize(str) {
return str.replaceAll(snapshot.replaceWindowsPaths(process.cwd()), '').replaceAll('//', '*').replaceAll(/\/(\w)/g, '*$1').replaceAll('*test*', '*').replaceAll('*fixtures*errors*', '*').replaceAll('file:**', 'file:*/');
@@ -28,9 +29,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' },
@@ -50,7 +54,8 @@ 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 },
- !skipForceColors ? { name: 'errors/force_colors.js', env: { FORCE_COLOR: 1 } } : null,
+ !skipForceColors ? { name: 'errors/force_colors.js', transform: forceColorsTransform,
+ env: { FORCE_COLOR: 1 } } : null,
].filter(Boolean);
for (const { name, transform, env } of tests) {
if (env) env.ELECTRON_RUN_AS_NODE = 1;
diff --git a/test/parallel/test-node-output-sourcemaps.mjs b/test/parallel/test-node-output-sourcemaps.mjs
index 8e43947ab2188f087056eab39d0e1a11481f9da5..c53a0598958e4e386db1993caeb312dae3f302a8 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' },

0 comments on commit 5eb2b1a

Please sign in to comment.