name: Test Rust on: push: branches: [master] pull_request: branches: [master] jobs: changes: name: Paths filter runs-on: ubuntu-latest outputs: src: ${{ steps.filter.outputs.src }} steps: - uses: actions/checkout@v2 - uses: dorny/paths-filter@v2 id: filter with: filters: | src: - '!(web/package.json|web/package-lock.json|web/packages/**|**.md)' build: needs: changes if: needs.changes.outputs.src == 'true' name: Test Rust ${{ matrix.rust_version }} / ${{ matrix.os }} runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.rust_version == 'nightly' || matrix.rust_version == 'beta' }} strategy: fail-fast: false matrix: rust_version: [stable] os: [ubuntu-latest, windows-latest, macOS-latest] include: - rust_version: nightly os: ubuntu-latest - rust_version: beta os: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.rust_version }} override: true components: rustfmt, clippy - name: Install Linux dependencies if: matrix.os == 'ubuntu-latest' run: | sudo add-apt-repository ppa:kisak/kisak-mesa -y sudo apt-get update sudo apt-get dist-upgrade sudo apt install -y libasound2-dev libxcb-shape0-dev libxcb-xfixes0-dev mesa-vulkan-drivers - name: Check formatting uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check - name: Check clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all --tests -- -D warnings - name: Run tests with image tests if: matrix.os == 'ubuntu-latest' || matrix.os == 'windows-latest' uses: actions-rs/cargo@v1 env: XDG_RUNTIME_DIR: '' # dummy value, just to silence warnings about it missing with: command: test args: --features imgtests - name: Run tests without image tests if: ${{ !(matrix.os == 'ubuntu-latest' || matrix.os == 'windows-latest') }} uses: actions-rs/cargo@v1 with: command: test - name: Upload images if: failure() uses: actions/upload-artifact@v2 with: name: swf_images path: tests/**/*.png.updated check-required: needs: changes if: needs.changes.outputs.src == 'false' name: Test Rust ${{ matrix.rust_version }} / ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: rust_version: [stable] os: [ubuntu-latest, windows-latest, macOS-latest] include: - rust_version: nightly os: ubuntu-latest - rust_version: beta os: ubuntu-latest steps: - name: No-op run: echo noop