diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 17ba87f..85c4319 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -1,6 +1,5 @@ -# This workflow runs whenever a PR is opened or updated, or a commit is pushed to main. It runs +# This workflow runs whenever a PR is opened or updated. It runs # several checks: -# - commit_list: produces a list of commits to be checked # - fmt: checks that the code is formatted according to rustfmt # - clippy: checks that the code does not contain any clippy warnings # - doc: checks that the code can be documented without errors @@ -23,47 +22,13 @@ concurrency: name: check jobs: - commit_list: - runs-on: ubuntu-latest - steps: - - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Get commit list (push) - id: get_commit_list_push - if: ${{ github.event_name == 'push' }} - run: | - echo "id0=$GITHUB_SHA" > $GITHUB_OUTPUT - echo "List of tested commits:" > $GITHUB_STEP_SUMMARY - sed -n 's,^id[0-9]\+=\(.*\),- ${{ github.repositoryUrl }}/commit/\1,p' -- $GITHUB_OUTPUT >> $GITHUB_STEP_SUMMARY - - - name: Get commit list (PR) - id: get_commit_list_pr - if: ${{ github.event_name == 'pull_request' }} - run: | - git rev-list --reverse refs/remotes/origin/${{ github.base_ref }}..${{ github.event.pull_request.head.sha }} | awk '{ print "id" NR "=" $1 }' > $GITHUB_OUTPUT - git diff --quiet ${{ github.event.pull_request.head.sha }} ${{ github.sha }} || echo "id0=$GITHUB_SHA" >> $GITHUB_OUTPUT - echo "List of tested commits:" > $GITHUB_STEP_SUMMARY - sed -n 's,^id[0-9]\+=\(.*\),- ${{ github.repositoryUrl }}/commit/\1,p' -- $GITHUB_OUTPUT >> $GITHUB_STEP_SUMMARY - - outputs: - commits: ${{ toJSON(steps.*.outputs.*) }} - fmt: runs-on: ubuntu-latest name: nightly / fmt - needs: commit_list - strategy: - fail-fast: false - matrix: - commit: ${{ fromJSON(needs.commit_list.outputs.commits) }} steps: - uses: actions/checkout@v4 with: submodules: true - ref: ${{ matrix.commit }} - name: Install nightly uses: dtolnay/rust-toolchain@nightly with: @@ -73,48 +38,35 @@ jobs: clippy: runs-on: ubuntu-latest - name: ${{ matrix.toolchain }} / clippy (${{ matrix.commit }}) - needs: commit_list + name: ${{ matrix.toolchain }} / clippy permissions: contents: read - checks: write strategy: fail-fast: false matrix: - # Get early warning of new lints which are regularly introduced in beta channels. - toolchain: [stable, beta] - commit: ${{ fromJSON(needs.commit_list.outputs.commits) }} + toolchain: [stable] steps: - uses: actions/checkout@v4 with: submodules: true - ref: ${{ matrix.commit }} - name: Install ${{ matrix.toolchain }} uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.toolchain }} components: clippy - name: cargo clippy - uses: giraffate/clippy-action@v1 - with: - reporter: 'github-pr-check' - clippy_flags: -- -F clippy::suspicious -F clippy::correctness -F clippy::perf -F clippy::style - github_token: ${{ secrets.GITHUB_TOKEN }} + run: cargo clippy -- -Dwarnings # Enable once we have a released crate # semver: # runs-on: ubuntu-latest # name: semver - # needs: commit_list # strategy: # fail-fast: false - # matrix: - # commit: ${{ fromJSON(needs.commit_list.outputs.commits) }} # steps: # - uses: actions/checkout@v4 # with: # submodules: true - # ref: ${{ matrix.commit }} # - name: Install stable # uses: dtolnay/rust-toolchain@stable # with: @@ -124,18 +76,12 @@ jobs: doc: runs-on: ubuntu-latest - name: nightly / doc - needs: commit_list - strategy: - fail-fast: false - matrix: - commit: ${{ fromJSON(needs.commit_list.outputs.commits) }} + name: stable / doc steps: - uses: actions/checkout@v4 with: submodules: true - ref: ${{ matrix.commit }} - - name: Install nightly + - name: Install Stable uses: dtolnay/rust-toolchain@stable - name: cargo doc run: cargo doc --no-deps --all-features @@ -147,16 +93,10 @@ jobs: # which is required for feature unification runs-on: ubuntu-latest name: ubuntu / stable / features - needs: commit_list - strategy: - fail-fast: false - matrix: - commit: ${{ fromJSON(needs.commit_list.outputs.commits) }} steps: - uses: actions/checkout@v4 with: submodules: true - ref: ${{ matrix.commit }} - name: Install stable uses: dtolnay/rust-toolchain@stable - name: cargo install cargo-hack @@ -171,16 +111,10 @@ jobs: # our dependencies. runs-on: ubuntu-latest name: ubuntu / stable / deny - needs: commit_list - strategy: - fail-fast: false - matrix: - commit: ${{ fromJSON(needs.commit_list.outputs.commits) }} steps: - uses: actions/checkout@v4 with: submodules: true - ref: ${{ matrix.commit }} - name: Install stable uses: dtolnay/rust-toolchain@stable - name: cargo install cargo-deny @@ -191,16 +125,32 @@ jobs: command: check arguments: --all-features + test: + runs-on: ubuntu-latest + name: ubuntu / stable / test + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Install stable + uses: dtolnay/rust-toolchain@stable + - name: cargo test + run: cargo test + # After ensuring tests pass, finally ensure the test code itself contains no clippy warnings + - name: cargo clippy + run: | + cargo clippy --tests -- -Dwarnings + msrv: # check that we can build using the minimal rust version that is specified by this crate runs-on: ubuntu-latest - needs: commit_list # we use a matrix here just because env can't be used in job names # https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability strategy: fail-fast: false matrix: - commit: ${{ fromJSON(needs.commit_list.outputs.commits) }} msrv: ["1.85"] # We're relying on namespaced-features, which # was released in 1.60 # @@ -214,12 +164,11 @@ jobs: # collapse_debuginfo # # device-driver requires 1.85 for rust2024 - name: ubuntu / ${{ matrix.msrv }} (${{ matrix.commit }}) + name: ubuntu / ${{ matrix.msrv }} steps: - uses: actions/checkout@v4 with: submodules: true - ref: ${{ matrix.commit }} - name: Install stable uses: dtolnay/rust-toolchain@stable with: