Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 3 additions & 8 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
sudo: false

env:
- CXX=g++-4.9
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.9

language: node_js

node_js:
- "4"
- "6"
- "8"
- "9"
- "14"
- "15"
- "16"

after_success:
- npm install coveralls
Expand Down
6 changes: 2 additions & 4 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@ environment:
# Test against these versions of Node.js and io.js
matrix:
# node.js
- nodejs_version: "4"
- nodejs_version: "6"
- nodejs_version: "8"
- nodejs_version: "9"
- nodejs_version: "14"
- nodejs_version: "15"

platform:
- x86
Expand Down
16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@
"main": "./lib/union.js",
"license": "MIT",
"scripts": {
"test": "node-gyp rebuild --directory test && mocha -gc --reporter spec"
"test": "node-gyp rebuild --directory test && mocha --expose-gc --reporter spec"
},
"dependencies": {
"debug": "^3.1.0"
"debug": "^4.3.1"
},
"devDependencies": {
"bindings": "^1.3.0",
"mocha": "^5.0.0",
"nan": "^2.8.0",
"nyc": "^12.0.1",
"ref": "^1.3.5",
"ref-struct-di": "^1.1.0"
"mocha": "^7.1.1",
"node-addon-api": "^3.0.0",
"node-gyp-build": "^4.2.1",
"nyc": "^15.0.0",
"ref-napi": "^3.0.2",
"ref-struct-di": "^1.1.1"
}
}
26 changes: 19 additions & 7 deletions test/binding.gyp
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
{
'targets': [
{
'target_name': 'native_tests',
'sources': [ 'native_tests.cc' ],
'include_dirs': [
'<!(node -e "require(\'nan\')")'
],
{
'target_name': 'native_tests',
'sources': [ 'native_tests.cc' ],
'include_dirs': [
"<!@(node -p \"require('node-addon-api').include\")"
],
'dependencies': [
"<!(node -p \"require('node-addon-api').gyp\")"
],
'cflags!': [ '-fno-exceptions' ],
'cflags_cc!': [ '-fno-exceptions' ],
'xcode_settings': {
'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
'CLANG_CXX_LIBRARY': 'libc++',
'MACOSX_DEPLOYMENT_TARGET': '10.7',
},
'msvs_settings': {
'VCCLCompilerTool': { 'ExceptionHandling': 1 },
}
]
}]
}
99 changes: 50 additions & 49 deletions test/native_tests.cc
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#include <stdlib.h>
#include "nan.h"
#include "napi.h"

#ifdef _WIN32
#define __alignof__ __alignof
#endif

using namespace node;
using namespace Napi;

namespace {

Expand Down Expand Up @@ -58,54 +58,55 @@ typedef union _test8 {
} test8;


void Initialize(v8::Handle<v8::Object> target) {
Nan::HandleScope scope;

Nan::Set(target, Nan::New<v8::String>("test1 sizeof").ToLocalChecked(), Nan::New<v8::Number>(sizeof(test1)));
Nan::Set(target, Nan::New<v8::String>("test1 alignof").ToLocalChecked(), Nan::New<v8::Number>(__alignof__(test1)));
Nan::Set(target, Nan::New<v8::String>("test1 offsetof a").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test1, a)));
Nan::Set(target, Nan::New<v8::String>("test1 offsetof b").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test1, b)));

Nan::Set(target, Nan::New<v8::String>("test2 sizeof").ToLocalChecked(), Nan::New<v8::Number>(sizeof(test2)));
Nan::Set(target, Nan::New<v8::String>("test2 alignof").ToLocalChecked(), Nan::New<v8::Number>(__alignof__(test2)));
Nan::Set(target, Nan::New<v8::String>("test2 offsetof a").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test2, a)));
Nan::Set(target, Nan::New<v8::String>("test2 offsetof b").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test2, b)));

Nan::Set(target, Nan::New<v8::String>("test3 sizeof").ToLocalChecked(), Nan::New<v8::Number>(sizeof(test3)));
Nan::Set(target, Nan::New<v8::String>("test3 alignof").ToLocalChecked(), Nan::New<v8::Number>(__alignof__(test3)));
Nan::Set(target, Nan::New<v8::String>("test3 offsetof a").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test3, a)));
Nan::Set(target, Nan::New<v8::String>("test3 offsetof b").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test3, b)));
Nan::Set(target, Nan::New<v8::String>("test3 offsetof c").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test3, c)));

Nan::Set(target, Nan::New<v8::String>("test4 sizeof").ToLocalChecked(), Nan::New<v8::Number>(sizeof(test4)));
Nan::Set(target, Nan::New<v8::String>("test4 alignof").ToLocalChecked(), Nan::New<v8::Number>(__alignof__(test4)));
Nan::Set(target, Nan::New<v8::String>("test4 offsetof a").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test4, a)));
Nan::Set(target, Nan::New<v8::String>("test4 offsetof b").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test4, b)));

