Skip to content

Commit 49d06aa

Browse files
committed
Refactor ordinal number extraction, add CI for Windows, make sure warnings fails test suite
1 parent 514d9f6 commit 49d06aa

File tree

6 files changed

+27
-10
lines changed

6 files changed

+27
-10
lines changed

.github/workflows/ci.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ permissions:
1313

1414
jobs:
1515
test:
16-
runs-on: ubuntu-latest
16+
runs-on: ${{ matrix.os }}
1717
strategy:
1818
fail-fast: false
1919
matrix:
20+
os: ["ubuntu-latest", "windows-latest"]
2021
python-version: ["3.11", "3.12", "3.13"]
2122
steps:
2223
- uses: actions/checkout@v4

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ select = ["E", "F", "I", "PL", "T20"]
6464
addopts = ["--verbose"]
6565
pythonpath = ["src", "tests"]
6666
testpaths = ["tests"]
67+
filterwarnings = ["error"]
6768

6869
[tool.uv]
6970
required-version = "0.7.8"

src/adrpy/repositories/adr/repository.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import re
21
from typing import Final
32

43
from adrpy.injection import lidi
@@ -26,12 +25,13 @@ def create(self, adr_name: str, template: RenderedTemplate) -> None:
2625
def get_next_ordinal_number(self) -> int:
2726
ordinal_number = 0
2827
for path in self.SETTINGS.adr_dir.glob("*.md"):
28+
# TODO: Use front matter (metadata) to store ordinal number
2929
filename = path.stem
30-
maybe_number_prefix = re.findall(r"\d+", filename)
31-
if not maybe_number_prefix:
30+
parts = filename.split("-", 1)
31+
if not parts or not parts[0].isdigit():
3232
continue
33-
if (prefix_as_int := int(maybe_number_prefix[0])) > ordinal_number:
34-
ordinal_number = prefix_as_int
33+
prefix_as_int = int(parts[0])
34+
ordinal_number = max(ordinal_number, prefix_as_int)
3535
return ordinal_number + 1
3636

3737
@staticmethod

tests/fixtures/repository.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
from adrpy.shared_kernel.settings import Settings
1111

1212
TEST_DIRECTORY = Path(__file__).parent / "testdir"
13-
TEST_FILENAME = "testfile"
14-
TEST_FILENAME_WITH_EXTENSION = "testfile.md"
13+
TEST_FILENAME = "0001-testfile"
14+
TEST_FILENAME_WITH_EXTENSION = "0001-testfile.md"
1515

1616

1717
@pytest.fixture()

tests/integration/repositories/implementation/test_adr_file_repository.py

Whitespace-only changes.

tests/integration/repository/implementation/test_adr_file_repository.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,33 @@ def test_should_get_template_file(adr_repository: IADRRepository) -> None:
3232
assert template.content
3333

3434

35-
def test_should_create_file_in_nested_directories(lidi: Lidi) -> None:
35+
def test_should_create_file_in_nested_directories(
36+
lidi: Lidi, adr_repository: IADRRepository
37+
) -> None:
3638
# Given
3739
nested_dir = TEST_DIRECTORY / "nested1" / "nested2"
3840
new_settings = dataclasses.replace(lidi.resolve(Settings), initial_adr_dir=nested_dir)
3941
lidi.bind(Settings, new_settings)
4042
rendered_template = RenderedTemplate(name=TEST_FILENAME, content="TEST_CONTENT")
4143

4244
# When
43-
lidi.resolve(IADRRepository).create(adr_name=rendered_template.name, template=rendered_template)
45+
adr_repository.create(adr_name=rendered_template.name, template=rendered_template)
4446

4547
# Then
4648
with open(nested_dir / TEST_FILENAME_WITH_EXTENSION, "r") as created_file:
4749
content = created_file.read()
4850

4951
assert content == rendered_template.content
52+
53+
54+
def test_should_get_next_ordinal_number(adr_repository: IADRRepository) -> None:
55+
# Given
56+
rendered_template = RenderedTemplate(name=TEST_FILENAME, content="TEST_CONTENT")
57+
adr_repository.create(adr_name=TEST_FILENAME, template=rendered_template)
58+
expected_next_ordinal_number = 2
59+
60+
# When
61+
ordinal_number = adr_repository.get_next_ordinal_number()
62+
63+
# Then
64+
assert ordinal_number == expected_next_ordinal_number

0 commit comments

Comments
 (0)