From aac3e8e4ec676511d33ee70eb5b8712f49e43f53 Mon Sep 17 00:00:00 2001 From: OpenCow Date: Sat, 25 Jul 2026 14:53:58 +0200 Subject: [PATCH] ci: add macOS unit test coverage --- .github/workflows/xcode-build.yml | 9 ++++ README.md | 19 +++---- doc/TESTING_AND_DEVELOPMENT.md | 49 +++++++++---------- .../xcschemes/potassiumProvider.xcscheme | 24 --------- 4 files changed, 37 insertions(+), 64 deletions(-) diff --git a/.github/workflows/xcode-build.yml b/.github/workflows/xcode-build.yml index 268de2a..8f6aa09 100644 --- a/.github/workflows/xcode-build.yml +++ b/.github/workflows/xcode-build.yml @@ -25,3 +25,12 @@ jobs: -scheme potassiumProvider \ -destination 'platform=macOS' \ CODE_SIGNING_ALLOWED=NO + + - name: Run unit tests on macOS + run: | + xcodebuild test \ + -project potassiumProvider.xcodeproj \ + -scheme potassiumProvider \ + -destination 'platform=macOS' \ + MACOSX_DEPLOYMENT_TARGET=26.4 \ + CODE_SIGNING_ALLOWED=NO diff --git a/README.md b/README.md index 538bea0..30d41d6 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ xcodebuild build \ -destination 'generic/platform=visionOS' ``` -Run tests: +Run unit tests: ```sh xcodebuild test \ @@ -110,7 +110,7 @@ xcodebuild test \ -destination 'platform=iOS Simulator,OS=26.5,name=iPhone 17' ``` -Run tests on Mac as well: +Run unit tests on Mac as well: ```sh xcodebuild test \ @@ -119,7 +119,7 @@ xcodebuild test \ -destination 'platform=macOS' ``` -Run tests on visionOS as well: +Run unit tests on visionOS as well: ```sh xcodebuild test \ @@ -128,16 +128,9 @@ xcodebuild test \ -destination 'platform=visionOS Simulator,OS=26.5,name=Apple Vision Pro' ``` -If the full scheme stalls during simulator/UI-test cleanup, this has previously -worked more reliably: - -```sh -xcodebuild test \ - -project potassiumProvider.xcodeproj \ - -scheme potassiumProvider \ - -destination 'platform=iOS Simulator,OS=26.5,name=iPhone 17' \ - -parallel-testing-enabled NO -``` +The shared scheme's Test action contains `potassiumProviderTests` only. UI +automation remains a separate Xcode test-target workflow and does not run in +the command-line matrix above. Use `xcodebuild -showdestinations` to copy exact Mac or visionOS destinations if local Xcode requires a more specific variant. diff --git a/doc/TESTING_AND_DEVELOPMENT.md b/doc/TESTING_AND_DEVELOPMENT.md index 312d31d..76bddfa 100644 --- a/doc/TESTING_AND_DEVELOPMENT.md +++ b/doc/TESTING_AND_DEVELOPMENT.md @@ -14,6 +14,10 @@ source of truth. - Unit test target: `potassiumProviderTests` - UI test target: `potassiumProviderUITests` +The shared `potassiumProvider` scheme runs `potassiumProviderTests` in its Test +action. UI automation remains a separate Xcode test-target workflow and is not +part of the shared scheme's command-line test path. + Do not use Tuist or root-level SwiftPM commands for validation unless the project is intentionally migrated. @@ -70,7 +74,7 @@ xcodebuild build \ -destination 'platform=macOS' ``` -Run all tests: +Run unit tests: ```sh xcodebuild test \ @@ -79,7 +83,7 @@ xcodebuild test \ -destination 'platform=iOS Simulator,OS=26.5,name=iPhone 17' ``` -Run all tests on Mac as well: +Run unit tests on Mac as well: ```sh xcodebuild test \ @@ -88,34 +92,14 @@ xcodebuild test \ -destination 'platform=macOS' ``` -Run only unit tests: - -```sh -xcodebuild test \ - -project potassiumProvider.xcodeproj \ - -scheme potassiumProvider \ - -destination 'platform=iOS Simulator,OS=26.5,name=iPhone 17' \ - -only-testing:potassiumProviderTests -``` - -If the full scheme stalls during simulator/UI-test cleanup, retry with: - -```sh -xcodebuild test \ - -project potassiumProvider.xcodeproj \ - -scheme potassiumProvider \ - -destination 'platform=iOS Simulator,OS=26.5,name=iPhone 17' \ - -parallel-testing-enabled NO -``` - Use `xcodebuild -showdestinations` to copy the exact Mac destination if local Xcode requires a more specific macOS variant. ## Continuous Integration -GitHub Actions runs an unsigned macOS build for every pull request and every -push to `main`. The build uses the `macos-26` runner and its default Xcode 26.5 -installation: +GitHub Actions runs an unsigned macOS build followed by the macOS unit tests for +every pull request and every push to `main`. The job uses the `macos-26` runner +and its default Xcode 26.5 installation: ```sh xcodebuild build \ @@ -123,10 +107,21 @@ xcodebuild build \ -scheme potassiumProvider \ -destination 'platform=macOS' \ CODE_SIGNING_ALLOWED=NO + +xcodebuild test \ + -project potassiumProvider.xcodeproj \ + -scheme potassiumProvider \ + -destination 'platform=macOS' \ + MACOSX_DEPLOYMENT_TARGET=26.4 \ + CODE_SIGNING_ALLOWED=NO ``` -This initial workflow checks compilation only. Unit tests, UI tests, caching, -and iOS Simulator and visionOS jobs remain outside its scope. +The build and test commands run as consecutive steps in the same job and share +the resolved package checkout and DerivedData directory. The CI-only +deployment-target override allows the tests to run on the hosted runner's +macOS 26.4 installation without changing the project's macOS 26.5 deployment +target. UI tests, caching, iOS Simulator and visionOS jobs, and the manual File +Provider release gates remain outside its scope. ## Test Style diff --git a/potassiumProvider.xcodeproj/xcshareddata/xcschemes/potassiumProvider.xcscheme b/potassiumProvider.xcodeproj/xcshareddata/xcschemes/potassiumProvider.xcscheme index b253dfb..f54e915 100644 --- a/potassiumProvider.xcodeproj/xcshareddata/xcschemes/potassiumProvider.xcscheme +++ b/potassiumProvider.xcodeproj/xcshareddata/xcschemes/potassiumProvider.xcscheme @@ -35,20 +35,6 @@ ReferencedContainer = "container:potassiumProvider.xcodeproj"> - - - - - - - -