Browse Source

ci: fix Nan test failure on Linux (#42863)

ci: Nan test failure on Linux
Shelley Vohr 9 months ago
parent
commit
dab006b1cf
2 changed files with 11 additions and 2 deletions
  1. 1 1
      .github/workflows/pipeline-segment-node-nan-test.yml
  2. 10 1
      script/nan-spec-runner.js

+ 1 - 1
.github/workflows/pipeline-segment-node-nan-test.yml

@@ -152,7 +152,7 @@ jobs:
         unzip -:o dist.zip
     - name: Setup Linux for Headless Testing
       run: sh -e /etc/init.d/xvfb start
-    - name: Run Node.js Tests
+    - name: Run Nan Tests
       run: |
         cd src
         node electron/script/nan-spec-runner.js

+ 10 - 1
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,7 +98,8 @@ async function main () {
     env.LDFLAGS = ldflags;
   }
 
-  const { status: buildStatus, signal } = 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',