@@ -15,42 +15,105 @@ jobs:
1515 test :
1616 name : Run Tests
1717 runs-on : macos-latest
18+ strategy :
19+ matrix :
20+ xcode : ['14.3.1'] # Add more versions if needed
21+ device : ['iPhone 14', 'iPhone 14 Pro', 'iPad Pro (12.9-inch) (6th generation)']
1822
1923 steps :
2024 - uses : actions/checkout@v4
2125 with :
2226 submodules : recursive
2327
24- - name : Select Xcode
25- run : sudo xcode-select -s /Applications/Xcode.app
26-
27- - name : List Available Schemes
28- run : xcodebuild -workspace LoopWorkspace.xcworkspace -list
28+ - name : Select Xcode ${{ matrix.xcode }}
29+ run : sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode }}.app
2930
30- - name : Build and Test
31+ - name : Run Unit Tests
3132 run : |
3233 xcodebuild test \
3334 -workspace LoopWorkspace.xcworkspace \
3435 -scheme LoopWorkspace \
35- -destination 'platform=iOS Simulator,name=iPhone 14,OS=latest' \
36+ -destination "platform=iOS Simulator,name=${{ matrix.device }},OS=latest" \
37+ -only-testing:OctreotideAlgorithmTests \
3638 -enableCodeCoverage YES \
3739 -resultBundlePath TestResults.xcresult
3840
3941 - name : Upload Test Results
4042 if : always()
4143 uses : actions/upload-artifact@v3
4244 with :
43- name : test-results
45+ name : test-results-${{ matrix.device }}
4446 path : TestResults.xcresult
4547
4648 - name : Generate Coverage Report
4749 if : success()
4850 run : |
49- xcrun xccov view --report TestResults.xcresult > coverage.txt
51+ xcrun xccov view --report TestResults.xcresult > coverage-${{ matrix.device }} .txt
5052
5153 - name : Upload Coverage
5254 if : success()
5355 uses : actions/upload-artifact@v3
5456 with :
55- name : code-coverage
56- path : coverage.txt
57+ name : code-coverage-${{ matrix.device }}
58+ path : coverage-${{ matrix.device }}.txt
59+
60+ integration-tests :
61+ name : Integration Tests
62+ needs : unit-tests
63+ runs-on : macos-latest
64+
65+ steps :
66+ - uses : actions/checkout@v4
67+ with :
68+ submodules : recursive
69+
70+ - name : Select Xcode
71+ run : sudo xcode-select -s /Applications/Xcode.app
72+
73+ - name : Run Simulation Tests
74+ run : |
75+ # Run simulator with different glucose patterns
76+ xcodebuild test \
77+ -workspace LoopWorkspace.xcworkspace \
78+ -scheme LoopWorkspace \
79+ -destination 'platform=iOS Simulator,name=iPhone 14,OS=latest' \
80+ -only-testing:GlucoseSimulatorTests \
81+ -resultBundlePath SimResults.xcresult
82+
83+ - name : Upload Simulation Results
84+ if : always()
85+ uses : actions/upload-artifact@v3
86+ with :
87+ name : simulation-results
88+ path : SimResults.xcresult
89+
90+ build-only :
91+ name : Build Without Signing
92+ needs : [unit-tests, integration-tests]
93+ runs-on : macos-latest
94+
95+ steps :
96+ - uses : actions/checkout@v4
97+ with :
98+ submodules : recursive
99+
100+ - name : Select Xcode
101+ run : sudo xcode-select -s /Applications/Xcode.app
102+
103+ - name : Build for Simulator
104+ run : |
105+ xcodebuild build \
106+ -workspace LoopWorkspace.xcworkspace \
107+ -scheme LoopWorkspace \
108+ -destination 'platform=iOS Simulator,name=iPhone 14,OS=latest' \
109+ -configuration Debug \
110+ CODE_SIGN_IDENTITY="" \
111+ CODE_SIGNING_REQUIRED=NO \
112+ CODE_SIGNING_ALLOWED=NO
113+
114+ - name : Archive Build Logs
115+ if : always()
116+ uses : actions/upload-artifact@v3
117+ with :
118+ name : build-logs
119+ path : ~/Library/Developer/Xcode/DerivedData/**/Logs/Build
0 commit comments