From 5f0701faba5b83ebf144af9973582904f60849b7 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Wed, 21 Feb 2024 00:54:00 -0800 Subject: [PATCH] CI: Run tests on aarch64-apple-darwin and aarch64-apple-ios-sim. (#398) * Fix nightly build by removing redundant `use`. * CI: Run tests on aarch64-apple-darwin. * CI: Test aarch64-apple-ios in simulator. --- .github/workflows/tests.yml | 38 ++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e3c9bbe6..014797a6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -38,7 +38,6 @@ jobs: cargo generate-lockfile -Z minimal-versions cargo test --features=custom,std - # TODO: add aarch64-based macOS runner when it's supported by Github Actions main-tests: name: Tier 1 Test runs-on: ${{ matrix.os }} @@ -48,8 +47,12 @@ jobs: toolchain: [nightly, beta, stable, 1.36] # Only Test macOS on stable to reduce macOS CI jobs include: + # x86_64-apple-darwin. - os: macos-12 toolchain: stable + # aarch64-apple-darwin. + - os: macos-14 + toolchain: stable steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@master @@ -84,18 +87,43 @@ jobs: ios-tests: name: iOS Simulator Test - runs-on: macos-12 + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-12, macos-14] + # Only test on stable to reduce macOS CI jobs + toolchain: [stable] + include: + # The Aarch64 device simulator doesn't seem to work on an x86-64 host + # and the x86_64 device simulator doesn't seem to work on an Aarch64 + # host, at least within GitHub Actions. + - os: macos-12 + target: x86_64-apple-ios + ios_platform: auto-ios-x86_64 + - os: macos-14 + target: aarch64-apple-ios-sim + ios_platform: auto-ios-aarch64-sim steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable with: - targets: x86_64-apple-ios + targets: ${{ matrix.target }} + # There is no precompiled cargo-dinghy for Aarch64. The precompiled + # x86_64 binary runs on ARM64 macOS via Rosetta 2, but it fails to + # correctly interface with macOS toolchain. - name: Install precompiled cargo-dinghy + if: ${{ matrix.target == 'x86_64-apple-ios' }} run: | VERSION=0.6.2 URL="https://github.com/sonos/dinghy/releases/download/${VERSION}/cargo-dinghy-macos-${VERSION}.tgz" wget -O - $URL | tar -xz --strip-components=1 -C ~/.cargo/bin - cargo dinghy --version + - name: cargo install cargo-dinghy + if: ${{ matrix.target == 'aarch64-apple-ios-sim' }} + run: | + VERSION=0.6.2 + cargo install cargo-dinghy --version ${VERSION} + - name: Check cargo-dinghy version. + run: cargo dinghy --version - name: Setup Simulator # Use the first installed iOS runtime and the first (i.e. oldest) supported iPhone device. run: | @@ -110,7 +138,7 @@ jobs: echo "device=$SIM_ID" >> $GITHUB_ENV - uses: Swatinem/rust-cache@v2 - name: Run tests - run: cargo dinghy -d ${{ env.device }} test + run: cargo dinghy -p ${{ matrix.ios_platform }} -d ${{ env.device }} test windows-tests: name: Windows Test