1// Flags: --expose-internals 2'use strict'; 3 4const common = require('../common'); 5const assert = require('assert'); 6const { 7 getSystemErrorName, 8 _errnoException 9} = require('util'); 10 11const { internalBinding } = require('internal/test/binding'); 12const uv = internalBinding('uv'); 13const keys = Object.keys(uv); 14 15assert.strictEqual(uv.errname(-111111), 'Unknown system error -111111'); 16 17keys.forEach((key) => { 18 if (!key.startsWith('UV_')) 19 return; 20 21 const err = _errnoException(uv[key], 'test'); 22 const name = uv.errname(uv[key]); 23 assert.strictEqual(getSystemErrorName(uv[key]), name); 24 assert.strictEqual(err.code, name); 25 assert.strictEqual(err.code, getSystemErrorName(err.errno)); 26 assert.strictEqual(err.message, `test ${name}`); 27}); 28 29function runTest(fn) { 30 ['test', {}, []].forEach((err) => { 31 assert.throws( 32 () => fn(err), 33 { 34 code: 'ERR_INVALID_ARG_TYPE', 35 name: 'TypeError', 36 message: 'The "err" argument must be of type number.' + 37 common.invalidArgTypeHelper(err) 38 }); 39 }); 40 41 [0, 1, Infinity, -Infinity, NaN].forEach((err) => { 42 assert.throws( 43 () => fn(err), 44 { 45 code: 'ERR_OUT_OF_RANGE', 46 name: 'RangeError', 47 message: 'The value of "err" is out of range. ' + 48 'It must be a negative integer. ' + 49 `Received ${err}` 50 }); 51 }); 52} 53 54runTest(_errnoException); 55runTest(getSystemErrorName); 56