name: Rust CI on: push: branches: - master pull_request: types: [opened, repoened, synchronize] jobs: test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: backend_feature: - u64_backend - u32_backend toolchain: - nightly - 1.41.0 name: test steps: - name: Checkout sources uses: actions/checkout@v2 - name: Install ${{ matrix.toolchain }} toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.toolchain }} override: true components: rustfmt, clippy - name: Run cargo test uses: actions-rs/cargo@v1 with: command: test args: --no-default-features --features ${{ matrix.backend_feature }} cross-test: name: Test on ${{ matrix.target }} (using cross) runs-on: ubuntu-latest strategy: fail-fast: false matrix: target: # 32-bit x86 - i686-unknown-linux-gnu backend_feature: - u64_backend - u32_backend steps: - uses: actions/checkout@v2 - uses: hecrj/setup-rust-action@v1 - run: cargo install cross # Note: just use `cross` as you would `cargo`, but always # pass the `--target=${{ matrix.target }}` arg. (Yes, really). - run: cross test --verbose --target=${{ matrix.target }} --no-default-features --features ${{ matrix.backend_feature }} slow-hash-test: name: Test on ${{ matrix.target }} with slow hash runs-on: ubuntu-latest strategy: fail-fast: false matrix: backend_feature: - u64_backend - u32_backend steps: - uses: actions/checkout@v2 - uses: hecrj/setup-rust-action@v1 - run: cargo test --verbose --features slow-hash --no-default-features --features ${{ matrix.backend_feature }} serde-test: name: Test on ${{ matrix.target }} with serde support runs-on: ubuntu-latest strategy: fail-fast: false matrix: backend_feature: - u64_backend - u32_backend steps: - uses: actions/checkout@v2 - uses: hecrj/setup-rust-action@v1 - run: cargo test --verbose --features serialize --no-default-features --features ${{ matrix.backend_feature }} simple-login-test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: toolchain: - nightly - 1.41.0 name: test simple_login command-line example steps: - name: install expect run: sudo apt-get install expect - name: Checkout sources uses: actions/checkout@v2 - name: install rust uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.toolchain }} override: true components: rustfmt, clippy - name: Run expect (which then runs cargo run) run: expect -f scripts/simple_login.exp digital-locker-test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: toolchain: - nightly - 1.41.0 name: test digital_locker command-line example steps: - name: install expect run: sudo apt-get install expect - name: Checkout sources uses: actions/checkout@v2 - name: install rust uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.toolchain }} override: true components: rustfmt, clippy - name: Run expect (which then runs cargo run) run: expect -f scripts/digital_locker.exp clippy: name: cargo clippy runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v2 - name: Install nightly toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true components: rustfmt, clippy - name: Run cargo clippy uses: actions-rs/cargo@v1 with: command: clippy args: -- -D warnings format: name: cargo fmt runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v2 - name: Install nightly toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true components: rustfmt, clippy - name: Run cargo fmt uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check deny-check: name: cargo-deny check runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: EmbarkStudios/cargo-deny-action@v1