From 54d920165e5c49025b5c024e9be97fc549dc2310 Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Thu, 11 Jul 2024 15:46:42 -0400 Subject: [PATCH] ci: fix Nan test failure on Linux (#42865) Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Shelley Vohr --- script/nan-spec-runner.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/script/nan-spec-runner.js b/script/nan-spec-runner.js index 1d84ca52756a..643954fe7cda 100644 --- a/script/nan-spec-runner.js +++ b/script/nan-spec-runner.js @@ -17,6 +17,14 @@ const args = require('minimist')(process.argv.slice(2), { string: ['only'] }); +const getNodeGypVersion = () => { + const nanPackageJSONPath = path.join(NAN_DIR, 'package.json'); + const nanPackageJSON = JSON.parse(fs.readFileSync(nanPackageJSONPath, 'utf8')); + const { devDependencies } = nanPackageJSON; + const nodeGypVersion = devDependencies['node-gyp']; + return nodeGypVersion || 'latest'; +}; + async function main () { const outDir = utils.getOutDir({ shouldLog: true }); const nodeDir = path.resolve(BASE, 'out', outDir, 'gen', 'node_headers'); @@ -90,16 +98,17 @@ async function main () { env.LDFLAGS = ldflags; } - const { status: buildStatus } = cp.spawnSync(NPX_CMD, ['node-gyp', 'rebuild', '--verbose', '--directory', 'test', '-j', 'max'], { + const nodeGypVersion = getNodeGypVersion(); + const { status: buildStatus, signal } = cp.spawnSync(NPX_CMD, [`node-gyp@${nodeGypVersion}`, 'rebuild', '--verbose', '--directory', 'test', '-j', 'max'], { env, cwd: NAN_DIR, stdio: 'inherit', shell: process.platform === 'win32' }); - if (buildStatus !== 0) { + if (buildStatus !== 0 || signal != null) { console.error('Failed to build nan test modules'); - return process.exit(buildStatus); + return process.exit(buildStatus !== 0 ? buildStatus : signal); } const { status: installStatus } = cp.spawnSync(NPX_CMD, [`yarn@${YARN_VERSION}`, 'install'], { @@ -108,9 +117,10 @@ async function main () { stdio: 'inherit', shell: process.platform === 'win32' }); - if (installStatus !== 0) { + + if (installStatus !== 0 || signal != null) { console.error('Failed to install nan node_modules'); - return process.exit(installStatus); + return process.exit(installStatus !== 0 ? installStatus : signal); } const onlyTests = args.only && args.only.split(',');