aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/rust.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/rust.yml')
-rw-r--r--.github/workflows/rust.yml98
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