Esempio n. 1
0
 def test_run_solc_with_remappings(self):
     source_a = '''
     import "test/B.sol";
     contract A {
         function callB(B _b) public { _b.fromA(); }
         function fromB() public { revert(); }
     }
     '''
     source_b = '''
     import "../A.sol";
     contract B {
         function callA(A _a) public { _a.fromB(); }
         function fromA() public { revert(); }
     }
     '''
     d = tempfile.mkdtemp()
     lib_dir = os.path.join(d, 'lib')
     os.makedirs(lib_dir)
     try:
         with open(os.path.join(d, 'A.sol'),
                   'w') as a, open(os.path.join(lib_dir, 'B.sol'),
                                   'w') as b:
             a.write(source_a)
             a.flush()
             b.write(source_b)
             b.flush()
             output, warnings = ManticoreEVM._run_solc(
                 a, solc_remaps=['test=lib'])
             source_list = output.get('sourceList', [])
             self.assertIn("A.sol", source_list)
             self.assertIn("lib/B.sol", source_list)
     finally:
         shutil.rmtree(d)
Esempio n. 2
0
 def test_run_solc(self):
     source_a = '''
     import "./B.sol";
     contract A {
         function callB(B _b) public { _b.fromA(); }
         function fromB() public { revert(); }
     }
     '''
     source_b = '''
     import "./A.sol";
     contract B {
         function callA(A _a) public { _a.fromB(); }
         function fromA() public { revert(); }
     }
     '''
     d = tempfile.mkdtemp()
     try:
         with open(os.path.join(d, 'A.sol'),
                   'w') as a, open(os.path.join(d, 'B.sol'), 'w') as b:
             a.write(source_a)
             a.flush()
             b.write(source_b)
             b.flush()
             output, warnings = ManticoreEVM._run_solc(a)
             source_list = output.get('sourceList', [])
             self.assertIn(os.path.split(a.name)[-1], source_list)
             self.assertIn(os.path.split(b.name)[-1], source_list)
     finally:
         shutil.rmtree(d)