From bac28678e622c0d7e977dd60ec9803e8336c48df Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Sun, 30 Jun 2024 16:56:10 +0200 Subject: [PATCH] test: do not assume cwd in snapshot tests PR-URL: https://github.com/nodejs/node/pull/53146 Reviewed-By: Luigi Pinca Reviewed-By: Chemi Atlow Reviewed-By: Moshe Atlow Reviewed-By: Yagiz Nizipli Reviewed-By: James M Snell --- test/common/assertSnapshot.js | 4 ++-- test/parallel/test-runner-output.mjs | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/test/common/assertSnapshot.js b/test/common/assertSnapshot.js index 88f40281e069b7..c4a30a5bae5db7 100644 --- a/test/common/assertSnapshot.js +++ b/test/common/assertSnapshot.js @@ -25,7 +25,7 @@ function replaceWindowsPaths(str) { } function replaceFullPaths(str) { - return str.replaceAll(process.cwd(), ''); + return str.replaceAll(path.resolve(__dirname, '../..'), ''); } function transform(...args) { @@ -78,7 +78,7 @@ async function spawnAndAssert(filename, transform = (x) => x, { tty = false, ... return; } const flags = common.parseTestFlags(filename); - const executable = tty ? 'tools/pseudo-tty.py' : process.execPath; + const executable = tty ? path.join(__dirname, '../..', 'tools/pseudo-tty.py') : process.execPath; const args = tty ? [process.execPath, ...flags, filename] : [...flags, filename]; const { stdout, stderr } = await common.spawnPromisified(executable, args, options); await assertSnapshot(transform(`${stdout}${stderr}`), filename); diff --git a/test/parallel/test-runner-output.mjs b/test/parallel/test-runner-output.mjs index a3f7354f24b8ab..676168e9df4e50 100644 --- a/test/parallel/test-runner-output.mjs +++ b/test/parallel/test-runner-output.mjs @@ -3,6 +3,8 @@ import * as fixtures from '../common/fixtures.mjs'; import * as snapshot from '../common/assertSnapshot.js'; import { describe, it } from 'node:test'; import { hostname } from 'node:os'; +import { chdir, cwd } from 'node:process'; +import { fileURLToPath } from 'node:url'; const skipForceColors = process.config.variables.icu_gyp_path !== 'tools/icu/icu-generic.gyp' || @@ -14,8 +16,10 @@ function replaceTestDuration(str) { .replaceAll(/duration_ms [0-9.]+/g, 'duration_ms *'); } +const root = fileURLToPath(new URL('../..', import.meta.url)).slice(0, -1); + const color = '(\\[\\d+m)'; -const stackTraceBasePath = new RegExp(`${color}\\(${process.cwd().replaceAll(/[\\^$*+?.()|[\]{}]/g, '\\$&')}/?${color}(.*)${color}\\)`, 'g'); +const stackTraceBasePath = new RegExp(`${color}\\(${root.replaceAll(/[\\^$*+?.()|[\]{}]/g, '\\$&')}/?${color}(.*)${color}\\)`, 'g'); function replaceSpecDuration(str) { return str @@ -151,6 +155,9 @@ const tests = [ }), })); +if (cwd() !== root) { + chdir(root); +} describe('test runner output', { concurrency: true }, () => { for (const { name, fn } of tests) { it(name, fn);