diff options
| -rw-r--r-- | .github/workflows/test.yml | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..568ff39 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,60 @@ +name: Tests + +# builds.sr.ht is the canonical CI for this project, but it has no macOS images +# and will not add them, so xcodebuild cannot run there. This job exists to run +# the test plan on the GitHub mirror; see builds/swift-ci.yml for the rest. +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +concurrency: + group: tests-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + name: xcodebuild test + # macos-latest still points at macOS 15, which lacks the iOS 26 SDK. + runs-on: macos-26 + + steps: + - uses: actions/checkout@v4 + + - name: Show toolchain + run: | + xcodebuild -version + swift --version + + - name: Select simulator + id: sim + run: | + set -euo pipefail + udid=$(xcrun simctl list devices available --json \ + | jq -r '[.devices[][] | select(.name | startswith("iPhone"))] | first | .udid') + if [ -z "$udid" ] || [ "$udid" = "null" ]; then + echo "No available iPhone simulator on this image" >&2 + xcrun simctl list devices available >&2 + exit 1 + fi + echo "udid=$udid" >> "$GITHUB_OUTPUT" + + - name: Test + run: | + set -o pipefail + xcodebuild test \ + -project Hutch.xcodeproj \ + -scheme Hutch \ + -testPlan HutchTests \ + -destination "id=${{ steps.sim.outputs.udid }}" \ + -resultBundlePath TestResults.xcresult \ + CODE_SIGNING_ALLOWED=NO + + - name: Upload results + if: failure() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: TestResults.xcresult + retention-days: 7 |
