41 lines
1.6 KiB
JavaScript
41 lines
1.6 KiB
JavaScript
var fs = require('fs');
|
|
var util = require('util');
|
|
var exec = require('child_process').exec;
|
|
|
|
module.exports = function () {
|
|
this.runBin = (bin, options, callback) => {
|
|
var opts = options.slice();
|
|
|
|
if (opts.match('{osm_base}')) {
|
|
if (!this.osmData.osmFile) throw new Error('*** {osm_base} is missing');
|
|
opts = opts.replace('{osm_base}', this.osmData.osmFile);
|
|
}
|
|
|
|
if (opts.match('{extracted_base}')) {
|
|
if (!this.osmData.extractedFile) throw new Error('*** {extracted_base} is missing');
|
|
opts = opts.replace('{extracted_base}', this.osmData.extractedFile);
|
|
}
|
|
|
|
if (opts.match('{contracted_base}')) {
|
|
if (!this.osmData.contractedFile) throw new Error('*** {contracted_base} is missing');
|
|
opts = opts.replace('{contracted_base}', this.osmData.contractedFile);
|
|
}
|
|
|
|
if (opts.match('{profile}')) {
|
|
opts = opts.replace('{profile}', [this.PROFILES_PATH, this.profile + '.lua'].join('/'));
|
|
}
|
|
|
|
var cmd = util.format('%s%s/%s%s%s %s 2>%s', this.QQ, this.BIN_PATH, bin, this.EXE, this.QQ, opts, this.ERROR_LOG_FILE);
|
|
process.chdir(this.TEST_FOLDER);
|
|
exec(cmd, (err, stdout, stderr) => {
|
|
this.stdout = stdout.toString();
|
|
fs.readFile(this.ERROR_LOG_FILE, (e, data) => {
|
|
this.stderr = data ? data.toString() : '';
|
|
this.exitCode = err && err.code || 0;
|
|
process.chdir('../');
|
|
callback(err, stdout, stderr);
|
|
});
|
|
});
|
|
};
|
|
};
|