-
Notifications
You must be signed in to change notification settings - Fork 471
/
Copy pathgenerate-binding-cc.js
61 lines (51 loc) · 1.93 KB
/
generate-binding-cc.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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);
}