import ast import pytest from core.ast_helpers import UnreferencedNamesVisitor, UnreferencedVariablesVisitor from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka class TestAstHelper(TestUsingMemoryBasedSheerka): @pytest.mark.parametrize("source, expected", [ ("a,b", {"a", "b"}), ("isinstance(a, int)", {"isinstance", "a", "int"}), ("date.today()", {"date"}), ("test()", {"test"}), ("sheerka.test()", {"sheerka"}), ("for i in range(10): pass", set()) ]) def test_i_can_get_unreferenced_names_from_simple_expressions(self, source, expected): context = self.get_context() ast_ = ast.parse(source) visitor = UnreferencedNamesVisitor(context) visitor.visit(ast_) assert visitor.names == expected @pytest.mark.parametrize("source, expected", [ ("a,b", {"a", "b"}), ("isinstance(a, int)", {"a", "int"}), ("date.today()", set()), ("test()", set()), ("sheerka.test()", set()), ("for i in range(10): pass", set()) ]) def test_i_can_get_unreferenced_variables_from_simple_expressions(self, source, expected): context = self.get_context() ast_ = ast.parse(source) visitor = UnreferencedVariablesVisitor(context) visitor.visit(ast_) assert visitor.names == expected