diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/rust.yml | 98 |
1 files changed, 84 insertions, 14 deletions
diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 5ac490b..dd380d3 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -1,23 +1,93 @@ -name: Rust +name: Main workflow +on: + push: + pull_request: -on: [push, pull_request] +jobs: + # Run the `rustfmt` code formatter + rustfmt: + name: Rustfmt [Formatter] + runs-on: ubuntu-latest + steps: + - name: Setup | Checkout + uses: actions/checkout@v2 -env: - CARGO_TERM_COLOR: always + - name: Setup | Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + profile: minimal + components: rustfmt -jobs: + - name: Build | Format + run: cargo fmt --all -- --check + + # Run the `clippy` linting tool + clippy: + name: Clippy [Linter] + strategy: + matrix: + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + steps: + - name: Setup | Checkout + uses: actions/checkout@v2 + + - name: Setup | Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + profile: minimal + components: clippy + + - name: Build | Lint + uses: actions-rs/cargo@v1 + with: + command: clippy + args: --workspace --all-targets --all-features + + # Ensure that the project could be successfully compiled + cargo_check: + name: Compile + runs-on: ubuntu-latest + steps: + - name: Setup | Checkout + uses: actions/checkout@v2 + + - name: Setup | Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + override: true + + - name: Build | Check + run: cargo check --workspace + + # Run tests on Linux, macOS, and Windows + # On both Rust stable and Rust nightly test: - name: Build and test + name: Test Suite runs-on: ${{ matrix.os }} + needs: cargo_check # First check then run expansive tests strategy: fail-fast: false matrix: - os: - - ubuntu-latest - - windows-latest - - macos-latest - + os: [ubuntu-latest, windows-latest] + rust: [stable, nightly] steps: - - uses: actions/checkout@v2 - - run: cargo build --verbose - - run: cargo test --verbose + - name: Setup | Checkout + uses: actions/checkout@v2 + + - name: Setup | Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + profile: minimal + override: true + + # Run the ignored tests that expect the above setup + - name: Build | Test + run: cargo test --workspace --all-features -- -Z unstable-options --include-ignored |