solidity/test/externalTests/solc-js/determinism.js

46 lines
1.3 KiB
JavaScript
Raw Normal View History

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++) {
var output = JSON.parse(solc.compileStandardWrapper(JSON.stringify({
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();
});
});