Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ jobs:
- name: Lint
run: python -m mypy -p linehaul
- name: Test
run: python -m pytest test_functions.py tests/unit
run: python -m pytest test_functions.py tests
25 changes: 0 additions & 25 deletions tests/strategies.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,31 +16,6 @@
INF = float("inf")


@st.composite
def line_delimited_data(draw, max_line_size, min_lines=1):
n = draw(max_line_size)
data = st.binary(min_size=1, max_size=n).filter(lambda d: b"\n" not in d)
lines = draw(
st.lists(data, min_size=min_lines).filter(
lambda l: sum(map(len, l)) + len(l) <= n
)
)
return b"\n".join(lines) + b"\n"


@st.composite
def chunked(draw, source):
data = draw(source)

chunk_sizes = [0]
chunk_sizes += draw(
st.lists(st.integers(0, len(data) - 1), unique=True).map(sorted)
)
chunk_sizes += [len(data)]

return [data[u:v] for u, v in zip(chunk_sizes, chunk_sizes[1:])]


def _none_for_inf(v):
if v is INF:
return None
Expand Down
17 changes: 16 additions & 1 deletion tests/test_strategies.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,15 @@

import itertools

from hypothesis import assume, given, strategies as st, reproduce_failure, seed
from hypothesis import (
assume,
given,
settings,
strategies as st,
reproduce_failure,
seed,
HealthCheck,
)

from .strategies import version as st_version

Expand All @@ -25,6 +33,7 @@ def _ver_2_list(version):
reversed(list(itertools.dropwhile(lambda i: i == 0, reversed(version))))
)

@settings(suppress_health_check=[HealthCheck.too_slow])
@given(
st.data(),
st.tuples(
Expand All @@ -35,6 +44,7 @@ def test_greater_than_minimum(self, data, min_version):
version = data.draw(st_version(min_version=min_version))
assert self._ver_2_list(version) >= self._ver_2_list(min_version)

@settings(suppress_health_check=[HealthCheck.too_slow])
@given(
st.data(),
st.tuples(
Expand All @@ -47,6 +57,7 @@ def test_less_than_maximum(self, data, max_version):
version = data.draw(st_version(max_version=max_version))
assert self._ver_2_list(version) <= self._ver_2_list(max_version)

@settings(suppress_health_check=[HealthCheck.too_slow])
@given(
st.data(),
st.tuples(
Expand All @@ -73,16 +84,19 @@ def test_inbetween_min_and_max(self, data, versions):
<= self._ver_2_list(max_version)
)

@settings(suppress_health_check=[HealthCheck.too_slow])
@given(st.data(), st.integers(min_value=1, max_value=100))
def test_produces_with_more_digits_than_min(self, data, min_digits):
version = data.draw(st_version(min_digits=min_digits))
assert len(version.split(".")) >= min_digits

@settings(suppress_health_check=[HealthCheck.too_slow])
@given(st.data(), st.integers(min_value=2, max_value=100))
def test_produces_with_less_digits_than_max(self, data, max_digits):
version = data.draw(st_version(max_digits=max_digits))
assert len(version.split(".")) <= max_digits

@settings(suppress_health_check=[HealthCheck.too_slow])
@given(
st.data(),
st.tuples(
Expand All @@ -95,6 +109,7 @@ def test_produces_inbetween_min_and_max_digits(self, data, digits):
version = data.draw(st_version(min_digits=min_digits, max_digits=max_digits))
assert min_digits <= len(version.split(".")) <= max_digits

@settings(suppress_health_check=[HealthCheck.too_slow])
@given(
st.data(),
st.tuples(
Expand Down