Skip to content

Cross-Platform Tests #107

Cross-Platform Tests

Cross-Platform Tests #107

name: Cross-Platform Tests
on:
push:
branches: [main] # Only on main to save CI minutes
schedule:
# Run weekly on Sunday at 2am UTC
- cron: '0 2 * * 0'
workflow_dispatch: # Allow manual trigger
# Cancel outdated runs when new commits are pushed
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
name: Test on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
# macOS removed: Storage backends have systematic data integrity issues on macOS
# All foundry tests fail with data corruption (reading zeros instead of written data)
# Root cause: Platform-specific file I/O incompatibilities with sparse files/direct I/O
# See: 15+ ignored tests in crates/foundry/{src,tests}/*.rs
os: [ubuntu-latest, windows-latest]
include:
- os: ubuntu-latest
protoc-install: sudo apt-get update && sudo apt-get install -y protobuf-compiler
- os: windows-latest
protoc-install: choco install protoc
steps:
- uses: actions/checkout@v4
- name: Install protobuf compiler
run: ${{ matrix.protoc-install }}
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cargo cache
uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.os }}
- name: Build
run: cargo build --workspace --verbose
- name: Run tests
run: cargo test --workspace -- --test-threads=2
env:
RUST_BACKTRACE: 1
- name: Test release build
run: cargo test --workspace --release -- --test-threads=1
# ARM64 testing removed due to excessive CI time (30-60+ minutes under emulation)
# Run ARM tests manually when needed or use native ARM runners (paid tier)
# To test ARM64: Use workflow_dispatch or run locally on ARM hardware