UNPKG

koffi

Version:

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

62 lines (51 loc) 1.98 kB
const listOfTestModules = require('./listOfTestModules'); const exceptions = require('./exceptions'); const { generateFileContent, writeToBindingFile } = require('./binding-file-template'); const buildDirs = listOfTestModules.dirs; const buildFiles = listOfTestModules.files; /** * @param none * @requires list of files to bind as command-line argument * @returns list of binding configurations */ function generateBindingConfigurations () { const testFilesToBind = process.argv.slice(2); console.log('test modules to bind: ', testFilesToBind); const configs = []; testFilesToBind.forEach((file) => { const configName = file.split('.cc')[0]; if (buildDirs[configName]) { for (const file of buildDirs[configName]) { if (exceptions.skipBinding.includes(file)) continue; configs.push(buildFiles[file]); } } else if (buildFiles[configName]) { configs.push(buildFiles[configName]); } else { console.log('not found', file, configName); } }); return Promise.resolve(configs); } generateBindingConfigurations().then(generateFileContent).then(writeToBindingFile); /** * Test cases * @fires only when run directly from terminal with TEST=true * eg: TEST=true node generate-binding-cc */ if (require.main === module && process.env.TEST === 'true') { const assert = require('assert'); const setArgsAndCall = (fn, filterCondition) => { process.argv = [null, null, ...filterCondition.split(' ')]; return fn(); }; const assertPromise = (promise, expectedVal) => promise.then((val) => assert.deepEqual(val, expectedVal)).catch(console.log); const expectedVal = [{ dir: '', objectName: 'AsyncProgressWorker', propertyName: 'async_progress_worker' }, { dir: '', objectName: 'PersistentAsyncWorker', propertyName: 'persistentasyncworker' }]; assertPromise(setArgsAndCall(generateBindingConfigurations, 'async_progress_worker async_worker_persistent'), expectedVal); }