From 6c5f2612c4268bd6eaece25b64285d9e1ee42aea Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Thu, 7 Sep 2023 22:03:03 +0200 Subject: [PATCH] test: use spawnSyncAndExitWithoutError in sea tests To display more information when the command fails. PR-URL: https://github.com/nodejs/node/pull/49543 Refs: https://github.com/nodejs/reliability/issues/658 Reviewed-By: Darshan Sen Reviewed-By: Yagiz Nizipli --- ...ble-application-snapshot-and-code-cache.js | 21 ++++++---- ...-single-executable-application-snapshot.js | 41 ++++++++++++------- 2 files changed, 39 insertions(+), 23 deletions(-) diff --git a/test/sequential/test-single-executable-application-snapshot-and-code-cache.js b/test/sequential/test-single-executable-application-snapshot-and-code-cache.js index 66012e38a4faa6..6d86d6a79d8d68 100644 --- a/test/sequential/test-single-executable-application-snapshot-and-code-cache.js +++ b/test/sequential/test-single-executable-application-snapshot-and-code-cache.js @@ -13,7 +13,9 @@ skipIfSingleExecutableIsNotSupported(); const tmpdir = require('../common/tmpdir'); const { copyFileSync, writeFileSync, existsSync } = require('fs'); -const { spawnSync } = require('child_process'); +const { + spawnSyncAndExitWithoutError +} = require('../common/child_process'); const { join } = require('path'); const assert = require('assert'); @@ -43,21 +45,24 @@ const outputFile = join(tmpdir.path, process.platform === 'win32' ? 'sea.exe' : } `); - let child = spawnSync( + spawnSyncAndExitWithoutError( process.execPath, ['--experimental-sea-config', 'sea-config.json'], { cwd: tmpdir.path - }); - assert.match( - child.stderr.toString(), - /"useCodeCache" is redundant when "useSnapshot" is true/); + }, + { + stderr: /"useCodeCache" is redundant when "useSnapshot" is true/ + } + ); assert(existsSync(seaPrepBlob)); copyFileSync(process.execPath, outputFile); injectAndCodeSign(outputFile, seaPrepBlob); - child = spawnSync(outputFile); - assert.strictEqual(child.stdout.toString().trim(), 'Hello from snapshot'); + spawnSyncAndExitWithoutError(outputFile, { + stdout: 'Hello from snapshot', + trim: true, + }); } diff --git a/test/sequential/test-single-executable-application-snapshot.js b/test/sequential/test-single-executable-application-snapshot.js index 51b09cea662adf..5c2d8c36fdd38f 100644 --- a/test/sequential/test-single-executable-application-snapshot.js +++ b/test/sequential/test-single-executable-application-snapshot.js @@ -13,7 +13,10 @@ skipIfSingleExecutableIsNotSupported(); const tmpdir = require('../common/tmpdir'); const { copyFileSync, writeFileSync, existsSync } = require('fs'); -const { spawnSync } = require('child_process'); +const { + spawnSyncAndExit, + spawnSyncAndExitWithoutError +} = require('../common/child_process'); const assert = require('assert'); const configFile = tmpdir.resolve('sea-config.json'); @@ -32,16 +35,17 @@ const outputFile = tmpdir.resolve(process.platform === 'win32' ? 'sea.exe' : 'se } `); - const child = spawnSync( + spawnSyncAndExit( process.execPath, ['--experimental-sea-config', 'sea-config.json'], { cwd: tmpdir.path + }, + { + status: 1, + signal: null, + stderr: /snapshot\.js does not invoke v8\.startupSnapshot\.setDeserializeMainFunction\(\)/ }); - - assert.match( - child.stderr.toString(), - /snapshot\.js does not invoke v8\.startupSnapshot\.setDeserializeMainFunction\(\)/); } { @@ -65,24 +69,31 @@ const outputFile = tmpdir.resolve(process.platform === 'win32' ? 'sea.exe' : 'se } `); - let child = spawnSync( + spawnSyncAndExitWithoutError( process.execPath, ['--experimental-sea-config', 'sea-config.json'], { cwd: tmpdir.path + }, + { + stderr: /Single executable application is an experimental feature/ }); - assert.match( - child.stderr.toString(), - /Single executable application is an experimental feature/); assert(existsSync(seaPrepBlob)); copyFileSync(process.execPath, outputFile); injectAndCodeSign(outputFile, seaPrepBlob); - child = spawnSync(outputFile); - assert.strictEqual(child.stdout.toString().trim(), 'Hello from snapshot'); - assert.doesNotMatch( - child.stderr.toString(), - /Single executable application is an experimental feature/); + spawnSyncAndExitWithoutError( + outputFile, + { + trim: true, + stdout: 'Hello from snapshot', + stderr(output) { + assert.doesNotMatch( + output, + /Single executable application is an experimental feature/); + } + } + ); }