from pathlib import Path
from unittest import TestCase
import os
import shutil
TESTS_DIR = Path ( __file__ ) . parent
PROJECT_DIR = TESTS_DIR . parent
TESTDATA = TESTS_DIR / " testdata "
TESTDATA_INPUTS = TESTDATA / " inputs "
TESTDATA_INPUTS_CONTRACTS = TESTDATA / " input_contracts "
TESTDATA_OUTPUTS_EXPECTED = TESTDATA / " outputs_expected "
TESTDATA_OUTPUTS_CURRENT = TESTDATA / " outputs_current "
TESTDATA_OUTPUTS_CURRENT_LASER_RESULT = TESTDATA / " outputs_current_laser_result "
TESTDATA_OUTPUTS_EXPECTED_LASER_RESULT = TESTDATA / " outputs_expected_laser_result "
MYTHRIL_DIR = TESTS_DIR / " mythril_dir "
class BaseTestCase ( TestCase ) :
def setUp ( self ) :
self . changed_files = [ ]
self . ori_mythril_dir = getattr ( os . environ , " MYTHRIL_DIR " , " " )
os . environ [ " MYTHRIL_DIR " ] = str ( MYTHRIL_DIR )
shutil . copyfile (
str ( MYTHRIL_DIR / " signatures.json.example " ) ,
str ( MYTHRIL_DIR / " signatures.json " ) ,
)
def tearDown ( self ) :
os . environ [ " MYTHRIL_DIR " ] = self . ori_mythril_dir
os . remove ( str ( MYTHRIL_DIR / " signatures.json " ) )
def compare_files_error_message ( self ) :
message = " Following output files are changed, compare them manually to see differences: \n "
for ( input_file , expected , current ) in self . changed_files :
message + = " {} : \n " . format ( input_file . name )
message + = " - {} \n " . format ( str ( expected ) )
message + = " - {} \n " . format ( str ( current ) )
return message
def found_changed_files ( self , input_file , output_expected , output_current ) :
self . changed_files . append ( ( input_file , output_expected , output_current ) )
def assert_and_show_changed_files ( self ) :
self . assertEqual (
0 , len ( self . changed_files ) , msg = self . compare_files_error_message ( )
)