Skip to content

Test Commit

Test Commit #32

Workflow file for this run

name: Test Commit
on:
workflow_dispatch:
inputs:
commit:
description: "Commit SHA to test"
required: true
type: string
os:
description: "Operating system to run on"
required: false
default: "ubuntu-latest"
type: choice
options:
- ubuntu-latest
- macos-latest
- windows-latest
python_version:
description: "Python version"
required: false
default: "3.13"
type: string
run_lint:
description: "Run ruff check"
required: false
default: true
type: boolean
run_format:
description: "Run ruff format check"
required: false
default: true
type: boolean
run_typecheck:
description: "Run mypy type checking"
required: false
default: true
type: boolean
test_command:
description: "Pytest command (empty to skip tests)"
required: false
default: "pytest --tb=short"
type: string
env:
FORCE_COLOR: 1
RUFF_OUTPUT_FORMAT: github
COLUMNS: 120
jobs:
lint:
name: Lint (ruff)
if: ${{ inputs.run_lint }}
runs-on: ${{ inputs.os }}
continue-on-error: true
outputs:
result: ${{ steps.lint.outcome }}
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
ref: ${{ inputs.commit }}
fetch-depth: 0
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ inputs.python_version }}
- name: Check for code issues (ruff check)
id: lint
uses: astral-sh/ruff-action@v3
format:
name: Format (ruff)
if: ${{ inputs.run_format }}
runs-on: ${{ inputs.os }}
continue-on-error: true
outputs:
result: ${{ steps.format.outcome }}
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
ref: ${{ inputs.commit }}
fetch-depth: 0
- name: Check code format (ruff format)
id: format
uses: astral-sh/ruff-action@v3
with:
args: "format --check"
typecheck:
name: Type Check (mypy)
if: ${{ inputs.run_typecheck }}
runs-on: ${{ inputs.os }}
continue-on-error: true
outputs:
result: ${{ steps.typecheck.outcome }}
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
ref: ${{ inputs.commit }}
fetch-depth: 0
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ inputs.python_version }}
- name: Install dependencies
run: uv sync --all-extras --no-group lint
- name: Static type checking (mypy)
id: typecheck
run: uv run --no-group docs mypy src/
test:
name: Test (pytest)
if: ${{ inputs.test_command != '' }}
runs-on: ${{ inputs.os }}
continue-on-error: true
outputs:
result: ${{ steps.test.outcome }}
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
ref: ${{ inputs.commit }}
fetch-depth: 0
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ inputs.python_version }}
- name: Install dependencies
run: uv sync --all-extras --no-group lint
- name: Run tests
id: test
env:
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: uv run --no-group docs ${{ inputs.test_command }}
report:
name: Report Results
runs-on: ubuntu-latest
needs: [lint, format, typecheck, test]
if: always()
steps:
- name: Summary
run: |
echo "## Test Results for commit ${{ inputs.commit }}" >> $GITHUB_STEP_SUMMARY
echo "**OS:** ${{ inputs.os }} | **Python:** ${{ inputs.python_version }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Check | Result |" >> $GITHUB_STEP_SUMMARY
echo "|-------|--------|" >> $GITHUB_STEP_SUMMARY
if [ "${{ inputs.run_lint }}" == "true" ]; then
echo "| Lint (ruff check) | ${{ needs.lint.outputs.result }} |" >> $GITHUB_STEP_SUMMARY
else
echo "| Lint (ruff check) | skipped |" >> $GITHUB_STEP_SUMMARY
fi
if [ "${{ inputs.run_format }}" == "true" ]; then
echo "| Format (ruff format) | ${{ needs.format.outputs.result }} |" >> $GITHUB_STEP_SUMMARY
else
echo "| Format (ruff format) | skipped |" >> $GITHUB_STEP_SUMMARY
fi
if [ "${{ inputs.run_typecheck }}" == "true" ]; then
echo "| Type Check (mypy) | ${{ needs.typecheck.outputs.result }} |" >> $GITHUB_STEP_SUMMARY
else
echo "| Type Check (mypy) | skipped |" >> $GITHUB_STEP_SUMMARY
fi
if [ -n "${{ inputs.test_command }}" ]; then
echo "| Tests (\`${{ inputs.test_command }}\`) | ${{ needs.test.outputs.result }} |" >> $GITHUB_STEP_SUMMARY
else
echo "| Tests (pytest) | skipped |" >> $GITHUB_STEP_SUMMARY
fi