From aa7f9408df05e0009aab2b684ed6f5113d24f8d5 Mon Sep 17 00:00:00 2001 From: Junsoo Ha Date: Tue, 18 Aug 2026 20:37:13 +0900 Subject: [PATCH] test: use common/child_process spawnSync helpers Replace manual spawnSync() result assertions with test/common/child_process helper functions. Signed-off-by: Junsoo Ha --- test/parallel/test-crypto-key-store-pkcs11.js | 4 +-- ...test-experimental-shared-value-conveyor.js | 12 ++++----- test/parallel/test-heap-prof-basic.js | 9 ++----- test/parallel/test-heap-prof-exec-argv.js | 8 ++---- test/parallel/test-heap-prof-loop-drained.js | 9 ++----- test/parallel/test-inspect-address-in-use.js | 27 +++++++++---------- test/parallel/test-os-homedir-no-envvar.js | 6 ++--- test/parallel/test-process-execpath.js | 10 +++---- .../test-runner-mock-timers-with-timeout.js | 6 ++--- test/parallel/test-v8-stop-coverage.js | 7 +++-- test/parallel/test-v8-take-coverage-noop.js | 7 +++-- test/parallel/test-v8-take-coverage.js | 7 +++-- 12 files changed, 45 insertions(+), 67 deletions(-) diff --git a/test/parallel/test-crypto-key-store-pkcs11.js b/test/parallel/test-crypto-key-store-pkcs11.js index 971f4909166b..0fec81a9c647 100644 --- a/test/parallel/test-crypto-key-store-pkcs11.js +++ b/test/parallel/test-crypto-key-store-pkcs11.js @@ -34,6 +34,7 @@ const { verify, } = require('crypto'); const tmpdir = require('../common/tmpdir'); +const { spawnSyncAndExitWithoutError } = require('../common/child_process'); const { subtle } = globalThis.crypto; const kData = Buffer.from( @@ -65,7 +66,7 @@ function softhsmOptions() { function runInChild() { const { cwd, env } = softhsmOptions(); - const child = spawnSync(process.execPath, [ + spawnSyncAndExitWithoutError(process.execPath, [ `--openssl-config=${kOpenSSLConfig}`, __filename, ], { @@ -73,7 +74,6 @@ function runInChild() { env: { ...process.env, ...env, NODE_TEST_PKCS11_CHILD: '1' }, stdio: 'inherit', }); - assert.strictEqual(child.status, 0); } function privateKeyUrl(label) { diff --git a/test/parallel/test-experimental-shared-value-conveyor.js b/test/parallel/test-experimental-shared-value-conveyor.js index 17eb32c66b11..123e212bd1da 100644 --- a/test/parallel/test-experimental-shared-value-conveyor.js +++ b/test/parallel/test-experimental-shared-value-conveyor.js @@ -1,8 +1,8 @@ 'use strict'; const common = require('../common'); const assert = require('assert'); -const { spawnSync } = require('child_process'); const { Worker, parentPort } = require('worker_threads'); +const { spawnSyncAndAssert } = require('../common/child_process'); if (process.env.TEST_CHILD_PROCESS === '1') { // Do not use isMainThread so that this test itself can be run inside a Worker. @@ -29,10 +29,10 @@ if (process.env.TEST_CHILD_PROCESS === '1') { const args = ['--harmony-struct', __filename]; const options = { env: { TEST_CHILD_PROCESS: '1', ...process.env } }; - const child = spawnSync(process.execPath, args, options); - assert.strictEqual(child.stderr.toString().trim(), ''); - assert.strictEqual(child.stdout.toString().trim(), ''); - assert.strictEqual(child.status, 0); - assert.strictEqual(child.signal, null); + spawnSyncAndAssert(process.execPath, args, options, { + stdout: '', + stderr: '', + trim: true + }); } diff --git a/test/parallel/test-heap-prof-basic.js b/test/parallel/test-heap-prof-basic.js index 34d8af9a7840..4ddc313ff048 100644 --- a/test/parallel/test-heap-prof-basic.js +++ b/test/parallel/test-heap-prof-basic.js @@ -9,7 +9,7 @@ const fixtures = require('../common/fixtures'); common.skipIfInspectorDisabled(); const assert = require('assert'); -const { spawnSync } = require('child_process'); +const { spawnSyncAndExitWithoutError } = require('../common/child_process'); const tmpdir = require('../common/tmpdir'); @@ -20,18 +20,13 @@ const { { tmpdir.refresh(); - const output = spawnSync(process.execPath, [ + spawnSyncAndExitWithoutError(process.execPath, [ '--heap-prof', fixtures.path('workload', 'allocation.js'), ], { cwd: tmpdir.path, env }); - if (output.status !== 0) { - console.log(output.stderr.toString()); - console.log(output); - } - assert.strictEqual(output.status, 0); const profiles = getHeapProfiles(tmpdir.path); assert.strictEqual(profiles.length, 1); } diff --git a/test/parallel/test-heap-prof-exec-argv.js b/test/parallel/test-heap-prof-exec-argv.js index 02ad4430dba7..186b4d5d631b 100644 --- a/test/parallel/test-heap-prof-exec-argv.js +++ b/test/parallel/test-heap-prof-exec-argv.js @@ -9,7 +9,7 @@ const fixtures = require('../common/fixtures'); common.skipIfInspectorDisabled(); const assert = require('assert'); -const { spawnSync } = require('child_process'); +const { spawnSyncAndExitWithoutError } = require('../common/child_process'); const tmpdir = require('../common/tmpdir'); @@ -20,7 +20,7 @@ const { { tmpdir.refresh(); - const output = spawnSync(process.execPath, [ + const { child: output } = spawnSyncAndExitWithoutError(process.execPath, [ fixtures.path('workload', 'allocation-worker-argv.js'), ], { cwd: tmpdir.path, @@ -29,10 +29,6 @@ const { HEAP_PROF_INTERVAL: '128' } }); - if (output.status !== 0) { - console.log(output.stderr.toString()); - } - assert.strictEqual(output.status, 0); const profiles = getHeapProfiles(tmpdir.path); assert.strictEqual(profiles.length, 1); verifyFrames(output, profiles[0], 'runAllocation'); diff --git a/test/parallel/test-heap-prof-loop-drained.js b/test/parallel/test-heap-prof-loop-drained.js index d0fc4c987849..d8e07b33cb46 100644 --- a/test/parallel/test-heap-prof-loop-drained.js +++ b/test/parallel/test-heap-prof-loop-drained.js @@ -8,7 +8,7 @@ const fixtures = require('../common/fixtures'); common.skipIfInspectorDisabled(); const assert = require('assert'); -const { spawnSync } = require('child_process'); +const { spawnSyncAndExitWithoutError } = require('../common/child_process'); const tmpdir = require('../common/tmpdir'); @@ -21,7 +21,7 @@ const { { tmpdir.refresh(); - const output = spawnSync(process.execPath, [ + const { child: output } = spawnSyncAndExitWithoutError(process.execPath, [ '--heap-prof', '--heap-prof-interval', kHeapProfInterval, @@ -30,11 +30,6 @@ const { cwd: tmpdir.path, env }); - if (output.status !== 0) { - console.log(output.stderr.toString()); - console.log(output); - } - assert.strictEqual(output.status, 0); const profiles = getHeapProfiles(tmpdir.path); assert.strictEqual(profiles.length, 1); verifyFrames(output, profiles[0], 'runAllocation'); diff --git a/test/parallel/test-inspect-address-in-use.js b/test/parallel/test-inspect-address-in-use.js index d900fdfb6795..bd954e4a7bc8 100644 --- a/test/parallel/test-inspect-address-in-use.js +++ b/test/parallel/test-inspect-address-in-use.js @@ -2,7 +2,7 @@ const common = require('../common'); common.skipIfInspectorDisabled(); -const { spawnSync } = require('child_process'); +const { spawnSyncAndExit } = require('../common/child_process'); const { createServer } = require('http'); const assert = require('assert'); const tmpdir = require('../common/tmpdir'); @@ -25,19 +25,18 @@ function testOnServerListen(fn) { function testChildProcess(getArgs, exitCode, options) { testOnServerListen(common.mustCall((server) => { const { port } = server.address(); - const child = spawnSync(process.execPath, getArgs(port), options); - const stderr = child.stderr.toString().trim(); - const stdout = child.stdout.toString().trim(); - console.log('[STDERR]'); - console.log(stderr); - console.log('[STDOUT]'); - console.log(stdout); - const match = stderr.match( - /Starting inspector on 127\.0\.0\.1:(\d+) failed: address already in use/ - ); - assert.notStrictEqual(match, null); - assert.strictEqual(match[1], port + ''); - assert.strictEqual(child.status, exitCode); + spawnSyncAndExit(process.execPath, getArgs(port), options, { + status: exitCode, + signal: null, + trim: true, + stderr: function(str) { + const match = str.match( + /Starting inspector on 127\.0\.0\.1:(\d+) failed: address already in use/ + ); + assert.notStrictEqual(match, null); + assert.strictEqual(match[1], port + ''); + }, + }); })); } diff --git a/test/parallel/test-os-homedir-no-envvar.js b/test/parallel/test-os-homedir-no-envvar.js index 2f9b1b47a704..3a47d6d72c4d 100644 --- a/test/parallel/test-os-homedir-no-envvar.js +++ b/test/parallel/test-os-homedir-no-envvar.js @@ -1,9 +1,9 @@ 'use strict'; const common = require('../common'); const assert = require('assert'); -const cp = require('child_process'); const os = require('os'); const path = require('path'); +const { spawnSyncAndExitWithoutError } = require('../common/child_process'); if (process.argv[2] === 'child') { @@ -22,9 +22,7 @@ if (process.argv[2] === 'child') { else delete process.env.HOME; - const child = cp.spawnSync(process.execPath, [__filename, 'child'], { + spawnSyncAndExitWithoutError(process.execPath, [__filename, 'child'], { env: process.env }); - - assert.strictEqual(child.status, 0); } diff --git a/test/parallel/test-process-execpath.js b/test/parallel/test-process-execpath.js index 0fce35e2645e..53d8f39fbf7e 100644 --- a/test/parallel/test-process-execpath.js +++ b/test/parallel/test-process-execpath.js @@ -4,7 +4,7 @@ if (common.isWindows) common.skip('symlinks are weird on windows'); const assert = require('assert'); -const child_process = require('child_process'); +const { spawnSyncAndAssert } = require('../common/child_process'); const fs = require('fs'); assert.strictEqual(process.execPath, fs.realpathSync(process.execPath)); @@ -19,8 +19,8 @@ if (process.argv[2] === 'child') { const symlinkedNode = tmpdir.resolve('symlinked-node'); fs.symlinkSync(process.execPath, symlinkedNode); - const proc = child_process.spawnSync(symlinkedNode, [__filename, 'child']); - assert.strictEqual(proc.stderr.toString(), ''); - assert.strictEqual(proc.stdout.toString(), `${process.execPath}\n`); - assert.strictEqual(proc.status, 0); + spawnSyncAndAssert(symlinkedNode, [__filename, 'child'], { + stdout: `${process.execPath}\n`, + stderr: '' + }); } diff --git a/test/parallel/test-runner-mock-timers-with-timeout.js b/test/parallel/test-runner-mock-timers-with-timeout.js index 67f266851fe1..6d98e6e9479a 100644 --- a/test/parallel/test-runner-mock-timers-with-timeout.js +++ b/test/parallel/test-runner-mock-timers-with-timeout.js @@ -1,14 +1,12 @@ 'use strict'; require('../common'); const fixtures = require('../common/fixtures'); -const assert = require('node:assert'); -const { spawnSync } = require('node:child_process'); +const { spawnSyncAndExitWithoutError } = require('../common/child_process'); const { test } = require('node:test'); test('mock timers do not break test timeout cleanup', async () => { const fixture = fixtures.path('test-runner', 'mock-timers-with-timeout.js'); - const cp = spawnSync(process.execPath, ['--test', fixture], { + spawnSyncAndExitWithoutError(process.execPath, ['--test', fixture], { timeout: 30_000, }); - assert.strictEqual(cp.status, 0, `Test failed:\nstdout: ${cp.stdout}\nstderr: ${cp.stderr}`); }); diff --git a/test/parallel/test-v8-stop-coverage.js b/test/parallel/test-v8-stop-coverage.js index e9764d60477b..b37f8320abb4 100644 --- a/test/parallel/test-v8-stop-coverage.js +++ b/test/parallel/test-v8-stop-coverage.js @@ -5,7 +5,7 @@ const fixtures = require('../common/fixtures'); const tmpdir = require('../common/tmpdir'); const assert = require('assert'); const fs = require('fs'); -const { spawnSync } = require('child_process'); +const { spawnSyncAndExitWithoutError } = require('../common/child_process'); common.skipIfInspectorDisabled(); @@ -13,7 +13,7 @@ tmpdir.refresh(); const intervals = 20; { - const output = spawnSync(process.execPath, [ + const { child } = spawnSyncAndExitWithoutError(process.execPath, [ '-r', fixtures.path('v8-coverage', 'stop-coverage'), '-r', @@ -27,8 +27,7 @@ const intervals = 20; TEST_INTERVALS: intervals }, }); - console.log(output.stderr.toString()); - assert.strictEqual(output.status, 0); + console.log(child.stderr.toString()); const coverageFiles = fs.readdirSync(tmpdir.path); assert.strictEqual(coverageFiles.length, 0); } diff --git a/test/parallel/test-v8-take-coverage-noop.js b/test/parallel/test-v8-take-coverage-noop.js index 8d49b0f23296..14bb8a2c3a91 100644 --- a/test/parallel/test-v8-take-coverage-noop.js +++ b/test/parallel/test-v8-take-coverage-noop.js @@ -5,7 +5,7 @@ const fixtures = require('../common/fixtures'); const tmpdir = require('../common/tmpdir'); const assert = require('assert'); const fs = require('fs'); -const { spawnSync } = require('child_process'); +const { spawnSyncAndExitWithoutError } = require('../common/child_process'); common.skipIfInspectorDisabled(); @@ -14,7 +14,7 @@ tmpdir.refresh(); // v8.takeCoverage() should be a noop if NODE_V8_COVERAGE is not set. const intervals = 40; { - const output = spawnSync(process.execPath, [ + const { child } = spawnSyncAndExitWithoutError(process.execPath, [ '-r', fixtures.path('v8-coverage', 'take-coverage'), fixtures.path('v8-coverage', 'interval'), @@ -25,8 +25,7 @@ const intervals = 40; TEST_INTERVALS: intervals }, }); - console.log(output.stderr.toString()); - assert.strictEqual(output.status, 0); + console.log(child.stderr.toString()); const coverageFiles = fs.readdirSync(tmpdir.path); assert.strictEqual(coverageFiles.length, 0); } diff --git a/test/parallel/test-v8-take-coverage.js b/test/parallel/test-v8-take-coverage.js index 6b1fe149e992..2119a30d6ad9 100644 --- a/test/parallel/test-v8-take-coverage.js +++ b/test/parallel/test-v8-take-coverage.js @@ -5,7 +5,7 @@ const fixtures = require('../common/fixtures'); const tmpdir = require('../common/tmpdir'); const assert = require('assert'); const fs = require('fs'); -const { spawnSync } = require('child_process'); +const { spawnSyncAndExitWithoutError } = require('../common/child_process'); common.skipIfInspectorDisabled(); @@ -13,7 +13,7 @@ tmpdir.refresh(); const intervals = 40; // Outputs coverage when v8.takeCoverage() is invoked. { - const output = spawnSync(process.execPath, [ + const { child } = spawnSyncAndExitWithoutError(process.execPath, [ '-r', fixtures.path('v8-coverage', 'take-coverage'), fixtures.path('v8-coverage', 'interval'), @@ -25,8 +25,7 @@ const intervals = 40; TEST_INTERVALS: intervals }, }); - console.log(output.stderr.toString()); - assert.strictEqual(output.status, 0); + console.log(child.stderr.toString()); const coverageFiles = fs.readdirSync(tmpdir.path); let coverages = [];