remix-project mirror
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
remix-project/ci/makeMockCompiler.js

56 lines
1.5 KiB

var fs = require('fs');
var solc = require('solc/wrapper');
var soljson = require('../soljson');
var compiler = solc(soljson);
var inputs = require('../test-browser/mockcompiler/requests.js');
var compilationResult = gatherCompilationResults(inputs);
replaceSolCompiler(compilationResult);
function gatherCompilationResults (sol) {
var compilationResult = {};
for (var k in sol) {
var item = sol[k];
var result = compile(item, 1);
compilationResult[result.key] = result;
result = compile(item, 0);
compilationResult[result.key] = result;
}
return compilationResult;
}
function compile (source, optimization) {
var missingInputs = [];
var result = compiler.compile(source, optimization, function (path) {
missingInputs.push(path);
});
var key = optimization.toString();
for (var k in source.sources) {
key += k + source.sources[k];
}
key = key.replace(/(\t)|(\n)|( )/g, '');
return {
key: key,
source: source,
optimization: optimization,
missingInputs: missingInputs,
result: result
};
}
function replaceSolCompiler (results) {
fs.readFile('./test-browser/mockcompiler/compiler.js', 'utf8', function (error, data) {
if (error) {
console.log(error);
process.exit(1);
return;
}
data = data + '\n\nvar mockData = ' + JSON.stringify(results) + ';\n';
fs.writeFile('./soljson.js', data, 'utf8', function (error) {
if (error) {
console.log(error);
process.exit(1);
return;
}
});
});
}