test(batcher): add red tests for plan() function
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
from pathlib import Path
|
||||
import pytest
|
||||
from categorizer import CategoryRecord, FixtureClass, Speed
|
||||
from batcher import Batch, plan
|
||||
|
||||
def _rec(name: str, fc: FixtureClass, bg: str = "core") -> CategoryRecord:
|
||||
return CategoryRecord(
|
||||
filename=name,
|
||||
fixture_class=fc,
|
||||
subsystems=[bg] if bg else [],
|
||||
speed=Speed.MEDIUM,
|
||||
batch_group=bg,
|
||||
)
|
||||
|
||||
def test_plan_groups_unit_by_batch_group() -> None:
|
||||
records = [
|
||||
_rec("test_a.py", FixtureClass.UNIT, "core"),
|
||||
_rec("test_b.py", FixtureClass.UNIT, "gui"),
|
||||
_rec("test_c.py", FixtureClass.UNIT, "core"),
|
||||
]
|
||||
batches = plan(records)
|
||||
unit_batches = [b for b in batches if b.tier == "1"]
|
||||
labels = {b.label for b in unit_batches}
|
||||
assert "tier-1-unit-core" in labels
|
||||
assert "tier-1-unit-gui" in labels
|
||||
|
||||
def test_plan_live_gui_tier_is_one_batch() -> None:
|
||||
records = [
|
||||
_rec("test_a_sim.py", FixtureClass.LIVE_GUI, "gui"),
|
||||
_rec("test_b_sim.py", FixtureClass.LIVE_GUI, "core"),
|
||||
_rec("test_c_sim.py", FixtureClass.LIVE_GUI, "mma"),
|
||||
]
|
||||
batches = plan(records)
|
||||
live_batches = [b for b in batches if b.tier == "3"]
|
||||
assert len(live_batches) == 1
|
||||
assert len(live_batches[0].files) == 3
|
||||
|
||||
def test_plan_opt_in_skipped_without_flag() -> None:
|
||||
records = [
|
||||
_rec("test_clean_install.py", FixtureClass.OPT_IN),
|
||||
_rec("test_docker_build.py", FixtureClass.OPT_IN),
|
||||
]
|
||||
batches = plan(records, include_opt_in=False)
|
||||
opt_batches = [b for b in batches if b.tier == "0"]
|
||||
assert all(b.skip_reason for b in opt_batches)
|
||||
|
||||
def test_plan_is_deterministic() -> None:
|
||||
records = [
|
||||
_rec("test_a.py", FixtureClass.UNIT, "core"),
|
||||
_rec("test_b.py", FixtureClass.UNIT, "gui"),
|
||||
]
|
||||
a = plan(records)
|
||||
b = plan(records)
|
||||
assert [(x.tier, x.label, len(x.files)) for x in a] == [(y.tier, y.label, len(y.files)) for y in b]
|
||||
|
||||
def test_plan_xdist_only_for_tier_1() -> None:
|
||||
records = [_rec("test_a.py", FixtureClass.UNIT, "core")]
|
||||
batches = plan(records, xdist=True)
|
||||
unit = next(b for b in batches if b.tier == "1")
|
||||
assert "-n" in unit.pytest_args
|
||||
assert "auto" in unit.pytest_args
|
||||
mock_records = [_rec("test_a.py", FixtureClass.MOCK_APP, "core")]
|
||||
batches2 = plan(mock_records, xdist=True)
|
||||
mock = next(b for b in batches2 if b.tier == "2")
|
||||
assert "-n" not in mock.pytest_args
|
||||
Reference in New Issue
Block a user