UNPKG

koffi

Version:

Fast and simple C FFI (foreign function interface) for Node.js

51 lines (43 loc) 1.27 kB
'use strict'; const assert = require('assert'); const { whichBuildType } = require('../common'); const napiChild = require('../napi_child'); module.exports = async function wrapTest () { const buildType = await whichBuildType(); test(require(`../build/${buildType}/binding_noexcept_maybe.node`).maybe_check); }; function test (binding) { if (process.argv.includes('child')) { child(binding); return; } const cp = napiChild.spawn(process.execPath, [__filename, 'child'], { stdio: ['ignore', 'inherit', 'pipe'] }); cp.stderr.setEncoding('utf8'); let stderr = ''; cp.stderr.on('data', chunk => { stderr += chunk; }); cp.on('exit', (code, signal) => { if (process.platform === 'win32') { assert.strictEqual(code, 128 + 6 /* SIGABRT */); } else { assert.strictEqual(signal, 'SIGABRT'); } assert.ok(stderr.match(/FATAL ERROR: Napi::Maybe::Check Maybe value is Nothing./)); }); } function child (binding) { const MAGIC_NUMBER = 12459062; binding.normalJsCallback(() => { return MAGIC_NUMBER; }, MAGIC_NUMBER); binding.testMaybeOverloadOp( () => { return MAGIC_NUMBER; }, () => { throw Error('Foobar'); } ); binding.voidCallback(() => { throw new Error('foobar'); }); }