test(preprocess): add extended test suite to improve coverage #626
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: Quality Checks | |
| on: | |
| push: | |
| branches: ["main"] | |
| paths-ignore: | |
| # Documentation and metadata | |
| - "README.md" | |
| - "CONTRIBUTING.md" | |
| - "CHANGELOG.md" | |
| - "LICENSE" | |
| - "**.md" | |
| # Version and config | |
| - "**/__version__.py" | |
| - ".gitignore" | |
| - ".editorconfig" | |
| - ".prettierrc" | |
| - "Makefile" | |
| # Images and diagrams | |
| - "**/*.png" | |
| - "**/*.jpg" | |
| - "**/*.jpeg" | |
| - "**/*.svg" | |
| - "**/*.gif" | |
| # Directories | |
| - ".vscode/**" | |
| - "docs/**" | |
| - "examples/**" | |
| - "scripts/**" | |
| pull_request: | |
| branches: ["main"] | |
| paths-ignore: | |
| # Documentation and metadata | |
| - "README.md" | |
| - "CONTRIBUTING.md" | |
| - "CHANGELOG.md" | |
| - "LICENSE" | |
| - "**.md" | |
| # Version and config | |
| - "**/__version__.py" | |
| - ".gitignore" | |
| - ".editorconfig" | |
| - ".prettierrc" | |
| - "Makefile" | |
| # Images and diagrams | |
| - "**/*.png" | |
| - "**/*.jpg" | |
| - "**/*.jpeg" | |
| - "**/*.svg" | |
| - "**/*.gif" | |
| # Directories | |
| - ".vscode/**" | |
| - "docs/**" | |
| - "examples/**" | |
| - "scripts/**" | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Python 3.11 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: "**/pyproject.toml" | |
| - name: Install dependencies for mypy | |
| run: | | |
| uv pip install --system mypy | |
| uv pip install --system . | |
| - name: Lint with ruff | |
| run: uvx ruff check . | |
| - name: Check formatting with ruff | |
| run: uvx ruff format --check . | |
| - name: Type check with mypy (strict mode) | |
| run: mypy src/gac --strict | |
| test: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: "**/pyproject.toml" | |
| - name: Install dependencies | |
| run: | | |
| uv pip install --system pytest pytest-cov pytest-asyncio | |
| uv pip install --system . | |
| - name: Run pytest with coverage | |
| run: pytest --cov=gac --cov-report=xml -s | |
| - name: Upload coverage reports to Codecov | |
| if: matrix.python-version == '3.11' # Only upload coverage once | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| slug: cellwebb/gac | |
| - name: Upload test results to Codecov | |
| if: ${{ !cancelled() && matrix.python-version == '3.11' }} | |
| uses: codecov/test-results-action@v1 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} |