summaryrefslogtreecommitdiff
path: root/test/parallel/test-uv-errno.js
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2018-01-17 03:21:16 +0800
committerJoyee Cheung <joyeec9h3@gmail.com>2018-01-20 08:51:47 +0800
commit4af1bba6d0f1da1b4d444ef3a936e2ef2c639a1e (patch)
treeae8a75b9ac85984da88ee4af569215b94befd1b5 /test/parallel/test-uv-errno.js
parentcbd634947d3aa308266ac6192a5af0a30445a449 (diff)
downloadnode-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.js59
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);