Skip to content

Commit 01a85d0

Browse files
committed
Parallelize per platform
1 parent 4e116c5 commit 01a85d0

File tree

2 files changed

+51
-40
lines changed

2 files changed

+51
-40
lines changed

.github/workflows/test.yml

Lines changed: 14 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -13,56 +13,30 @@ env:
1313
DEVELOPER_DIR: /Applications/Xcode_14.2.app
1414

1515
jobs:
16-
test-product:
16+
test:
1717
name: Test
1818
runs-on: macos-12
1919
strategy:
2020
matrix:
21-
test_platform:
22-
- "iOS Simulator,name=iPhone 13 Pro"
23-
- "macOS"
24-
- "tvOS Simulator,name=Apple TV 4K (at 1080p) (2nd generation)"
25-
- "watchOS Simulator,name=Apple Watch Series 7 (45mm)"
21+
platform:
22+
- ios
23+
- macos
24+
- tvos
25+
- watchos
2626
steps:
2727
- uses: actions/checkout@v2
28-
- name: Test
29-
run: xcodebuild test -scheme swiftui-atom-properties -destination platform="${{ matrix.test_platform }}"
30-
31-
test-example-ios:
32-
name: Test
33-
runs-on: macos-12
34-
strategy:
35-
matrix:
36-
test_platform:
37-
- "iOS Simulator,name=iPhone 13 Pro"
38-
steps:
39-
- uses: actions/checkout@v2
40-
- name: Test
41-
run: |
42-
cd Examples/Packages/iOS
43-
xcodebuild test -scheme iOSExamples -destination platform="${{ matrix.test_platform }}"
44-
45-
test-example-cross-platform:
46-
name: Test
47-
runs-on: macos-12
48-
strategy:
49-
matrix:
50-
test_platform:
51-
- "iOS Simulator,name=iPhone 13 Pro"
52-
- "macOS"
53-
- "tvOS Simulator,name=Apple TV 4K (at 1080p) (2nd generation)"
54-
steps:
55-
- uses: actions/checkout@v2
56-
- name: Test
57-
run: |
58-
cd Examples/Packages/CrossPlatform
59-
xcodebuild test -scheme CrossPlatformExamples -destination platform="${{ matrix.test_platform }}"
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 }}
6036

6137
validation:
6238
name: Validation
6339
runs-on: macos-12
64-
env:
65-
DEVELOPER_DIR: /Applications/Xcode_14.2.app
6640
steps:
6741
- uses: actions/checkout@v2
6842
- name: Show environments

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)