From 3c0f11fa6a3aa10c1f8226f08bdac944936f1f90 Mon Sep 17 00:00:00 2001 From: James M Snell Date: Tue, 21 Aug 2018 13:04:02 -0700 Subject: [PATCH] test: remove isGlibc from common MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `common.isGlibc()` function is called exactly once from only one test. There's no reason for it to be in `require('../common')` at the current time. If it ends up needing to be used by multiple tests, it can easily be moved into it's own common sub-module (e.g. `require('../common/isglibc')` ... for now tho, just move it into the one test that uses it and simplify the implementation a bit to remove unnecessary caching. PR-URL: https://github.com/nodejs/node/pull/22443 Reviewed-By: Refael Ackermann Reviewed-By: Ruben Bridgewater Reviewed-By: Colin Ihrig Reviewed-By: Rich Trott Reviewed-By: Trivikram Kamat Reviewed-By: Luigi Pinca Reviewed-By: Tobias Nießen --- test/abort/test-addon-uv-handle-leak.js | 19 ++++++++++++++++++- test/common/index.js | 17 ----------------- test/common/index.mjs | 2 -- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/test/abort/test-addon-uv-handle-leak.js b/test/abort/test-addon-uv-handle-leak.js index 3944cb79c78494..96608f8dda95fd 100644 --- a/test/abort/test-addon-uv-handle-leak.js +++ b/test/abort/test-addon-uv-handle-leak.js @@ -6,6 +6,7 @@ const fs = require('fs'); const path = require('path'); const cp = require('child_process'); const { Worker } = require('worker_threads'); +const { spawnSync } = require('child_process'); // This is a sibling test to test/addons/uv-handle-leak. @@ -49,9 +50,25 @@ if (process.argv[2] === 'child') { // Close callback: 0x7f2df31de220 CloseCallback(uv_handle_s*) [...] // Data: 0x42 + function isGlibc() { + try { + const lddOut = spawnSync('ldd', [process.execPath]).stdout; + const libcInfo = lddOut.toString().split('\n').map( + (line) => line.match(/libc\.so.+=>\s*(\S+)\s/)).filter((info) => info); + if (libcInfo.length === 0) + return false; + const nmOut = spawnSync('nm', ['-D', libcInfo[0][1]]).stdout; + if (/gnu_get_libc_version/.test(nmOut)) + return true; + } catch { + return false; + } + } + + if (!(common.isFreeBSD || common.isAIX || - (common.isLinux && !common.isGlibc()) || + (common.isLinux && !isGlibc()) || common.isWindows)) { assert(stderr.includes('ExampleOwnerClass'), stderr); assert(stderr.includes('CloseCallback'), stderr); diff --git a/test/common/index.js b/test/common/index.js index 8b1001e7e5ec77..c393eac9c3a1f1 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -67,23 +67,6 @@ exports.isOpenBSD = process.platform === 'openbsd'; exports.isLinux = process.platform === 'linux'; exports.isOSX = process.platform === 'darwin'; -let isGlibc; -exports.isGlibc = () => { - if (isGlibc !== undefined) - return isGlibc; - try { - const lddOut = spawnSync('ldd', [process.execPath]).stdout; - const libcInfo = lddOut.toString().split('\n').map( - (line) => line.match(/libc\.so.+=>\s*(\S+)\s/)).filter((info) => info); - if (libcInfo.length === 0) - return isGlibc = false; - const nmOut = spawnSync('nm', ['-D', libcInfo[0][1]]).stdout; - if (/gnu_get_libc_version/.test(nmOut)) - return isGlibc = true; - } catch {} - return isGlibc = false; -}; - exports.enoughTestMem = os.totalmem() > 0x70000000; /* 1.75 Gb */ const cpus = os.cpus(); exports.enoughTestCpu = Array.isArray(cpus) && diff --git a/test/common/index.mjs b/test/common/index.mjs index 74194975f1fc26..3ad51d4cae7e0e 100644 --- a/test/common/index.mjs +++ b/test/common/index.mjs @@ -13,7 +13,6 @@ const { isOpenBSD, isLinux, isOSX, - isGlibc, enoughTestMem, enoughTestCpu, rootDir, @@ -71,7 +70,6 @@ export { isOpenBSD, isLinux, isOSX, - isGlibc, enoughTestMem, enoughTestCpu, rootDir,