mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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.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);
 | 
						|
      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();
 | 
						|
  });
 | 
						|
});
 |