blob: 6d8d7d88bee0f00532aecea591e46509865e456b [file] [log] [blame]
import ast
import pytest
from pre_commit_hooks.debug_statement_hook import debug_statement_hook
from pre_commit_hooks.debug_statement_hook import DebugStatement
from pre_commit_hooks.debug_statement_hook import ImportStatementParser
from testing.util import get_resource_path
@pytest.fixture
def ast_with_no_debug_imports():
return ast.parse(
"""
import foo
import bar
import baz
from foo import bar
""",
)
@pytest.fixture
def ast_with_debug_import_form_1():
return ast.parse(
"""
import ipdb; ipdb.set_trace()
""",
)
@pytest.fixture
def ast_with_debug_import_form_2():
return ast.parse(
"""
from pudb import set_trace; set_trace()
""",
)
def test_returns_no_debug_statements(ast_with_no_debug_imports):
visitor = ImportStatementParser()
visitor.visit(ast_with_no_debug_imports)
assert visitor.debug_import_statements == []
def test_returns_one_form_1(ast_with_debug_import_form_1):
visitor = ImportStatementParser()
visitor.visit(ast_with_debug_import_form_1)
assert visitor.debug_import_statements == [
DebugStatement('ipdb', 3, 0),
]
def test_returns_one_form_2(ast_with_debug_import_form_2):
visitor = ImportStatementParser()
visitor.visit(ast_with_debug_import_form_2)
assert visitor.debug_import_statements == [
DebugStatement('pudb', 3, 0),
]
def test_returns_one_for_failing_file():
ret = debug_statement_hook([get_resource_path('file_with_debug.notpy')])
assert ret == 1
def test_returns_zero_for_passing_file():
ret = debug_statement_hook([__file__])
assert ret == 0
def test_syntaxerror_file():
ret = debug_statement_hook([get_resource_path('cannot_parse_ast.notpy')])
assert ret == 1