# Copyright 2019-2024 Tauri Programme within The Commons Conservancy # SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: MIT name: test core on: push: branches: - dev pull_request: paths: - '.github/workflows/test-core.yml' - 'crates/**' - 'Cargo.toml' - 'Cargo.lock' - '!crates/tauri/scripts/**' - '!crates/tauri-cli/**' - '!crates/tauri-bundler/**' - '!crates/tauri-macos-sign/**' - '!crates/tauri-schema-generator/**' env: RUST_BACKTRACE: 1 CARGO_PROFILE_DEV_DEBUG: 0 # This would add unnecessary bloat to the target folder, decreasing cache efficiency. CROSS_REV: 51f46f296253d8122c927c5bb933e3c4f27cc317 concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: test: runs-on: ${{ matrix.platform.os }} strategy: fail-fast: false matrix: platform: - { target: x86_64-pc-windows-msvc, os: windows-latest, toolchain: '1.90', cargo: cargo, command: 'test' } - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest, toolchain: '1.90', cargo: cargo, command: 'test' } - { target: aarch64-apple-darwin, os: macos-14, toolchain: '1.90', cargo: cargo, command: 'test' } - { target: aarch64-apple-ios, os: macos-latest, toolchain: '1.90', cargo: cargo, command: 'build' } - { target: aarch64-linux-android, os: ubuntu-latest, toolchain: '1.90', cargo: cross, command: 'build' } features: - { args: --no-default-features, key: no-default } - { args: --all-features, key: all } steps: - uses: actions/checkout@v7 - name: install Rust uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.platform.toolchain }} targets: ${{ matrix.platform.target }} - name: install Linux dependencies if: contains(matrix.platform.target, 'unknown-linux') run: | sudo apt-get update sudo apt-get install -y webkit2gtk-4.1 libxdo-dev libayatana-appindicator3-dev - uses: Swatinem/rust-cache@v2 with: key: ${{ matrix.platform.target }} # Only `dev` writes to the cache: an entry saved from a pull request lives on its # merge ref, where nothing else can restore it, and every write evicts a `dev` # entry that other runs would have hit (10 GB repository limit, LRU eviction). save-if: ${{ github.ref == 'refs/heads/dev' && matrix.features.key == 'all' }} # `cross` is built from a pinned git revision. Keep the binary in its own small cache # entry (accessed by every run, so it stays hot) instead of rebuilding it whenever the # much bigger rust-cache entry has been evicted. - name: restore cross if: ${{ matrix.platform.cargo == 'cross' }} id: cross-cache uses: actions/cache@v4 with: path: ${{ runner.tool_cache }}/cross key: cross-${{ runner.os }}-${{ env.CROSS_REV }} - name: install cross if: ${{ matrix.platform.cargo == 'cross' && steps.cross-cache.outputs.cache-hit != 'true' }} run: cargo install cross --git https://github.com/cross-rs/cross --rev ${{ env.CROSS_REV }} --locked --root ${{ runner.tool_cache }}/cross - name: add cross to PATH if: ${{ matrix.platform.cargo == 'cross' }} run: echo "${{ runner.tool_cache }}/cross/bin" >> $GITHUB_PATH - name: test tauri-utils # Using --lib --bins --tests to skip doc tests run: ${{ matrix.platform.cargo }} ${{ matrix.platform.command }} --target ${{ matrix.platform.target }} ${{ matrix.features.args }} --lib --bins --tests --manifest-path crates/tauri-utils/Cargo.toml - name: run acl-tests if: ${{ matrix.features.key != 'no-default' && matrix.platform.command == 'test' }} run: ${{ matrix.platform.cargo }} test --target ${{ matrix.platform.target }} ${{ matrix.features.args }} --manifest-path crates/tests/acl/Cargo.toml - name: test tauri run: ${{ matrix.platform.cargo }} ${{ matrix.features.key == 'no-default' && 'check' || matrix.platform.command }} --target ${{ matrix.platform.target }} ${{ matrix.features.args }} --manifest-path crates/tauri/Cargo.toml - name: test tauri examples if: ${{ matrix.features.key != 'no-default' && matrix.platform.command == 'test' }} run: | ${{ matrix.platform.cargo }} test --target ${{ matrix.platform.target }} ${{ matrix.features.args }} --examples --manifest-path crates/tauri/Cargo.toml ${{ matrix.platform.cargo }} test --target ${{ matrix.platform.target }} ${{ matrix.features.args }} --manifest-path examples/api/src-tauri/Cargo.toml