# Copyright 2019-2023 Tauri Programme within The Commons Conservancy # SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: MIT name: Test Rust on: push: branches: - v1 - v2 paths: - '.github/workflows/test-rust.yml' - 'plugins/*/src/**' - '!plugins/*/src/api-iife.js' - '**/Cargo.toml' - '**/Cargo.lock' pull_request: branches: - v1 - v2 paths: - '.github/workflows/test-rust.yml' - 'plugins/*/src/**' - '!plugins/*/src/api-iife.js' - '**/Cargo.toml' - '**/Cargo.lock' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: changes: runs-on: ubuntu-latest permissions: pull-requests: read outputs: packages: ${{ steps.filter.outputs.changes }} steps: - uses: actions/checkout@v4 - uses: dorny/paths-filter@v2 id: filter with: base: v2 filters: | tauri-plugin-clipboard-manager: - .github/workflows/test-rust.yml - Cargo.toml - plugins/clipboard-manager/** test: needs: changes if: ${{ needs.changes.outputs.packages != '[]' && needs.changes.outputs.packages != '' }} strategy: fail-fast: false matrix: package: ${{ fromJSON(needs.changes.outputs.packages) }} platform: - { target: x86_64-pc-windows-msvc, os: windows-latest, runner: 'cargo', command: 'test' } - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest, runner: 'cargo', command: 'test' } - { target: aarch64-apple-darwin, os: macos-latest, runner: 'cargo', command: 'test' } - { target: aarch64-apple-ios, os: macos-latest, runner: 'cargo', command: 'build' } - { target: aarch64-linux-android, os: ubuntu-latest, runner: 'cross', command: 'build' } runs-on: ${{ matrix.platform.os }} steps: - uses: actions/checkout@v4 - name: install webkit2gtk if: contains(matrix.platform.target, 'unknown-linux') run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev - uses: dtolnay/rust-toolchain@1.78.0 with: targets: ${{ matrix.platform.target }} - uses: Swatinem/rust-cache@v2 with: key: cache-${{ matrix.package }}-${{ matrix.platform.target }} - name: install cross if: ${{ matrix.platform.runner == 'cross' }} run: cargo +stable install cross --git https://github.com/cross-rs/cross - name: test ${{ matrix.package }} if: matrix.package != 'tauri-plugin-http' run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --all-features - name: test ${{ matrix.package }} if: matrix.package == 'tauri-plugin-http' run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets