Cross-Platform Tests #107
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |