feat: enforce file newlines with super-linter and pre-commit hooks #1794
Workflow file for this run
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
| # Based on https://fedoramagazine.org/github-actions-use-podman-to-run-fedora-linux/ | |
| name: CI | |
| on: | |
| pull_request: | |
| jobs: | |
| unit: | |
| name: unit | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: | |
| - "3.11" | |
| - "3.12" | |
| rust-version: | |
| # RHEL 9.4 has rustc 1.75 | |
| - "1.75" | |
| os: | |
| - ubuntu-latest | |
| - macos-latest | |
| steps: | |
| - name: Get source | |
| uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Set up Rust ${{ matrix.rust-version }} | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: ${{ matrix.rust-version }} | |
| default: true | |
| override: true | |
| - name: Disable AppArmor restriction for unprivileged user namespaces | |
| if: matrix.os == 'ubuntu-latest' | |
| run: sudo sysctl kernel.apparmor_restrict_unprivileged_userns=0 | |
| - name: Check unshare is working | |
| if: matrix.os == 'ubuntu-latest' | |
| run: unshare -rn echo "unshare works" | |
| - name: Install dependencies | |
| run: python -m pip install hatch 'click!=8.3.0' | |
| - name: Run tests | |
| run: hatch run test:test | |
| - name: Upload coverage | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: coverage-unit-py${{ matrix.python-version }}-rs${{ matrix.rust-version }}-${{ matrix.os }} | |
| path: .coverage.* | |
| include-hidden-files: true | |
| if-no-files-found: ignore | |
| retention-days: 1 | |
| e2e: | |
| name: e2e | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: | |
| - "3.11" | |
| - "3.12" | |
| rust-version: | |
| # RHEL 9.4 has rustc 1.75 | |
| - "1.75" | |
| test-script: | |
| - bootstrap | |
| - bootstrap_extras | |
| - bootstrap_build_tags | |
| - bootstrap_prerelease | |
| - bootstrap_conflicting_requirements | |
| - bootstrap_constraints | |
| - bootstrap_cache | |
| - bootstrap_sdist_only | |
| - bootstrap_git_url | |
| - bootstrap_git_url_tag | |
| - bootstrap_parallel | |
| - bootstrap_parallel_git_url | |
| - bootstrap_parallel_git_url_tag | |
| - bootstrap_skip_constraints | |
| - build | |
| - build_order | |
| - build_parallel | |
| - build_sequence_git_url | |
| - build_steps | |
| - build_settings | |
| - graph_to_constraints | |
| - meson | |
| - migrate_graph | |
| - override | |
| - pep517_build_sdist | |
| - post_bootstrap_hook | |
| - prebuilt_wheels_alt_server | |
| - report_missing_dependency | |
| - rust_vendor | |
| - download_sequence | |
| - optimize_build | |
| - extra_metadata | |
| - elfdeps | |
| - prebuilt_wheel_hook | |
| - lint_requirements | |
| os: | |
| - ubuntu-latest | |
| - macos-latest | |
| exclude: | |
| # macOS tests are slower and congested | |
| # only run macOS tests on latest stable Python version | |
| - os: macos-latest | |
| python-version: "3.11" | |
| steps: | |
| - name: Get source | |
| uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Set up Rust ${{ matrix.rust-version }} | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: ${{ matrix.rust-version }} | |
| default: true | |
| override: true | |
| - name: Disable AppArmor restriction for unprivileged user namespaces | |
| if: matrix.os == 'ubuntu-latest' | |
| run: sudo sysctl kernel.apparmor_restrict_unprivileged_userns=0 | |
| - name: Check unshare is working | |
| if: matrix.os == 'ubuntu-latest' | |
| run: unshare -rn echo "unshare works" | |
| - name: Install dependencies | |
| run: python -m pip install hatch 'click!=8.3.0' | |
| - name: Run tests | |
| run: ./e2e/test_${{ matrix.test-script }}.sh | |
| - name: Upload logs for debugging | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: ${{ matrix.test-script }}-py${{ matrix.python-version }}-rs${{ matrix.rust-version }}-${{ matrix.os }} | |
| path: e2e-output | |
| - name: Upload coverage | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: coverage-e2e-${{ matrix.test-script }}-py${{ matrix.python-version }}-rs${{ matrix.rust-version }}-${{ matrix.os }} | |
| path: .coverage.* | |
| include-hidden-files: true | |
| if-no-files-found: ignore | |
| retention-days: 1 | |
| coverage: | |
| name: Coverage report | |
| runs-on: ubuntu-latest | |
| needs: | |
| - unit | |
| - e2e | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: 3.12 | |
| cache: pip | |
| cache-dependency-path: | | |
| **/pyproject.toml | |
| - name: Install dependencies | |
| run: python -m pip install hatch 'click!=8.3.0' | |
| - name: Download coverage data | |
| uses: actions/download-artifact@v7 | |
| with: | |
| pattern: coverage-* | |
| merge-multiple: true | |
| - name: Coverage report | |
| run: | | |
| hatch run test:coverage combine | |
| hatch run test:coverage report | |
| hatch run test:coverage report --format=markdown >> $GITHUB_STEP_SUMMARY | |
| hatch run test:coverage report --fail-under=60 | |
| - name: Upload report | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| path: htmlcov | |
| name: htmlcov | |
| retention-days: 7 |