diff options
author | Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com> | 2024-07-23 20:12:08 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-24 03:12:08 +0000 |
commit | 29934d558c188fdc3406706da19921ca5a389383 (patch) | |
tree | e8fb644f7f90df9ceb32c9bdbba9367aaad833c2 /tests/node_compat/test/parallel/test-os.js | |
parent | 52ababc4bf948904092cff54c2ab8b91f6b9b443 (diff) |
fix(node): Run node compat tests listed in the `ignore` field (and fix the ones that fail) (#24631)
The intent is that those tests will be executed, but our check that the
files are up to date won't overwrite the contents of the tests. This is
useful when a test needs some manual edits to work.
It turns out we weren't actually running them.
---
This ended up turning into a couple of small bug fixes to get the tests
passing:
- We weren't canonicalizing the exec path properly (it sometimes still
had `..` or `.` in it)
- We weren't accepting strings in `process.exit`
There was one failure I couldn't figure out quickly, so I disabled the
test for now, and filed a follow up issue: #24694
Diffstat (limited to 'tests/node_compat/test/parallel/test-os.js')
-rw-r--r-- | tests/node_compat/test/parallel/test-os.js | 280 |
1 files changed, 0 insertions, 280 deletions
diff --git a/tests/node_compat/test/parallel/test-os.js b/tests/node_compat/test/parallel/test-os.js deleted file mode 100644 index 9de4f516f..000000000 --- a/tests/node_compat/test/parallel/test-os.js +++ /dev/null @@ -1,280 +0,0 @@ -// deno-fmt-ignore-file -// deno-lint-ignore-file - -// Copyright Joyent and Node contributors. All rights reserved. MIT license. -// Taken from Node 16.13.0 -// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually - -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; -const common = require('../common'); -const assert = require('assert'); -const os = require('os'); -const path = require('path'); -const { inspect } = require('util'); - -const is = { - number: (value, key) => { - assert(!Number.isNaN(value), `${key} should not be NaN`); - assert.strictEqual(typeof value, 'number'); - }, - string: (value) => { assert.strictEqual(typeof value, 'string'); }, - array: (value) => { assert.ok(Array.isArray(value)); }, - object: (value) => { - assert.strictEqual(typeof value, 'object'); - assert.notStrictEqual(value, null); - } -}; - -/* TODO(kt3k): Enable this test -process.env.TMPDIR = '/tmpdir'; -process.env.TMP = '/tmp'; -process.env.TEMP = '/temp'; -if (common.isWindows) { - assert.strictEqual(os.tmpdir(), '/temp'); - process.env.TEMP = ''; - assert.strictEqual(os.tmpdir(), '/tmp'); - process.env.TMP = ''; - const expected = `${process.env.SystemRoot || process.env.windir}\\temp`; - assert.strictEqual(os.tmpdir(), expected); - process.env.TEMP = '\\temp\\'; - assert.strictEqual(os.tmpdir(), '\\temp'); - process.env.TEMP = '\\tmpdir/'; - assert.strictEqual(os.tmpdir(), '\\tmpdir/'); - process.env.TEMP = '\\'; - assert.strictEqual(os.tmpdir(), '\\'); - process.env.TEMP = 'C:\\'; - assert.strictEqual(os.tmpdir(), 'C:\\'); -} else { - assert.strictEqual(os.tmpdir(), '/tmpdir'); - process.env.TMPDIR = ''; - assert.strictEqual(os.tmpdir(), '/tmp'); - process.env.TMP = ''; - assert.strictEqual(os.tmpdir(), '/temp'); - process.env.TEMP = ''; - assert.strictEqual(os.tmpdir(), '/tmp'); - process.env.TMPDIR = '/tmpdir/'; - assert.strictEqual(os.tmpdir(), '/tmpdir'); - process.env.TMPDIR = '/tmpdir\\'; - assert.strictEqual(os.tmpdir(), '/tmpdir\\'); - process.env.TMPDIR = '/'; - assert.strictEqual(os.tmpdir(), '/'); -} -*/ - -const endianness = os.endianness(); -is.string(endianness); -assert.match(endianness, /[BL]E/); - -const hostname = os.hostname(); -is.string(hostname); -assert.ok(hostname.length > 0); - -// On IBMi, os.uptime() returns 'undefined' -if (!common.isIBMi) { - const uptime = os.uptime(); - is.number(uptime); - assert.ok(uptime > 0); -} - -const cpus = os.cpus(); -is.array(cpus); -assert.ok(cpus.length > 0); -for (const cpu of cpus) { - assert.strictEqual(typeof cpu.model, 'string'); - assert.strictEqual(typeof cpu.speed, 'number'); - assert.strictEqual(typeof cpu.times.user, 'number'); - assert.strictEqual(typeof cpu.times.nice, 'number'); - assert.strictEqual(typeof cpu.times.sys, 'number'); - assert.strictEqual(typeof cpu.times.idle, 'number'); - assert.strictEqual(typeof cpu.times.irq, 'number'); -} - -const type = os.type(); -is.string(type); -assert.ok(type.length > 0); - -const release = os.release(); -is.string(release); -assert.ok(release.length > 0); -// TODO: Check format on more than just AIX -if (common.isAIX) - assert.match(release, /^\d+\.\d+$/); - -const platform = os.platform(); -is.string(platform); -assert.ok(platform.length > 0); - -const availableParallelism = os.availableParallelism(); -assert.ok(availableParallelism === navigator.hardwareConcurrency); - -const arch = os.arch(); -is.string(arch); -assert.ok(arch.length > 0); - -if (!common.isSunOS) { - // not implemented yet - assert.ok(os.loadavg().length > 0); - assert.ok(os.freemem() > 0); - assert.ok(os.totalmem() > 0); -} - -const interfaces = os.networkInterfaces(); -switch (platform) { - case 'linux': { - const filter = (e) => - e.address === '127.0.0.1' && - e.netmask === '255.0.0.0'; - - const actual = interfaces.lo.filter(filter); - const expected = [{ - address: '127.0.0.1', - netmask: '255.0.0.0', - family: 'IPv4', - mac: '00:00:00:00:00:00', - internal: true, - cidr: '127.0.0.1/8' - }]; - assert.deepStrictEqual(actual, expected); - break; - } - case 'win32': { - const filter = (e) => - e.address === '127.0.0.1'; - - const actual = interfaces['Loopback Pseudo-Interface 1'].filter(filter); - const expected = [{ - address: '127.0.0.1', - netmask: '255.0.0.0', - family: 'IPv4', - mac: '00:00:00:00:00:00', - internal: true, - cidr: '127.0.0.1/8' - }]; - assert.deepStrictEqual(actual, expected); - break; - } -} -const netmaskToCIDRSuffixMap = new Map(Object.entries({ - '255.0.0.0': 8, - '255.255.255.0': 24, - 'ffff:ffff:ffff:ffff::': 64, - 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff': 128 -})); - -Object.values(interfaces) - .flat(Infinity) - .map((v) => ({ v, mask: netmaskToCIDRSuffixMap.get(v.netmask) })) - .forEach(({ v, mask }) => { - assert.ok('cidr' in v, `"cidr" prop not found in ${inspect(v)}`); - if (mask) { - assert.strictEqual(v.cidr, `${v.address}/${mask}`); - } - }); - -const EOL = os.EOL; -if (common.isWindows) { - assert.strictEqual(EOL, '\r\n'); -} else { - assert.strictEqual(EOL, '\n'); -} - -const home = os.homedir(); -is.string(home); -assert.ok(home.includes(path.sep)); - -const version = os.version(); -assert.strictEqual(typeof version, 'string'); -assert(version); - -if (common.isWindows && process.env.USERPROFILE) { - assert.strictEqual(home, process.env.USERPROFILE); - delete process.env.USERPROFILE; - assert.ok(os.homedir().includes(path.sep)); - process.env.USERPROFILE = home; -} else if (!common.isWindows && process.env.HOME) { - assert.strictEqual(home, process.env.HOME); - delete process.env.HOME; - assert.ok(os.homedir().includes(path.sep)); - process.env.HOME = home; -} - -const pwd = os.userInfo(); -is.object(pwd); -const pwdBuf = os.userInfo({ encoding: 'buffer' }); - -if (common.isWindows) { - assert.strictEqual(pwd.uid, -1); - assert.strictEqual(pwd.gid, -1); - assert.strictEqual(pwd.shell, null); - assert.strictEqual(pwdBuf.uid, -1); - assert.strictEqual(pwdBuf.gid, -1); - assert.strictEqual(pwdBuf.shell, null); -} else { - is.number(pwd.uid); - is.number(pwd.gid); - assert.strictEqual(typeof pwd.shell, 'string'); - // It's possible for /etc/passwd to leave the user's shell blank. - if (pwd.shell.length > 0) { - assert(pwd.shell.includes(path.sep)); - } - assert.strictEqual(pwd.uid, pwdBuf.uid); - assert.strictEqual(pwd.gid, pwdBuf.gid); - assert.strictEqual(pwd.shell, pwdBuf.shell.toString('utf8')); -} - -is.string(pwd.username); -assert.ok(pwd.homedir.includes(path.sep)); -assert.strictEqual(pwd.username, pwdBuf.username.toString('utf8')); -assert.strictEqual(pwd.homedir, pwdBuf.homedir.toString('utf8')); - - -assert.strictEqual(`${os.hostname}`, os.hostname()); -assert.strictEqual(`${os.homedir}`, os.homedir()); -assert.strictEqual(`${os.release}`, os.release()); -assert.strictEqual(`${os.type}`, os.type()); -assert.strictEqual(`${os.endianness}`, os.endianness()); -// TODO(kt3k): Enable this test -// assert.strictEqual(`${os.tmpdir}`, os.tmpdir()); -assert.strictEqual(`${os.arch}`, os.arch()); -assert.strictEqual(`${os.platform}`, os.platform()); -assert.strictEqual(`${os.version}`, os.version()); - -assert.strictEqual(+os.totalmem, os.totalmem()); - -// Assert that the following values are coercible to numbers. -// On IBMi, os.uptime() returns 'undefined' -if (!common.isIBMi) { - is.number(+os.uptime, 'uptime'); - is.number(os.uptime(), 'uptime'); -} - -is.number(+os.freemem, 'freemem'); -is.number(os.freemem(), 'freemem'); - -const devNull = os.devNull; -if (common.isWindows) { - assert.strictEqual(devNull, '\\\\.\\nul'); -} else { - assert.strictEqual(devNull, '/dev/null'); -} |