2019-09-25 13:59:52 +00:00
|
|
|
const tape = require('tape');
|
|
|
|
const fs = require('fs');
|
|
|
|
const solc = require('../index.js');
|
|
|
|
|
|
|
|
tape('Deterministic Compilation', function (t) {
|
|
|
|
t.test('DAO', function (st) {
|
|
|
|
var input = {};
|
|
|
|
var prevBytecode = null;
|
|
|
|
var testdir = 'test/DAO/';
|
|
|
|
var files = ['DAO.sol', 'Token.sol', 'TokenCreation.sol', 'ManagedAccount.sol'];
|
|
|
|
var i;
|
|
|
|
for (i in files) {
|
|
|
|
var file = files[i];
|
|
|
|
input[file] = { content: fs.readFileSync(testdir + file, 'utf8') };
|
|
|
|
}
|
|
|
|
for (i = 0; i < 10; i++) {
|
2019-11-21 14:16:55 +00:00
|
|
|
var output = JSON.parse(solc.compile(JSON.stringify({
|
2019-09-25 13:59:52 +00:00
|
|
|
language: 'Solidity',
|
|
|
|
settings: {
|
|
|
|
optimizer: {
|
|
|
|
enabled: true
|
|
|
|
},
|
|
|
|
outputSelection: {
|
|
|
|
'*': {
|
|
|
|
'*': [ 'evm.bytecode' ]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
sources: input
|
|
|
|
})));
|
|
|
|
st.ok(output);
|
|
|
|
st.ok(output.contracts);
|
|
|
|
st.ok(output.contracts['DAO.sol']);
|
|
|
|
st.ok(output.contracts['DAO.sol']['DAO']);
|
|
|
|
st.ok(output.contracts['DAO.sol']['DAO'].evm.bytecode.object);
|
|
|
|
var bytecode = output.contracts['DAO.sol']['DAO'].evm.bytecode.object;
|
|
|
|
st.ok(bytecode.length > 0);
|
|
|
|
if (prevBytecode !== null) {
|
|
|
|
st.equal(prevBytecode, bytecode);
|
|
|
|
}
|
|
|
|
prevBytecode = bytecode;
|
|
|
|
}
|
|
|
|
st.end();
|
|
|
|
});
|
|
|
|
});
|