diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2016-11-18 23:02:00 +0100 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2016-11-21 14:34:25 +0100 |
commit | 13c4f44e974534951564c110b0e718fb5c642464 (patch) | |
tree | c396083f0fcf6634edb0492b21771eff5e2c5670 | |
parent | 515b1f397208c1c47eb50fca0f1ca374ba4fa71b (diff) | |
download | android-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.cc | 16 | ||||
-rw-r--r-- | test/addons/new-target/binding.gyp | 9 | ||||
-rw-r--r-- | test/addons/new-target/test.js | 18 |
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); |