Files
tauri/.github/workflows/test-core.yml
2026-03-10 08:35:15 -03:00

151 lines
5.4 KiB
YAML

# 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/**'
- '!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.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ${{ matrix.platform.os }}
strategy:
fail-fast: false
matrix:
platform:
- {
target: x86_64-pc-windows-msvc,
os: windows-latest,
toolchain: '1.88',
cross: false,
command: 'test'
}
- {
target: x86_64-unknown-linux-gnu,
os: ubuntu-latest,
toolchain: '1.88',
cross: false,
command: 'test'
}
- {
target: aarch64-apple-darwin,
os: macos-14,
toolchain: '1.88',
cross: false,
command: 'test'
}
- {
target: aarch64-apple-ios,
os: macos-latest,
toolchain: '1.88',
cross: false,
command: 'build'
}
- {
target: aarch64-linux-android,
os: ubuntu-latest,
toolchain: '1.88',
cross: true,
command: 'build'
}
features:
- { args: --no-default-features, key: no-default }
- { args: --all-features, key: all }
exclude:
- platform: { target: aarch64-apple-ios }
features: { key: all }
- platform: { target: aarch64-linux-android }
features: { key: all }
steps:
- uses: actions/checkout@v4
- name: install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.platform.toolchain }}
targets: ${{ matrix.platform.target }}
- name: install x86_64-apple-darwin target (required by bundler CEF helper on macOS)
if: ${{ startsWith(matrix.platform.os, 'macos-') }}
run: rustup target add x86_64-apple-darwin
- 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 }}
save-if: ${{ matrix.features.key == 'all' }}
- name: Cache CEF
if: matrix.features.key == 'all'
id: cache-cef
uses: actions/cache@v5.0.3
with:
path: ~/.local/share/cef
key: cef-${{ matrix.platform.os }}-${{ hashFiles('Cargo.toml') }}
- name: ${{ steps.cache-cef.outputs.cache-hit && 'Use cache' || 'Export CEF' }}
if: matrix.features.key == 'all'
run: |
${{ steps.cache-cef.outputs.cache-hit && 'echo "Cached CEF"'
|| (matrix.platform.os == 'windows-latest'
&& 'cargo install export-cef-dir && export-cef-dir --version 144.0.7 "$env:USERPROFILE/.local/share/cef"'
|| 'cargo install export-cef-dir && export-cef-dir --version 144.0.7 "$HOME/.local/share/cef"')
}}
echo "CEF_PATH=${{ matrix.platform.os == 'windows-latest'
&& '$env:USERPROFILE'
|| '$HOME'
}}/.local/share/cef" >> "$${{ matrix.platform.os == 'windows-latest'
&& 'env:'
|| ''
}}GITHUB_ENV"
echo "${{ startsWith(matrix.platform.os, 'macos-')
&& 'DYLD_FALLBACK_LIBRARY_PATH=$DYLD_FALLBACK_LIBRARY_PATH:$HOME/.local/share/cef:$HOME/.local/share/cef/Chromium Embedded Framework.framework/Libraries'
|| (matrix.platform.os == 'windows-latest'
&& 'PATH=$env:PATH;$env:USERPROFILE/.local/share/cef'
|| 'LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/.local/share/cef') }}" >> "$${{ matrix.platform.os == 'windows-latest'
&& 'env:'
|| ''
}}GITHUB_ENV"
- name: test tauri-utils
if: ${{ !matrix.platform.cross }}
# Using --lib --bins --tests to skip doc tests
run: cargo ${{ matrix.platform.command }} --target ${{ matrix.platform.target }} ${{ matrix.features.args }} --lib --bins --tests --manifest-path crates/tauri-utils/Cargo.toml
- name: test tauri
if: ${{ !matrix.platform.cross }}
run: 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 (using cross)
if: ${{ matrix.platform.cross }}
run: |
cargo install cross --git https://github.com/cross-rs/cross --rev 51f46f296253d8122c927c5bb933e3c4f27cc317 --locked
cross ${{ matrix.features.key == 'no-default' && 'check' || matrix.platform.command }} --target ${{ matrix.platform.target }} ${{ matrix.features.args }} --manifest-path crates/tauri/Cargo.toml