UNPKG

koffi

Version:

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

56 lines (48 loc) 1.65 kB
'use strict'; const assert = require('assert'); if (process.argv[2] === 'runInChildProcess') { const bindingPath = process.argv[3]; const removeHooks = process.argv[4] === 'true'; const binding = require(bindingPath); const actualAdded = binding.env_cleanup.addHooks(removeHooks); const expectedAdded = removeHooks === true ? 0 : 8; assert(actualAdded === expectedAdded, 'Incorrect number of hooks added'); } else { module.exports = require('./common').runTestWithBindingPath(test); } function test (bindingPath) { for (const removeHooks of [false, true]) { const { status, output } = require('./napi_child').spawnSync( process.execPath, [ __filename, 'runInChildProcess', bindingPath, removeHooks ], { encoding: 'utf8' } ); const stdout = output[1].trim(); /** * There is no need to sort the lines, as per Node-API documentation: * > The hooks will be called in reverse order, i.e. the most recently * > added one will be called first. */ const lines = stdout.split(/[\r\n]+/); assert(status === 0, `Process aborted with status ${status}`); if (removeHooks) { assert.deepStrictEqual(lines, [''], 'Child process had console output when none expected'); } else { assert.deepStrictEqual(lines, [ 'lambda cleanup()', 'lambda cleanup(void)', 'lambda cleanup(42)', 'static cleanup()', 'static cleanup()', 'static cleanup(43)', 'static cleanup(42)', 'static cleanup(42)' ], 'Child process console output mismisatch'); } } }