name: Code Coverage on: push: branches: - master pull_request: paths: - "envs/**" - "nonebot/**" - "packages/**" - "tests/**" - ".github/actions/setup-python/**" - ".github/workflows/codecov.yml" - "pyproject.toml" - "uv.lock" jobs: test: name: Test Coverage runs-on: ${{ matrix.os }} concurrency: group: test-coverage-${{ github.ref }}-${{ matrix.os }}-${{ matrix.python-version }}-${{ matrix.env }} cancel-in-progress: true strategy: fail-fast: false matrix: python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] os: [ubuntu-latest, windows-latest, macos-latest] env: [pydantic-v1, pydantic-v2] env: OS: ${{ matrix.os }} PYTHON_VERSION: ${{ matrix.python-version }} PYDANTIC_VERSION: ${{ matrix.env }} steps: - uses: actions/checkout@v5 - name: Setup Python environment uses: ./.github/actions/setup-python with: python-version: ${{ matrix.python-version }} env-group: ${{ matrix.env }} - name: Run Pytest run: | uv run --no-sync bash ./scripts/run-tests.sh - name: Upload test results uses: codecov/test-results-action@v1 with: env_vars: OS,PYTHON_VERSION,PYDANTIC_VERSION files: ./tests/junit.xml flags: unittests env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - name: Upload coverage report uses: codecov/codecov-action@v5 with: env_vars: OS,PYTHON_VERSION,PYDANTIC_VERSION files: ./tests/coverage.xml flags: unittests fail_ci_if_error: true env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}