chore: placeholder test so pytest does not exit 5 on empty scaffold (… #17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| # Action SHAs are pinned, not floating tags. To bump: | |
| # gh api repos/<owner>/<repo>/commits/<tag> --jq .sha | |
| # (use /commits/<tag>, NOT /git/refs/tags/<tag> — annotated tags would | |
| # return the tag-object SHA, which Actions can't resolve.) | |
| # Update the comment on the right with the new tag for traceability. | |
| on: | |
| push: | |
| branches: [develop, main] | |
| pull_request: | |
| branches: [develop, main] | |
| jobs: | |
| lint: | |
| name: Lint & Format | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8 | |
| - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 | |
| with: | |
| python-version: "3.14" | |
| - run: uv sync --frozen --extra dev | |
| - run: uv run ruff check . | |
| - run: uv run ruff format --check . | |
| typecheck: | |
| name: Type Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8 | |
| - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 | |
| with: | |
| python-version: "3.14" | |
| - run: uv sync --frozen --extra dev | |
| - run: uv run mypy --strict src/ tests/ | |
| test-unit: | |
| name: Unit tests | |
| runs-on: ubuntu-latest | |
| # Pure in-process tests — completes fast so PR authors get quick feedback. | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8 | |
| - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 | |
| with: | |
| python-version: "3.14" | |
| - run: uv sync --frozen --extra dev | |
| - run: uv run pytest tests/ -v -m "not integration" -o "addopts=" | |
| coverage: | |
| name: Coverage | |
| runs-on: ubuntu-latest | |
| # Runs the suite with coverage. Until ticket #17 lands real source under | |
| # src/, the template has no measurable coverage; pyproject.toml's | |
| # [tool.coverage.report].fail_under stays at 75 (the eventual target), | |
| # while CI uses --cov-fail-under=0 so the empty scaffold doesn't fail. | |
| # When #17 + #18 ship real source + tests, drop the override here. | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8 | |
| - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 | |
| with: | |
| python-version: "3.14" | |
| - run: uv sync --frozen --extra dev | |
| - run: uv run pytest tests/ --cov=src --cov-report=term-missing --cov-fail-under=0 | |
| architecture: | |
| name: Architecture (import-linter) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8 | |
| - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 | |
| with: | |
| python-version: "3.14" | |
| - run: uv sync --frozen --extra dev | |
| - run: uv run lint-imports | |
| pre-commit: | |
| name: Pre-commit | |
| runs-on: ubuntu-latest | |
| # Runs every hook against all files — ensures a developer who forgot | |
| # `uv run pre-commit install` can't leak unformatted code or a stray | |
| # secret past the first defence layer. | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8 | |
| - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 | |
| with: | |
| python-version: "3.14" | |
| - run: uv sync --frozen --extra dev | |
| - run: uv run pre-commit run --all-files --show-diff-on-failure | |
| # Frontend jobs (Frontend Build, Frontend Quality) are added by ticket #21 | |
| # when frontend/package.json lands; keeping them out of this file avoids the | |
| # workflow-startup failure observed when `if: hashFiles(...)` guards a job | |
| # whose `cache-dependency-path` references a not-yet-existing file. |