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>
This commit is contained in:
parent
515b1f3972
commit
13c4f44e97
16
test/addons/new-target/binding.cc
Normal file
16
test/addons/new-target/binding.cc
Normal file
@ -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
|
9
test/addons/new-target/binding.gyp
Normal file
9
test/addons/new-target/binding.gyp
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
'targets': [
|
||||
{
|
||||
'target_name': 'binding',
|
||||
'defines': [ 'V8_DEPRECATION_WARNINGS=1' ],
|
||||
'sources': [ 'binding.cc' ]
|
||||
}
|
||||
]
|
||||
}
|
18
test/addons/new-target/test.js
Normal file
18
test/addons/new-target/test.js
Normal file
@ -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);
|
Loading…
x
Reference in New Issue
Block a user