ci: split tests workflow into separate ruff, mypy, and pytest workflows

- Create individual workflow files for ruff, mypy, and pytest
- Each workflow has its own status badge for independent monitoring
- Ruff badge shows code quality status
- Mypy badge shows type checking status
- Pytest badge shows multi-version testing status
- Update README with all three badges and clear status documentation
- Remove combined tests.yml in favor of granular workflows
This commit is contained in:
Justin Bollinger
2026-02-06 09:49:30 -05:00
parent 8ef6c1cba2
commit 94e1377137
4 changed files with 72 additions and 29 deletions
+26
View File
@@ -0,0 +1,26 @@
name: mypy
on:
push:
pull_request:
jobs:
mypy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Install uv
run: python -m pip install --upgrade pip uv==0.9.28
- name: Install dev dependencies
run: |
uv venv .venv
uv pip install --python .venv/bin/python ".[dev]"
- name: Run mypy
run: .venv/bin/mypy hate_crack
@@ -1,33 +1,10 @@
name: tests
name: pytest
on:
push:
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Install uv
run: python -m pip install --upgrade pip uv==0.9.28
- name: Install dev dependencies
run: |
uv venv .venv
uv pip install --python .venv/bin/python ".[dev]"
- name: Run ruff
run: .venv/bin/ruff check hate_crack
- name: Run mypy
run: .venv/bin/mypy hate_crack
pytest:
runs-on: ubuntu-latest
strategy:
+26
View File
@@ -0,0 +1,26 @@
name: ruff
on:
push:
pull_request:
jobs:
ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Install uv
run: python -m pip install --upgrade pip uv==0.9.28
- name: Install dev dependencies
run: |
uv venv .venv
uv pip install --python .venv/bin/python ".[dev]"
- name: Run ruff
run: .venv/bin/ruff check hate_crack
+19 -5
View File
@@ -9,12 +9,26 @@
## Status
[![tests](https://github.com/trustedsec/hate_crack/actions/workflows/tests.yml/badge.svg)](https://github.com/trustedsec/hate_crack/actions/workflows/tests.yml)
**Code Quality & Testing:**
**CI/CD Checks:**
- **Linting (Ruff)** - Code quality and formatting validation
- **Type Checking (Mypy)** - Static type analysis
- **Testing** - Python 3.9, 3.10, 3.11, 3.12, 3.13, 3.14
[![ruff](https://github.com/trustedsec/hate_crack/actions/workflows/ruff.yml/badge.svg)](https://github.com/trustedsec/hate_crack/actions/workflows/ruff.yml)
[![mypy](https://github.com/trustedsec/hate_crack/actions/workflows/mypy.yml/badge.svg)](https://github.com/trustedsec/hate_crack/actions/workflows/mypy.yml)
[![pytest](https://github.com/trustedsec/hate_crack/actions/workflows/pytest.yml/badge.svg)](https://github.com/trustedsec/hate_crack/actions/workflows/pytest.yml)
**What Each Badge Represents:**
- **Ruff** - 🔍 Code quality and style validation
-**PASS**: Code follows linting rules and best practices
-**FAIL**: Code has style violations or quality issues
- **Mypy** - 🔬 Static type checking
-**PASS**: No type errors detected
-**FAIL**: Type mismatches or missing annotations found
- **Pytest** - ✔️ Testing across Python 3.9-3.14
-**PASS**: All tests pass on all supported Python versions
- ⚠️ **PARTIAL**: Tests pass on some versions but fail on others
-**FAIL**: Tests fail on one or more Python versions
## Installation