Nan::Set(target, Nan::New<v8::String>("test5 sizeof").ToLocalChecked(), Nan::New<v8::Number>(sizeof(test5)));
Nan::Set(target, Nan::New<v8::String>("test5 alignof").ToLocalChecked(), Nan::New<v8::Number>(__alignof__(test5)));
Nan::Set(target, Nan::New<v8::String>("test5 offsetof a").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test5, a)));
Nan::Set(target, Nan::New<v8::String>("test5 offsetof b").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test5, b)));

Nan::Set(target, Nan::New<v8::String>("test6 sizeof").ToLocalChecked(), Nan::New<v8::Number>(sizeof(test6)));
Nan::Set(target, Nan::New<v8::String>("test6 alignof").ToLocalChecked(), Nan::New<v8::Number>(__alignof__(test6)));
Nan::Set(target, Nan::New<v8::String>("test6 offsetof a").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test6, a)));
Nan::Set(target, Nan::New<v8::String>("test6 offsetof b").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test6, b)));

Nan::Set(target, Nan::New<v8::String>("test7 sizeof").ToLocalChecked(), Nan::New<v8::Number>(sizeof(test7)));
Nan::Set(target, Nan::New<v8::String>("test7 alignof").ToLocalChecked(), Nan::New<v8::Number>(__alignof__(test7)));
Nan::Set(target, Nan::New<v8::String>("test7 offsetof a").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test7, a)));
Nan::Set(target, Nan::New<v8::String>("test7 offsetof b").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test7, b)));
Nan::Set(target, Nan::New<v8::String>("test7 offsetof c").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test7, c)));
Nan::Set(target, Nan::New<v8::String>("test7 offsetof d").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test7, d)));

Nan::Set(target, Nan::New<v8::String>("test8 sizeof").ToLocalChecked(), Nan::New<v8::Number>(sizeof(test8)));
Nan::Set(target, Nan::New<v8::String>("test8 alignof").ToLocalChecked(), Nan::New<v8::Number>(__alignof__(test8)));
Nan::Set(target, Nan::New<v8::String>("test8 offsetof a").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test8, a)));
Nan::Set(target, Nan::New<v8::String>("test8 offsetof b").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test8, b)));
Nan::Set(target, Nan::New<v8::String>("test8 offsetof c").ToLocalChecked(), Nan::New<v8::Number>(offsetof(test8, c)));
Object Initialize(Env env, Object exports) {

exports.Set("test1 sizeof", sizeof(test1));
exports.Set("test1 alignof", __alignof__(test1));
exports.Set("test1 offsetof a", offsetof(test1, a));
exports.Set("test1 offsetof b", offsetof(test1, b));

exports.Set("test2 sizeof", sizeof(test2));
exports.Set("test2 alignof", __alignof__(test2));
exports.Set("test2 offsetof a", offsetof(test2, a));
exports.Set("test2 offsetof b", offsetof(test2, b));

exports.Set("test3 sizeof", sizeof(test3));
exports.Set("test3 alignof", __alignof__(test3));
exports.Set("test3 offsetof a", offsetof(test3, a));
exports.Set("test3 offsetof b", offsetof(test3, b));
exports.Set("test3 offsetof c", offsetof(test3, c));

exports.Set("test4 sizeof", sizeof(test4));
exports.Set("test4 alignof", __alignof__(test4));
exports.Set("test4 offsetof a", offsetof(test4, a));
exports.Set("test4 offsetof b", offsetof(test4, b));

exports.Set("test5 sizeof", sizeof(test5));
exports.Set("test5 alignof", __alignof__(test5));
exports.Set("test5 offsetof a", offsetof(test5, a));
exports.Set("test5 offsetof b", offsetof(test5, b));

exports.Set("test6 sizeof", sizeof(test6));
exports.Set("test6 alignof", __alignof__(test6));
exports.Set("test6 offsetof a", offsetof(test6, a));
exports.Set("test6 offsetof b", offsetof(test6, b));

exports.Set("test7 sizeof", sizeof(test7));
exports.Set("test7 alignof", __alignof__(test7));
exports.Set("test7 offsetof a", offsetof(test7, a));
exports.Set("test7 offsetof b", offsetof(test7, b));
exports.Set("test7 offsetof c", offsetof(test7, c));
exports.Set("test7 offsetof d", offsetof(test7, d));

exports.Set("test8 sizeof", sizeof(test8));
exports.Set("test8 alignof", __alignof__(test8));
exports.Set("test8 offsetof a", offsetof(test8, a));
exports.Set("test8 offsetof b", offsetof(test8, b));
exports.Set("test8 offsetof c", offsetof(test8, c));

return exports;
}

} // anonymous namespace

NODE_MODULE(native_tests, Initialize);
NODE_API_MODULE(native_tests, Initialize);
4 changes: 2 additions & 2 deletions test/union.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

var assert = require('assert')
, ref = require('ref')
, ref = require('ref-napi')
, Struct = require('ref-struct-di')(ref)
, Union = require('../')(ref)
, bindings = require('bindings')({ module_root: __dirname, bindings: 'native_tests' })
, bindings = require('node-gyp-build')(__dirname);

describe('Union', function () {

Expand Down