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) {
const input = {};
let prevBytecode = null;
const testdir = 'test/DAO/';
const files = ['DAO.sol', 'Token.sol', 'TokenCreation.sol', 'ManagedAccount.sol'];
let i;
for (i in files) {
const file = files[i];
input[file] = { content: fs.readFileSync(testdir + file, 'utf8') };
}
for (i = 0; i < 10; i++) {
const output = JSON.parse(solc.compile(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);
const 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();
});
});