diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2018-01-17 03:21:16 +0800 |
---|---|---|
committer | Joyee Cheung <joyeec9h3@gmail.com> | 2018-01-20 08:51:47 +0800 |
commit | 4af1bba6d0f1da1b4d444ef3a936e2ef2c639a1e (patch) | |
tree | ae8a75b9ac85984da88ee4af569215b94befd1b5 /test/parallel/test-uv-errno.js | |
parent | cbd634947d3aa308266ac6192a5af0a30445a449 (diff) | |
download | node-new-4af1bba6d0f1da1b4d444ef3a936e2ef2c639a1e.tar.gz |
util: implement util.getSystemErrorName()
Reimplement uv.errname() as internal/util.getSystemErrorName() to
avoid the memory leaks caused by unknown error codes
and avoid calling into C++ for the error names. Also
expose it as a public API for external use.
PR-URL: https://github.com/nodejs/node/pull/18186
Refs: http://docs.libuv.org/en/v1.x/errors.html#c.uv_err_name
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Diffstat (limited to 'test/parallel/test-uv-errno.js')
-rw-r--r-- | test/parallel/test-uv-errno.js | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/test/parallel/test-uv-errno.js b/test/parallel/test-uv-errno.js index e4a40f20c8..8b10b52c00 100644 --- a/test/parallel/test-uv-errno.js +++ b/test/parallel/test-uv-errno.js @@ -2,9 +2,12 @@ const common = require('../common'); const assert = require('assert'); -const util = require('util'); -const uv = process.binding('uv'); +const { + getSystemErrorName, + _errnoException +} = require('util'); +const uv = process.binding('uv'); const keys = Object.keys(uv); keys.forEach((key) => { @@ -12,33 +15,39 @@ keys.forEach((key) => { return; assert.doesNotThrow(() => { - const err = util._errnoException(uv[key], 'test'); + const err = _errnoException(uv[key], 'test'); const name = uv.errname(uv[key]); - assert.strictEqual(err.code, err.errno); + assert.strictEqual(getSystemErrorName(uv[key]), name); assert.strictEqual(err.code, name); + assert.strictEqual(err.code, err.errno); assert.strictEqual(err.message, `test ${name}`); }); }); -['test', {}, []].forEach((key) => { - common.expectsError( - () => util._errnoException(key), - { - code: 'ERR_INVALID_ARG_TYPE', - type: TypeError, - message: 'The "err" argument must be of type number. ' + - `Received type ${typeof key}` - }); -}); +function runTest(fn) { + ['test', {}, []].forEach((err) => { + common.expectsError( + () => fn(err), + { + code: 'ERR_INVALID_ARG_TYPE', + type: TypeError, + message: 'The "err" argument must be of type number. ' + + `Received type ${typeof err}` + }); + }); -[0, 1, Infinity, -Infinity, NaN].forEach((key) => { - common.expectsError( - () => util._errnoException(key), - { - code: 'ERR_OUT_OF_RANGE', - type: RangeError, - message: 'The value of "err" is out of range. ' + - 'It must be a negative integer. ' + - `Received ${key}` - }); -}); + [0, 1, Infinity, -Infinity, NaN].forEach((err) => { + common.expectsError( + () => fn(err), + { + code: 'ERR_OUT_OF_RANGE', + type: RangeError, + message: 'The value of "err" is out of range. ' + + 'It must be a negative integer. ' + + `Received ${err}` + }); + }); +} + +runTest(_errnoException); +runTest(getSystemErrorName); |