def test_generate_graph(self): for input_file in TESTDATA_INPUTS.iterdir(): output_expected = TESTDATA_OUTPUTS_EXPECTED / ( input_file.name + ".graph.html" ) output_current = TESTDATA_OUTPUTS_CURRENT / ( input_file.name + ".graph.html" ) contract = EVMContract(input_file.read_text()) sym = SymExecWrapper( contract, address=(util.get_indexed_address(0)), strategy="dfs", transaction_count=1, execution_timeout=5, ) html = generate_graph(sym) output_current.write_text(html) lines_expected = re.findall( r"'label': '.*'", str(output_current.read_text()) ) lines_found = re.findall(r"'label': '.*'", str(output_current.read_text())) if not (lines_expected == lines_found): self.found_changed_files(input_file, output_expected, output_current) self.assert_and_show_changed_files()
def test_generate_graph(self): for input_file in TESTDATA_INPUTS.iterdir(): output_expected = TESTDATA_OUTPUTS_EXPECTED / (input_file.name + ".graph.html") output_current = TESTDATA_OUTPUTS_CURRENT / (input_file.name + ".graph.html") contract = EVMContract(input_file.read_text()) disassembler = MythrilDisassembler() disassembler.contracts.append(contract) analyzer = MythrilAnalyzer( disassembler=disassembler, strategy="dfs", execution_timeout=5, max_depth=30, address=(util.get_indexed_address(0)), ) html = analyzer.graph_html(transaction_count=1) output_current.write_text(html) lines_expected = re.findall(r"'label': '.*'", str(output_current.read_text())) lines_found = re.findall(r"'label': '.*'", str(output_current.read_text())) if not (lines_expected == lines_found): self.found_changed_files(input_file, output_expected, output_current) self.assert_and_show_changed_files()
def _generate_report(input_file): contract = EVMContract(input_file.read_text(), enable_online_lookup=False) sym = SymExecWrapper( contract, address=(util.get_indexed_address(0)), strategy="dfs", execution_timeout=30, transaction_count=1, ) issues = fire_lasers(sym) report = Report() for issue in issues: issue.filename = "test-filename.sol" report.append_issue(issue) return report, input_file