Skip to content

Commit ac37fbf

Browse files
Add tests for Comparator class
Test all fixture scenarios (no change, both empty, new/removed/changed messages, batched) against expected_comparator.json files. 100% coverage on comparator.py.
1 parent adb2eb0 commit ac37fbf

7 files changed

Lines changed: 36 additions & 49 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{"package": "astroid", "missing": 2, "new": 0}]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{"package": "astroid", "missing": 1, "new": 1}]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{"package": "astroid", "missing": 0, "new": 1}]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{"package": "astroid", "missing": 1, "new": 0}]

tests/testutils/_primer/test_comparator.py

Lines changed: 30 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# For details: https://github.com/pylint-dev/pylint/blob/main/LICENSE
33
# Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt
44

5+
import json
56
from pathlib import Path
67

78
import pytest
@@ -12,56 +13,36 @@
1213

1314

1415
@pytest.mark.parametrize(
15-
("fixture", "main_file", "pr_file", "batches", "expected_packages", "expected_missing", "expected_new"),
16+
"directory",
1617
[
17-
pytest.param(
18-
"both_empty", "main.json", "pr.json", None, [], [], [],
19-
id="both_empty",
20-
),
21-
pytest.param(
22-
"no_change", "main.json", "pr.json", None, [], [], [],
23-
id="no_change",
24-
),
25-
pytest.param(
26-
"new_message", "main.json", "pr.json", None,
27-
["astroid"], [0], [1],
28-
id="new_message",
29-
),
30-
pytest.param(
31-
"removed_message", "main.json", "pr.json", None,
32-
["astroid"], [1], [0],
33-
id="removed_message",
34-
),
35-
pytest.param(
36-
"message_changed", "main.json", "pr.json", None,
37-
["astroid"], [1], [1],
38-
id="message_changed",
39-
),
40-
pytest.param(
41-
"batched", "main_BATCHIDX.json", "pr_BATCHIDX.json", 2,
42-
["astroid"], [2], [0],
43-
id="batched",
44-
),
18+
pytest.param(p, id=p.name)
19+
for p in FIXTURES_PATH.iterdir()
20+
if p.is_dir() and p.name != "batched" # tested separately
4521
],
4622
)
47-
def test_comparator(
48-
fixture: str,
49-
main_file: str,
50-
pr_file: str,
51-
batches: int | None,
52-
expected_packages: list[str],
53-
expected_missing: list[int],
54-
expected_new: list[int],
55-
) -> None:
56-
directory = FIXTURES_PATH / fixture
57-
comparator = Comparator(str(directory / main_file), str(directory / pr_file), batches)
23+
def test_comparator(directory: Path) -> None:
24+
"""Test Comparator with each fixture directory."""
25+
comparator = Comparator(str(directory / "main.json"), str(directory / "pr.json"))
26+
expected = json.loads((directory / "expected_comparator.json").read_text("utf-8"))
5827
results = list(comparator)
59-
assert len(results) == len(expected_packages)
60-
for (package, missing, new), exp_pkg, exp_miss, exp_new in zip(
61-
results, expected_packages, expected_missing, expected_new
62-
):
63-
assert package == exp_pkg
64-
assert len(missing["messages"]) == exp_miss
65-
assert len(new["messages"]) == exp_new
66-
# Iterating twice yields the same results
67-
assert results == list(comparator)
28+
assert len(results) == len(expected)
29+
for (package, missing, new), exp in zip(results, expected):
30+
assert package == exp["package"]
31+
assert len(missing["messages"]) == exp["missing"]
32+
assert len(new["messages"]) == exp["new"]
33+
34+
35+
def test_comparator_batched() -> None:
36+
fixture = FIXTURES_PATH / "batched"
37+
comparator = Comparator(
38+
str(fixture / "main_BATCHIDX.json"),
39+
str(fixture / "pr_BATCHIDX.json"),
40+
batches=2,
41+
)
42+
expected = json.loads((fixture / "expected_comparator.json").read_text("utf-8"))
43+
results = list(comparator)
44+
assert len(results) == len(expected)
45+
for (package, missing, new), exp in zip(results, expected):
46+
assert package == exp["package"]
47+
assert len(missing["messages"]) == exp["missing"]
48+
assert len(new["messages"]) == exp["new"]

0 commit comments

Comments
 (0)