Skip to content

Commit cfafe05

Browse files
authored
Parallelize unit tests on CI (#42)
* Parallelize unit tests on CI * Parallelize per platform
1 parent 31c19ab commit cfafe05

File tree

3 files changed

+57
-36
lines changed

3 files changed

+57
-36
lines changed

.github/workflows/test.yml

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,34 +9,40 @@ on:
99
- main
1010
workflow_dispatch:
1111

12+
env:
13+
DEVELOPER_DIR: /Applications/Xcode_14.2.app
14+
1215
jobs:
1316
test:
1417
name: Test
1518
runs-on: macos-12
1619
strategy:
1720
matrix:
18-
xcode_version:
19-
- 14.2
20-
env:
21-
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode_version }}.app
21+
platform:
22+
- ios
23+
- macos
24+
- tvos
25+
- watchos
2226
steps:
2327
- uses: actions/checkout@v2
24-
- name: Show environments
25-
run: |
26-
swift --version
27-
xcodebuild -version
28-
- name: Test library
29-
run: make test-library
30-
- name: Test examples
31-
run: make test-examples
28+
- name: Test product
29+
run: scripts/test.sh product ${{ matrix.platform }}
30+
- name: Test example iOS
31+
if: matrix.platform == 'ios'
32+
run: scripts/test.sh example-ios ${{ matrix.platform }}
33+
- name: Test example cross platform
34+
if: matrix.platform == 'ios' || matrix.platform == 'macos' || matrix.platform == 'tvos'
35+
run: scripts/test.sh example-cross-platform ${{ matrix.platform }}
3236

3337
validation:
3438
name: Validation
3539
runs-on: macos-12
36-
env:
37-
DEVELOPER_DIR: /Applications/Xcode_14.2.app
3840
steps:
3941
- uses: actions/checkout@v2
42+
- name: Show environments
43+
run: |
44+
swift --version
45+
xcodebuild -version
4046
- uses: actions/cache@v3
4147
with:
4248
path: bin

Makefile

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
TOOL = scripts/swift-run.sh
22
PACKAGE = SWIFTUI_ATOM_PROPERTIES_DEVELOPMENT=1 swift package -c release
33
SWIFT_FILE_PATHS = Package.swift Sources Tests Examples
4-
TEST_PLATFORM_IOS = iOS Simulator,name=iPhone 13 Pro
5-
TEST_PLATFORM_MACOS = macOS
6-
TEST_PLATFORM_TVOS = tvOS Simulator,name=Apple TV 4K (at 1080p) (2nd generation)
7-
TEST_PLATFORM_WATCHOS = watchOS Simulator,name=Apple Watch Series 7 (45mm)
84

95
.PHONY: proj
106
proj:
@@ -35,21 +31,3 @@ docs-preview:
3531
--disable-sandbox \
3632
preview-documentation \
3733
--product Atoms
38-
39-
.PHONY: test
40-
test: test-library test-examples
41-
42-
.PHONY: test-library
43-
test-library:
44-
for platform in "$(TEST_PLATFORM_IOS)" "$(TEST_PLATFORM_MACOS)" "$(TEST_PLATFORM_TVOS)" "$(TEST_PLATFORM_WATCHOS)"; do \
45-
xcodebuild test -scheme swiftui-atom-properties -destination platform="$$platform"; \
46-
done
47-
48-
.PHONY: test-examples
49-
test-examples:
50-
cd Examples/Packages/iOS && for platform in "$(TEST_PLATFORM_IOS)" ; do \
51-
xcodebuild test -scheme iOSExamples -destination platform="$$platform"; \
52-
done
53-
cd Examples/Packages/CrossPlatform && for platform in "$(TEST_PLATFORM_IOS)" "$(TEST_PLATFORM_MACOS)" "$(TEST_PLATFORM_TVOS)" ; do \
54-
xcodebuild test -scheme CrossPlatformExamples -destination platform="$$platform"; \
55-
done

scripts/test.sh

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/bin/bash
2+
3+
set -eu
4+
5+
TARGET=$1
6+
PLATFORM=$2
7+
8+
pushd "$(cd $(dirname $0)/.. && pwd)" &>/dev/null
9+
10+
case $PLATFORM in
11+
ios)
12+
platform="iOS Simulator,name=iPhone 13 Pro"
13+
;;
14+
macos)
15+
platform="macOS"
16+
;;
17+
tvos)
18+
platform="tvOS Simulator,name=Apple TV 4K (at 1080p) (2nd generation)"
19+
;;
20+
watchos)
21+
platform="watchOS Simulator,name=Apple Watch Series 7 (45mm)"
22+
;;
23+
esac
24+
25+
case $TARGET in
26+
product)
27+
xcodebuild test -scheme swiftui-atom-properties -destination platform="$platform"
28+
;;
29+
example-ios)
30+
cd Examples/Packages/iOS
31+
xcodebuild test -scheme iOSExamples -destination platform="$platform"
32+
;;
33+
example-cross-platform)
34+
cd Examples/Packages/CrossPlatform
35+
xcodebuild test -scheme CrossPlatformExamples -destination platform="$platform"
36+
;;
37+
esac

0 commit comments

Comments
 (0)