Static Analyzer for Solidity
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
slither/tests/unit/core/test_name_resolution.py

46 lines
1.5 KiB

1 year ago
from pathlib import Path
from slither import Slither
TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data"
NAME_RESOLUTION_TEST_ROOT = Path(TEST_DATA_DIR, "name_resolution")
def _sort_references_lines(refs: list) -> list:
return sorted([ref.lines[0] for ref in refs])
def test_name_resolution_compact(solc_binary_path) -> None:
solc_path = solc_binary_path("0.8.0")
slither = Slither(
Path(NAME_RESOLUTION_TEST_ROOT, "shadowing_compact.sol").as_posix(), solc=solc_path
)
contract = slither.get_contract_from_name("B")[0]
x = contract.get_state_variable_from_name("x")
assert _sort_references_lines(x.references) == [5]
def test_name_resolution_legacy_post_0_5_0(solc_binary_path) -> None:
solc_path = solc_binary_path("0.5.0")
slither = Slither(
Path(NAME_RESOLUTION_TEST_ROOT, "shadowing_legacy_post_0_5_0.sol").as_posix(),
solc=solc_path,
)
contract = slither.get_contract_from_name("B")[0]
x = contract.get_state_variable_from_name("x")
assert _sort_references_lines(x.references) == [5]
def test_name_resolution_legacy_pre_0_5_0(solc_binary_path) -> None:
solc_path = solc_binary_path("0.4.12")
slither = Slither(
Path(NAME_RESOLUTION_TEST_ROOT, "shadowing_legacy_pre_0_5_0.sol").as_posix(),
solc=solc_path,
force_legacy=True,
)
contract = slither.get_contract_from_name("B")[0]
function = contract.get_function_from_signature("a()")
x = function.get_local_variable_from_name("x")
assert _sort_references_lines(x.references) == [5]