on: [push, pull_request] name: Continuous integration jobs: build: name: Test ${{ matrix.job.target }} runs-on: ${{ matrix.job.os }} strategy: fail-fast: false matrix: job: # Operating systems available: https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories - { target: x86_64-unknown-linux-gnu, os: ubuntu-22.04 } # mac-latest (currently mac-14) is an ARM device, so use macos-13 to get Intel. - { target: x86_64-apple-darwin, os: macos-13 } - { target: x86_64-pc-windows-msvc, os: windows-latest } - { target: aarch64-pc-windows-msvc, os: windows-11-arm } - { target: aarch64-unknown-linux-gnu, os: ubuntu-22.04, use-cross: true } # mac-14 is an M1 ARM device. - { target: aarch64-apple-darwin, os: macos-14 } - { target: x86_64-unknown-linux-musl, os: ubuntu-22.04, use-cross: true } env: BUILD_CMD: cargo SUBCOMMAND: test steps: - name: Checkout source code # v4.2.2 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@1.74.1 with: targets: ${{ matrix.job.target }} - name: Install cross if: matrix.job.use-cross uses: taiki-e/install-action@v2 with: tool: cross@0.2.5 - name: Overwrite build command env variable if: matrix.job.use-cross shell: bash run: echo "BUILD_CMD=cross" >> $GITHUB_ENV - name: Test shell: bash run: $BUILD_CMD $SUBCOMMAND --target ${{ matrix.job.target }} test_mime_db: name: Test with MIME database runs-on: ubuntu-22.04 steps: # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: dtolnay/rust-toolchain@1.74.1 # This runs tests that rely on the MIME database being present. - run: cargo test -- --ignored test_linux_latest_stable: name: Test Linux (latest stable Rust) runs-on: ubuntu-22.04 steps: # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: dtolnay/rust-toolchain@stable - run: cargo +stable test regression_test: name: Output Regression Test runs-on: ubuntu-22.04 steps: # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: dtolnay/rust-toolchain@1.74.1 - name: Generate output for all sample files run: ./sample_files/compare_all.sh - name: Verify output is unchanged run: diff -C2 sample_files/compare.result sample_files/compare.expected package: name: Check Linux Packaging runs-on: ubuntu-22.04 steps: # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: dtolnay/rust-toolchain@1.74.1 - run: cargo package --allow-dirty fmt: name: Rustfmt runs-on: ubuntu-22.04 steps: # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: dtolnay/rust-toolchain@1.74.1 - run: cargo fmt --all -- --check actionlint: name: Actionlint runs-on: ubuntu-22.04 steps: # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: raven-actions/actionlint@v2 with: shellcheck: false