aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2016-11-18 23:02:00 +0100
committerBen Noordhuis <info@bnoordhuis.nl>2016-11-21 14:34:25 +0100
commit13c4f44e974534951564c110b0e718fb5c642464 (patch)
treec396083f0fcf6634edb0492b21771eff5e2c5670
parent515b1f397208c1c47eb50fca0f1ca374ba4fa71b (diff)
downloadandroid-node-v8-13c4f44e974534951564c110b0e718fb5c642464.tar.gz
android-node-v8-13c4f44e974534951564c110b0e718fb5c642464.tar.bz2
android-node-v8-13c4f44e974534951564c110b0e718fb5c642464.zip
test: add new.target add-on regression test
Add a test that checks that new.target inheritance works when inheriting from a constructor defined in C++. PR-URL: https://github.com/nodejs/node/pull/9689 Refs: https://github.com/nodejs/node/issues/9288 Refs: https://github.com/nodejs/node/pull/9293 Reviewed-By: Anna Henningsen <anna@addaleax.net>
-rw-r--r--test/addons/new-target/binding.cc16
-rw-r--r--test/addons/new-target/binding.gyp9
-rw-r--r--test/addons/new-target/test.js18
3 files changed, 43 insertions, 0 deletions
diff --git a/test/addons/new-target/binding.cc b/test/addons/new-target/binding.cc
new file mode 100644
index 0000000000..a7e18eff70
--- /dev/null
+++ b/test/addons/new-target/binding.cc
@@ -0,0 +1,16 @@
+#include <node.h>
+#include <v8.h>
+
+namespace {
+
+inline void NewClass(const v8::FunctionCallbackInfo<v8::Value>&) {}
+
+inline void Initialize(v8::Local<v8::Object> binding) {
+ auto isolate = binding->GetIsolate();
+ binding->Set(v8::String::NewFromUtf8(isolate, "Class"),
+ v8::FunctionTemplate::New(isolate, NewClass)->GetFunction());
+}
+
+NODE_MODULE(binding, Initialize)
+
+} // anonymous namespace
diff --git a/test/addons/new-target/binding.gyp b/test/addons/new-target/binding.gyp
new file mode 100644
index 0000000000..7ede63d94a
--- /dev/null
+++ b/test/addons/new-target/binding.gyp
@@ -0,0 +1,9 @@
+{
+ 'targets': [
+ {
+ 'target_name': 'binding',
+ 'defines': [ 'V8_DEPRECATION_WARNINGS=1' ],
+ 'sources': [ 'binding.cc' ]
+ }
+ ]
+}
diff --git a/test/addons/new-target/test.js b/test/addons/new-target/test.js
new file mode 100644
index 0000000000..e4864adb1c
--- /dev/null
+++ b/test/addons/new-target/test.js
@@ -0,0 +1,18 @@
+'use strict';
+
+const common = require('../../common');
+const assert = require('assert');
+const binding = require(`./build/${common.buildType}/binding`);
+
+class Class extends binding.Class {
+ constructor() {
+ super();
+ this.method();
+ }
+ method() {
+ this.ok = true;
+ }
+}
+
+assert.ok(new Class() instanceof binding.Class);
+assert.ok(new Class().ok);