UNPKG

koffi

Version:

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

50 lines (43 loc) 1.58 kB
'use strict'; const { promisify } = require('util'); const exec = promisify(require('child_process').exec); const { copy, remove } = require('fs-extra'); const path = require('path'); const assert = require('assert'); const ADDONS_FOLDER = path.join(__dirname, 'addons'); const addons = [ 'echo addon', 'echo-addon' ]; async function beforeAll (addons) { console.log(' >Preparing native addons to build'); for (const addon of addons) { await remove(path.join(ADDONS_FOLDER, addon)); await copy(path.join(__dirname, 'tpl'), path.join(ADDONS_FOLDER, addon)); } } async function test (addon) { console.log(` >Building addon: '${addon}'`); await exec('npm install', { cwd: path.join(ADDONS_FOLDER, addon) }); console.log(` >Running test for: '${addon}'`); // Disabled the checks on stderr and stdout because of this issue on npm: // Stop using process.umask(): https://github.com/npm/cli/issues/1103 // We should enable the following checks again after the resolution of // the reported issue. // assert.strictEqual(stderr, ''); // assert.ok(stderr.length === 0); // assert.ok(stdout.length > 0); const binding = require(`${ADDONS_FOLDER}/${addon}`); assert.strictEqual(binding.except.echo('except'), 'except'); assert.strictEqual(binding.except.echo(101), 101); assert.strictEqual(binding.noexcept.echo('noexcept'), 'noexcept'); assert.strictEqual(binding.noexcept.echo(103), 103); } module.exports = (async function () { await beforeAll(addons); for (const addon of addons) { await test(addon); } })();