name: Test suite on: workflow_dispatch: pull_request: types: - opened - reopened - synchronize - auto_merge_enabled push: branches: - main tags-ignore: - "*" env: CARGO_TERM_COLOR: always CARGO_UNSTABLE_SPARSE_REGISTRY: "true" concurrency: group: ${{ github.workflow }}-${{ github.ref || github.run_id }} cancel-in-progress: true jobs: test: strategy: matrix: platform: - macos - ubuntu - windows toolchain: - stable - 1.61.0 name: Test ${{ matrix.platform }} with Rust ${{ matrix.toolchain }} runs-on: "${{ matrix.platform }}-latest" steps: - uses: actions/checkout@v3 - name: Configure toolchain run: | rustup toolchain install ${{ matrix.toolchain }} --profile minimal --no-self-update rustup default ${{ matrix.toolchain }} # https://github.com/actions/cache/issues/752 - if: ${{ runner.os == 'Windows' }} name: Use GNU tar shell: cmd run: | echo "Adding GNU tar to PATH" echo C:\Program Files\Git\usr\bin>>"%GITHUB_PATH%" - name: Cargo caching uses: actions/cache@v3 with: path: | ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ key: ${{ runner.os }}-cargo-${{ matrix.toolchain }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-${{ matrix.toolchain }}- ${{ runner.os }}-cargo- - name: Compilation caching uses: actions/cache@v3 with: path: target/ key: ${{ runner.os }}-target-${{ matrix.toolchain }}-${{ hashFiles('**/Cargo.lock') }} - if: matrix.toolchain != 'stable' run: echo "flags=--locked" >> $GITHUB_ENV - name: Run test suite run: cargo test ${{ env.flags }} - name: Check that CLI runs run: cargo run ${{ env.flags }} -p watchexec-cli -- -1 echo cross-checks: name: Checks only against select targets runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Configure toolchain run: | rustup toolchain install --profile minimal --no-self-update stable rustup default stable sudo apt-get install -y musl-tools rustup target add x86_64-unknown-linux-musl - name: Install cross uses: taiki-e/install-action@v2 with: tool: cross - name: Cargo caching uses: actions/cache@v3 with: path: | ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ key: ${{ runner.os }}-cargo-stable-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-stable- ${{ runner.os }}-cargo- - run: cargo check --target x86_64-unknown-linux-musl - run: cross check --target x86_64-unknown-freebsd - run: cross check --target x86_64-unknown-netbsd # Dummy job to have a stable name for the "all tests pass" requirement tests-pass: name: Tests pass needs: - test - cross-checks runs-on: ubuntu-latest steps: - run: echo "Tests pass"