Fix coverage upload to run only once per matrix build #50
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: Tests | |
| on: | |
| push: | |
| branches: [ main, master, develop ] | |
| pull_request: | |
| branches: [ main, master, develop ] | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r requirements.txt | |
| - name: Type Check with mypy | |
| run: | | |
| mypy git_commitai.py | |
| - name: Run tests with coverage | |
| run: | | |
| pytest tests/ --cov=git_commitai --cov-report=xml | |
| - name: Upload coverage to Codecov | |
| if: matrix.python-version == '3.10' # Only upload from one version | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| integration-test: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| python-version: ['3.10'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Configure git | |
| run: | | |
| git config --global user.email "test@example.com" | |
| git config --global user.name "Test User" | |
| - name: Test script execution | |
| shell: bash | |
| run: | | |
| python git_commitai.py --help || true | |
| - name: Test in git repository (Unix) | |
| if: runner.os != 'Windows' | |
| run: | | |
| # Create a test file with a different name that's not in .gitignore | |
| echo "test content" > test_integration.txt | |
| git add test_integration.txt | |
| # Set up mock API key | |
| export GIT_COMMIT_AI_KEY="test-key" | |
| export GIT_COMMIT_AI_URL="https://api.example.com" | |
| # Test that script recognizes staged changes | |
| python git_commitai.py --help || true | |
| - name: Test in git repository (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| # Create a test file with a different name that's not in .gitignore | |
| echo "test content" > test_integration.txt | |
| git add test_integration.txt | |
| # Set up mock API key using PowerShell syntax | |
| $env:GIT_COMMIT_AI_KEY="test-key" | |
| $env:GIT_COMMIT_AI_URL="https://api.example.com" | |
| # Test that script recognizes staged changes | |
| python git_commitai.py --help | |
| shell: pwsh |