2017-03-21 05:55:26 +08:00
|
|
|
'use strict';
|
|
|
|
const common = require('../../common');
|
|
|
|
const assert = require('assert');
|
2019-02-18 06:45:14 +08:00
|
|
|
const { Worker } = require('worker_threads');
|
|
|
|
|
2018-04-21 10:57:33 +08:00
|
|
|
const bindingPath = require.resolve(`./build/${common.buildType}/binding`);
|
|
|
|
const binding = require(bindingPath);
|
|
|
|
assert.strictEqual(binding.hello(), 'world');
|
|
|
|
console.log('binding.hello() =', binding.hello());
|
2017-03-21 05:55:26 +08:00
|
|
|
|
2018-04-21 10:57:33 +08:00
|
|
|
// Test multiple loading of the same module.
|
|
|
|
delete require.cache[bindingPath];
|
|
|
|
const rebinding = require(bindingPath);
|
|
|
|
assert.strictEqual(rebinding.hello(), 'world');
|
|
|
|
assert.notStrictEqual(binding.hello, rebinding.hello);
|
2019-02-18 06:45:14 +08:00
|
|
|
|
|
|
|
// Test that workers can load addons declared using NAPI_MODULE_INIT().
|
|
|
|
new Worker(`
|
|
|
|
const { parentPort } = require('worker_threads');
|
|
|
|
const msg = require(${JSON.stringify(bindingPath)}).hello();
|
|
|
|
parentPort.postMessage(msg)`, { eval: true })
|
|
|
|
.on('message', common.mustCall((msg) => assert.strictEqual(msg, 'world')));
|