name: Test # GitHub events that triggers the workflow: on: push: branches: ["main", "dev"] pull_request: branches: ["main", "dev"] # The workflow: jobs: lint: name: Lint with Ruff (Py${{ matrix.python-version }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Lint with Ruff run: | pip install .[dev] ruff --output-format=github . continue-on-error: true test: name: Test with Py${{ matrix.python-version }} on ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu, windows, macos] python-version: ["3.10", "3.11", "3.12"] runs-on: ${{ matrix.os }}-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | pip install .[tests] - name: Test with pytest run: | coverage run -m pytest tests/ mv .coverage .coverage.${{ matrix.python-version }}.${{ matrix.os }} - name: Store coverage files uses: actions/upload-artifact@v3 with: name: coverage path: .coverage.${{ matrix.python-version }}.${{ matrix.os }} report-coverage: # Run only if the workflow was triggered by a push event if: github.event_name == 'push' name: Generate the coverage report needs: [test] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python 3.12 uses: actions/setup-python@v4 with: python-version: "3.12" - name: Download coverage files uses: actions/download-artifact@v3 with: name: coverage path: coverage - name: Combine coverage files run: | pip install .[tests] coverage combine coverage coverage report coverage html --show-contexts --title "RenderCV coverage for ${{ github.sha }}" - name: Upload the coverage report to smokeshow run: | pip install smokeshow==0.4.0 smokeshow upload ./htmlcov env: SMOKESHOW_GITHUB_STATUS_DESCRIPTION: Coverage {coverage-percentage} SMOKESHOW_GITHUB_COVERAGE_THRESHOLD: 97 SMOKESHOW_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SMOKESHOW_GITHUB_PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}