Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
GitPython>=3.1.46
google-genai>=1.72.0
google-genai>=1.73.0
openai>=2.31.0
pydantic>=2.13.0
python-dotenv>=1.2.2
30 changes: 30 additions & 0 deletions tests/test_dependency_stack.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import subprocess
import sys
import unittest
from importlib.metadata import version


def parse_version(raw: str) -> tuple[int, ...]:
return tuple(int(part) for part in raw.split("."))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Parse versions with PEP 440 semantics

Replace the integer-splitting parser here with a real version parser because this implementation breaks on valid distribution versions such as 2.13.0.post1/2.13.0rc1 (raises ValueError) and can misorder equivalents like 1.73 vs 1.73.0 ((1, 73) < (1, 73, 0)). In those cases the new dependency check will fail even when installed packages actually meet the minimum constraints.

Useful? React with 👍 / 👎.



class DependencyStackTest(unittest.TestCase):
def test_cli_help_smoke_test(self) -> None:
result = subprocess.run(
[sys.executable, "auto-commit.py", "--help"],
capture_output=True,
text=True,
check=False,
)

self.assertEqual(result.returncode, 0, result.stderr)
self.assertIn("Auto-Commit", result.stdout)

def test_dependency_versions_are_refreshed(self) -> None:
self.assertGreaterEqual(parse_version(version("google-genai")), (1, 73, 0))
self.assertGreaterEqual(parse_version(version("pydantic")), (2, 13, 0))
self.assertGreaterEqual(parse_version(version("pydantic_core")), (2, 46, 0))


if __name__ == "__main__":
unittest.main()
Loading