from hypothesis import given, strategies as st
from domin8.tools.api_impact import _extract_symbols_from_hunks
from domin8.tools.diff_utils import Hunk
@st.composite
def random_hunk_lines(draw):
n = draw(st.integers(min_value=0, max_value=20))
lines = []
for _ in range(n):
prefix = draw(st.sampled_from(['+', '-', ' ']))
body = draw(st.text(min_size=0, max_size=80))
lines.append(prefix + body)
return lines
@given(st.lists(random_hunk_lines(), min_size=0, max_size=5))
def test_extract_symbols_random(hunks_lines):
hunks = [Hunk(old_start=1, old_len=1, new_start=1, new_len=1, lines=hl) for hl in hunks_lines]
res = _extract_symbols_from_hunks(hunks, 'tmp.py')
assert isinstance(res, dict)
assert 'added' in res and 'removed' in res