diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 7c4364c..8f05c7c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,10 +13,11 @@ permissions: jobs: test: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: + os: ["ubuntu-latest", "windows-latest"] python-version: ["3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 diff --git a/pyproject.toml b/pyproject.toml index ecba513..a2ac37f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,6 +64,7 @@ select = ["E", "F", "I", "PL", "T20"] addopts = ["--verbose"] pythonpath = ["src", "tests"] testpaths = ["tests"] +filterwarnings = ["error"] [tool.uv] required-version = "0.7.8" \ No newline at end of file diff --git a/src/adrpy/repositories/adr/repository.py b/src/adrpy/repositories/adr/repository.py index cac98a4..c6dc760 100644 --- a/src/adrpy/repositories/adr/repository.py +++ b/src/adrpy/repositories/adr/repository.py @@ -1,4 +1,3 @@ -import re from typing import Final from adrpy.injection import lidi @@ -26,12 +25,13 @@ def create(self, adr_name: str, template: RenderedTemplate) -> None: def get_next_ordinal_number(self) -> int: ordinal_number = 0 for path in self.SETTINGS.adr_dir.glob("*.md"): + # TODO: Use front matter (metadata) to store ordinal number filename = path.stem - maybe_number_prefix = re.findall(r"\d+", filename) - if not maybe_number_prefix: + parts = filename.split("-", 1) + if not parts or not parts[0].isdigit(): continue - if (prefix_as_int := int(maybe_number_prefix[0])) > ordinal_number: - ordinal_number = prefix_as_int + prefix_as_int = int(parts[0]) + ordinal_number = max(ordinal_number, prefix_as_int) return ordinal_number + 1 @staticmethod diff --git a/tests/fixtures/repository.py b/tests/fixtures/repository.py index 4362d38..8378a1a 100644 --- a/tests/fixtures/repository.py +++ b/tests/fixtures/repository.py @@ -10,8 +10,8 @@ from adrpy.shared_kernel.settings import Settings TEST_DIRECTORY = Path(__file__).parent / "testdir" -TEST_FILENAME = "testfile" -TEST_FILENAME_WITH_EXTENSION = "testfile.md" +TEST_FILENAME = "0001-testfile" +TEST_FILENAME_WITH_EXTENSION = "0001-testfile.md" @pytest.fixture() diff --git a/tests/integration/repositories/implementation/test_adr_file_repository.py b/tests/integration/repositories/implementation/test_adr_file_repository.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/integration/repository/implementation/test_adr_file_repository.py b/tests/integration/repository/implementation/test_adr_file_repository.py index d18233e..40886d5 100644 --- a/tests/integration/repository/implementation/test_adr_file_repository.py +++ b/tests/integration/repository/implementation/test_adr_file_repository.py @@ -32,7 +32,9 @@ def test_should_get_template_file(adr_repository: IADRRepository) -> None: assert template.content -def test_should_create_file_in_nested_directories(lidi: Lidi) -> None: +def test_should_create_file_in_nested_directories( + lidi: Lidi, adr_repository: IADRRepository +) -> None: # Given nested_dir = TEST_DIRECTORY / "nested1" / "nested2" new_settings = dataclasses.replace(lidi.resolve(Settings), initial_adr_dir=nested_dir) @@ -40,10 +42,23 @@ def test_should_create_file_in_nested_directories(lidi: Lidi) -> None: rendered_template = RenderedTemplate(name=TEST_FILENAME, content="TEST_CONTENT") # When - lidi.resolve(IADRRepository).create(adr_name=rendered_template.name, template=rendered_template) + adr_repository.create(adr_name=rendered_template.name, template=rendered_template) # Then with open(nested_dir / TEST_FILENAME_WITH_EXTENSION, "r") as created_file: content = created_file.read() assert content == rendered_template.content + + +def test_should_get_next_ordinal_number(adr_repository: IADRRepository) -> None: + # Given + rendered_template = RenderedTemplate(name=TEST_FILENAME, content="TEST_CONTENT") + adr_repository.create(adr_name=TEST_FILENAME, template=rendered_template) + expected_next_ordinal_number = 2 + + # When + ordinal_number = adr_repository.get_next_ordinal_number() + + # Then + assert ordinal_number == expected_next_ordinal_number