-
Notifications
You must be signed in to change notification settings - Fork 70
156 lines (154 loc) · 6.49 KB
/
Copy pathcompatibility_tests.yml
File metadata and controls
156 lines (154 loc) · 6.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
name: Compatibility tests
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
compatibility_tests_macos:
name: Execute compatibility tests for macOS
strategy:
fail-fast: false
matrix:
os: [macos-15]
xcode-version: ["26.3"]
release: [2024]
# Limit to self-hosted to reduce action cost
runs-on:
- self-hosted
- ${{ matrix.os }}
env:
OPENSWIFTUI_WERROR: 0 # Disable it to avoid enable OAG's werror and hit conflicts
OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 1
OPENSWIFTUI_SWIFT_LOG: 0
OPENSWIFTUI_SWIFT_CRYPTO: 0
OPENSWIFTUI_TARGET_RELEASE: ${{ matrix.release }}
OPENSWIFTUI_USE_LOCAL_DEPS: 1
OPENSWIFTUI_LINK_TESTING: 1
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v4
- name: Setup Xcode
uses: OpenSwiftUIProject/setup-xcode@v2
with:
xcode-version: ${{ matrix.xcode-version }}
- name: Set up build environment
run: Scripts/CI/darwin_setup_build.sh
shell: bash
- name: Install xcbeautify
run: brew install xcbeautify
- name: Run compatibility tests on OpenSwiftUI + macOS
run: |
set -o pipefail
# Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this.
NSUnbufferedIO=YES swift test \
--disable-experimental-prebuilts \
--filter OpenSwiftUICompatibilityTests \
--build-path .build-compatibility-test-debug \
2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified
env:
OPENSWIFTUI_COMPATIBILITY_TEST: 0
- name: Run compatibility tests on SwiftUI + macOS
run: |
set -o pipefail
# Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this.
NSUnbufferedIO=YES swift test \
--disable-experimental-prebuilts \
--filter OpenSwiftUICompatibilityTests \
--build-path .build-compatibility-test-debug \
2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified
env:
OPENSWIFTUI_COMPATIBILITY_TEST: 1
compatibility_tests_ios:
name: Execute compatibility tests for iOS
strategy:
fail-fast: false
matrix:
os: [macos-15]
xcode-version: ["26.3"]
release: [2024]
ios-version: ["18.5"]
include:
- ios-version: "18.5"
ios-simulator-name: "iPhone 16 Pro"
# Limit to self-hosted to reduce action cost
runs-on:
- self-hosted
- ${{ matrix.os }}
env:
OPENSWIFTUI_WERROR: 0 # Disable it to avoid enable OAG's werror and hit conflicts
OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 1
OPENSWIFTUI_SWIFT_LOG: 0
OPENSWIFTUI_SWIFT_CRYPTO: 0
OPENSWIFTUI_TARGET_RELEASE: ${{ matrix.release }}
OPENSWIFTUI_SUPPORT_MULTI_PRODUCTS: 0
OPENSWIFTUI_USE_LOCAL_DEPS: 1
OPENSWIFTUI_LINK_TESTING: 1
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v4
- name: Setup Xcode
uses: OpenSwiftUIProject/setup-xcode@v2
with:
xcode-version: ${{ matrix.xcode-version }}
- name: Set up build environment
run: Scripts/CI/darwin_setup_build.sh
shell: bash
- name: Install xcbeautify
run: brew install xcbeautify
- name: Prepare isolated DerivedData
shell: bash
run: |
openswiftui_derived_data_path="${RUNNER_TEMP:-/tmp}/compatibility-ios-derived-data-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-0}-${{ matrix.ios-version }}-${{ matrix.release }}-openswiftui"
swiftui_derived_data_path="${RUNNER_TEMP:-/tmp}/compatibility-ios-derived-data-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-0}-${{ matrix.ios-version }}-${{ matrix.release }}-swiftui"
rm -rf "$openswiftui_derived_data_path" "$swiftui_derived_data_path"
mkdir -p "$openswiftui_derived_data_path" "$swiftui_derived_data_path"
echo "OPENSWIFTUI_DERIVED_DATA_PATH=$openswiftui_derived_data_path" >> "$GITHUB_ENV"
echo "SWIFTUI_DERIVED_DATA_PATH=$swiftui_derived_data_path" >> "$GITHUB_ENV"
- name: Run compatibility tests on OpenSwiftUI + iOS
run: |
set -o pipefail
# Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this.
# Xcode 26.3 + iOS 18.5 fails to launch arm64 SwiftPM package test
# runners with CoreSimulator codesigning errors; force the x86_64
# simulator slice until that launch path is fixed.
NSUnbufferedIO=YES xcodebuild -IDEPackageEnablePrebuilts=NO test \
-scheme OpenSwiftUI \
-configuration Debug \
-destination "platform=iOS Simulator,OS=${{ matrix.ios-version }},name=${{ matrix.ios-simulator-name }},arch=x86_64" \
-only-testing:OpenSwiftUICompatibilityTests \
-derivedDataPath "$OPENSWIFTUI_DERIVED_DATA_PATH" \
-skipMacroValidation \
-skipPackagePluginValidation \
ONLY_ACTIVE_ARCH=YES \
2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified
env:
OPENSWIFTUI_COMPATIBILITY_TEST: 0
- name: Run compatibility tests on SwiftUI + iOS
run: |
set -o pipefail
# Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this.
# See the OpenSwiftUI iOS compatibility step above: force x86_64 to
# avoid the arm64 package test runner launch/codesigning failure.
NSUnbufferedIO=YES xcodebuild -IDEPackageEnablePrebuilts=NO test \
-scheme OpenSwiftUI \
-configuration Debug \
-destination "platform=iOS Simulator,OS=${{ matrix.ios-version }},name=${{ matrix.ios-simulator-name }},arch=x86_64" \
-only-testing:OpenSwiftUICompatibilityTests \
-derivedDataPath "$SWIFTUI_DERIVED_DATA_PATH" \
-skipMacroValidation \
-skipPackagePluginValidation \
ONLY_ACTIVE_ARCH=YES \
2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified
env:
OPENSWIFTUI_COMPATIBILITY_TEST: 1
- name: Clean up isolated DerivedData
if: always()
shell: bash
run: |
if [[ -n "${OPENSWIFTUI_DERIVED_DATA_PATH:-}" ]]; then
rm -rf "$OPENSWIFTUI_DERIVED_DATA_PATH"
fi
if [[ -n "${SWIFTUI_DERIVED_DATA_PATH:-}" ]]; then
rm -rf "$SWIFTUI_DERIVED_DATA_PATH"
fi