summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/node_util.cc1
-rw-r--r--test/parallel/test-util.js18
2 files changed, 19 insertions, 0 deletions
diff --git a/src/node_util.cc b/src/node_util.cc
index a615aa88fd..5f3de643d4 100644
--- a/src/node_util.cc
+++ b/src/node_util.cc
@@ -25,6 +25,7 @@ using v8::Value;
V(isExternal, IsExternal) \
V(isMap, IsMap) \
V(isMapIterator, IsMapIterator) \
+ V(isNativeError, IsNativeError) \
V(isPromise, IsPromise) \
V(isRegExp, IsRegExp) \
V(isSet, IsSet) \
diff --git a/test/parallel/test-util.js b/test/parallel/test-util.js
index fabf9dc22b..c1dc4eadcb 100644
--- a/test/parallel/test-util.js
+++ b/test/parallel/test-util.js
@@ -23,6 +23,7 @@
const common = require('../common');
const assert = require('assert');
const util = require('util');
+const binding = process.binding('util');
const context = require('vm').runInNewContext;
// isArray
@@ -153,3 +154,20 @@ util.print('test');
util.puts('test');
util.debug('test');
util.error('test');
+
+{
+ // binding.isNativeError()
+ assert.strictEqual(binding.isNativeError(new Error()), true);
+ assert.strictEqual(binding.isNativeError(new TypeError()), true);
+ assert.strictEqual(binding.isNativeError(new SyntaxError()), true);
+ assert.strictEqual(binding.isNativeError(new (context('Error'))()), true);
+ assert.strictEqual(binding.isNativeError(new (context('TypeError'))()), true);
+ assert.strictEqual(binding.isNativeError(new (context('SyntaxError'))()),
+ true);
+ assert.strictEqual(binding.isNativeError({}), false);
+ assert.strictEqual(binding.isNativeError({ name: 'Error', message: '' }),
+ false);
+ assert.strictEqual(binding.isNativeError([]), false);
+ assert.strictEqual(binding.isNativeError(Object.create(Error.prototype)),
+ false);
+}