mirror of
https://github.com/turnstonelabs/turnstone.git
synced 2026-08-12 23:12:23 -06:00
Add test coverage reporting and pre-commit hooks (#2)
* Add test coverage reporting and pre-commit hooks - Add pytest-cov to test dependencies, configure coverage in pyproject.toml (branch coverage, static asset omission, standard exclusion patterns) - CI test job now runs with --cov and uploads coverage XML as artifact - Add .pre-commit-config.yaml with ruff (check + format) and mypy hooks Baseline coverage: 41% (482 tests, Python 3.13) * Fix Copilot review: add redis dep for pre-commit mypy, explicit --cov target - Add redis>=7.2 to mypy pre-commit hook additional_dependencies so mypy can resolve redis imports in isolated pre-commit environments - Use --cov=turnstone instead of bare --cov to explicitly scope coverage
This commit is contained in:
@@ -40,4 +40,9 @@ jobs:
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- run: pip install -e ".[test,mq]"
|
||||
- run: pytest tests/ -m "not live" -q
|
||||
- run: pytest tests/ -m "not live" --cov=turnstone --cov-report=term-missing --cov-report=xml -q
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: always()
|
||||
with:
|
||||
name: coverage-${{ matrix.python-version }}
|
||||
path: coverage.xml
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
repos:
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.9.10
|
||||
hooks:
|
||||
- id: ruff
|
||||
args: [--fix]
|
||||
- id: ruff-format
|
||||
|
||||
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||
rev: v1.14.1
|
||||
hooks:
|
||||
- id: mypy
|
||||
additional_dependencies: [types-redis>=4.6, redis>=7.2]
|
||||
args: [--config-file=pyproject.toml]
|
||||
pass_filenames: false
|
||||
entry: mypy turnstone/
|
||||
+16
-1
@@ -29,7 +29,7 @@ Repository = "https://github.com/turnstonelabs/turnstone"
|
||||
Issues = "https://github.com/turnstonelabs/turnstone/issues"
|
||||
|
||||
[project.optional-dependencies]
|
||||
test = ["pytest>=9.0"]
|
||||
test = ["pytest>=9.0", "pytest-cov>=6.0"]
|
||||
dev = ["ruff>=0.9", "mypy>=1.14", "types-redis>=4.6"]
|
||||
mq = ["redis>=7.2"]
|
||||
console = ["redis>=7.2"]
|
||||
@@ -80,6 +80,21 @@ disallow_incomplete_defs = true
|
||||
check_untyped_defs = true
|
||||
no_implicit_optional = true
|
||||
|
||||
[tool.coverage.run]
|
||||
source = ["turnstone"]
|
||||
branch = true
|
||||
omit = ["turnstone/*/static/*"]
|
||||
|
||||
[tool.coverage.report]
|
||||
show_missing = true
|
||||
skip_empty = true
|
||||
exclude_lines = [
|
||||
"pragma: no cover",
|
||||
"if TYPE_CHECKING",
|
||||
"raise NotImplementedError",
|
||||
'if __name__ == "__main__"',
|
||||
]
|
||||
|
||||
[[tool.mypy.overrides]]
|
||||
module = ["sympy", "sympy.*", "numpy", "numpy.*"]
|
||||
ignore_missing_imports = true
|
||||
|
||||
Reference in New Issue
Block a user