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) {
 | |
|     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();
 | |
|   });
 | |
| });
 |