Skip to content

Commit d805146

Browse files
committed
Update for TR#1
1 parent 5529179 commit d805146

3 files changed

Lines changed: 43 additions & 29 deletions

File tree

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,5 @@
11
{
2-
"hooks": {
3-
"PreToolUse": [
4-
{
5-
"matcher": "Edit|Write",
6-
"hooks": [
7-
{
8-
"type": "command",
9-
"command": "jq -e '.tool_input.file_path | contains(\"/tests/\")' >/dev/null && echo 'tests/ is read-only during implementation' >&2 && exit 2 || exit 0"
10-
}
11-
]
12-
}
13-
]
2+
"permissions": {
3+
"deny": ["Edit(tests/**)"]
144
}
155
}

tdd-ai-agents/tests/test_core.py

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,41 @@ def test_smaller_release_sorts_first():
1010
assert Version("1.2.0") < Version("1.3.0")
1111

1212

13+
def test_versions_with_different_lengths_compare():
14+
assert Version("1.2") < Version("1.2.1")
15+
16+
17+
def test_greater_than_works():
18+
assert Version("2.0.0") > Version("1.9.9")
19+
20+
21+
def test_unequal_versions_are_not_equal():
22+
assert Version("1.0.0") != Version("1.0.1")
23+
24+
1325
def test_double_digit_segments_sort_numerically():
1426
assert Version("3.9") < Version("3.10")
1527

1628

29+
def test_sorting_a_list_of_versions():
30+
versions = [Version("1.10.0"), Version("1.2.0"), Version("1.9.0")]
31+
assert sorted(versions) == [
32+
Version("1.2.0"),
33+
Version("1.9.0"),
34+
Version("1.10.0"),
35+
]
36+
37+
1738
@pytest.mark.parametrize(
1839
"lower, higher",
1940
[
20-
("1.0.dev1", "1.0"), # Dev before final
21-
("1.0a1", "1.0"), # Pre-release before final
22-
("1.0", "1.0.post1"), # Post-release after final
23-
("1.0.dev1", "1.0a1"), # Dev before pre-release
24-
("1.0a1", "1.0b1"), # Alpha before beta
25-
("1.0b1", "1.0rc1"), # Beta before release candidate
26-
("1.0.dev1", "1.0.post1"), # Dev before post, spanning the release
41+
("1.0.dev1", "1.0"),
42+
("1.0a1", "1.0"),
43+
("1.0", "1.0.post1"),
44+
("1.0.dev1", "1.0a1"),
45+
("1.0a1", "1.0b1"),
46+
("1.0b1", "1.0rc1"),
47+
("1.0.dev1", "1.0.post1"),
2748
],
2849
)
2950
def test_phase_ordering(lower, higher):
@@ -33,14 +54,17 @@ def test_phase_ordering(lower, higher):
3354
@pytest.mark.parametrize(
3455
"text",
3556
[
36-
"", # Empty string
37-
" ", # Whitespace only
38-
"1.x.0", # Non-numeric segment
39-
"banana", # Not a version at all
40-
"1..0", # Empty segment
41-
"v1.0", # Leading junk
57+
"",
58+
" ",
59+
"1.x.0",
60+
"banana",
61+
"1..0",
4262
],
4363
)
4464
def test_invalid_input_raises(text):
4565
with pytest.raises(ValueError):
4666
Version(text)
67+
68+
69+
def test_comparing_against_other_types_returns_notimplemented():
70+
assert Version("1.0").__eq__("1.0") is NotImplemented

tdd-ai-agents/version_check/core.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
_VERSION = re.compile(
55
r"^\s*(?P<release>\d+(?:\.\d+)*)"
66
r"(?:(?P<pre_label>a|b|rc)(?P<pre_num>\d+))?"
7-
r"(?:\.dev(?P<dev>\d+))?"
8-
r"(?:\.post(?P<post>\d+))?\s*$"
7+
r"(?:\.post(?P<post>\d+))?"
8+
r"(?:\.dev(?P<dev>\d+))?\s*$"
99
)
1010
_PRE_ORDER = {"a": 0, "b": 1, "rc": 2}
1111

@@ -23,11 +23,11 @@ def __init__(self, text):
2323
self._pre = (_PRE_ORDER[match["pre_label"]], int(match["pre_num"]))
2424
else:
2525
self._pre = None
26-
self._dev = int(match["dev"]) if match["dev"] else None
2726
self._post = int(match["post"]) if match["post"] else None
27+
self._dev = int(match["dev"]) if match["dev"] else None
2828

2929
def _key(self):
30-
if self._dev is not None and self._pre is None and self._post is None:
30+
if self._dev is not None and self._pre is None:
3131
phase = (0, self._dev)
3232
elif self._pre is not None:
3333
phase = (1, self._pre)

0 commit comments

Comments
 (0)