diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index fec17ad2a..bb7dfdaf0 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -1,15 +1,76 @@ -name: Rust +name: CI -on: [push] +on: + pull_request: + push: + +env: + RUSTFLAGS: -Dwarnings jobs: - build: - - runs-on: ubuntu-latest + build_and_test: + name: Build and test + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + rust: [nightly, beta, stable] steps: - - uses: actions/checkout@v1 - - name: Build - run: cargo build --verbose - - name: Run tests - run: cargo test --verbose + - uses: actions/checkout@master + + - name: Install ${{ matrix.rust }} + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + + - name: check + uses: actions-rs/cargo@v1 + with: + command: check + args: --all --bins --examples --tests + + - name: check bench + uses: actions-rs/cargo@v1 + if: matrix.rust == 'nightly' + with: + command: check + args: --benches + + - name: tests + uses: actions-rs/cargo@v1 + with: + command: test + args: --all + + check_fmt_and_docs: + name: Checking fmt and docs + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + override: true + components: rustfmt + + - name: fmt + run: cargo fmt --all -- --check + + - name: Docs + run: cargo doc + + clippy_check: + name: Clippy check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Install rust + run: rustup update beta && rustup default beta + - name: Install clippy + run: rustup component add clippy + - name: clippy + run: cargo clippy --all