Skip to content

Commit 632b42b

Browse files
[CI] Bump Xcode version (#3509)
1 parent 7941389 commit 632b42b

File tree

987 files changed

+123
-121
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

987 files changed

+123
-121
lines changed

.github/workflows/cron-checks.yml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ jobs:
4141
strategy:
4242
matrix:
4343
include:
44+
- ios: 18.1
45+
xcode: 16.1
46+
os: macos-15
47+
device: "iPhone 16 Pro"
48+
setup_runtime: false
4449
- ios: 17.4
4550
xcode: 15.4
4651
os: macos-14
@@ -123,6 +128,11 @@ jobs:
123128
strategy:
124129
matrix:
125130
include:
131+
- ios: 18.1
132+
xcode: 16.1
133+
os: macos-15
134+
device: "iPhone 16 Pro"
135+
setup_runtime: false
126136
- ios: 17.4
127137
xcode: 15.4
128138
os: macos-14
@@ -138,16 +148,6 @@ jobs:
138148
os: macos-14
139149
device: "iPhone 13 Pro"
140150
setup_runtime: true
141-
- ios: 14.5
142-
xcode: 14.2
143-
os: macos-12
144-
device: "iPhone 12 Pro"
145-
setup_runtime: true
146-
- ios: 13.7
147-
xcode: 14.2
148-
os: macos-12
149-
device: "iPhone 11 Pro"
150-
setup_runtime: true
151151
fail-fast: false
152152
runs-on: ${{ matrix.os }}
153153
env:
@@ -189,11 +189,11 @@ jobs:
189189
fastlane/test_output/logs/*/Diagnostics/**/*.txt
190190
fastlane/test_output/logs/*/Diagnostics/simctl_diagnostics/DiagnosticReports/*
191191
192-
build-xcode14:
193-
name: Build LLC + UI (Xcode 14)
194-
runs-on: macos-12
192+
build-old-xcode:
193+
name: Build LLC + UI (Xcode 15)
194+
runs-on: macos-14
195195
env:
196-
XCODE_VERSION: "14.0.1"
196+
XCODE_VERSION: "15.0.1"
197197
steps:
198198
- name: Connect Bot
199199
uses: webfactory/[email protected]

.github/workflows/release-publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
jobs:
77
release:
88
name: Publish new release
9-
runs-on: macos-12
9+
runs-on: macos-15
1010
steps:
1111
- name: Connect Bot
1212
uses: webfactory/[email protected]

.github/workflows/smoke-checks.yml

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ concurrency:
1919

2020
env:
2121
HOMEBREW_NO_INSTALL_CLEANUP: 1 # Disable cleanup for homebrew, we don't need it on CI
22-
IOS_SIMULATOR_DEVICE: "iPhone 15 Pro (17.4)"
22+
IOS_SIMULATOR_DEVICE: "iPhone 16 Pro (18.1)"
2323
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2424
GITHUB_PR_NUM: ${{ github.event.pull_request.number }}
2525

@@ -48,9 +48,9 @@ jobs:
4848
4949
automated-code-review:
5050
name: Automated Code Review
51-
runs-on: macos-12
51+
runs-on: macos-14
5252
env:
53-
XCODE_VERSION: "14.0.1"
53+
XCODE_VERSION: "15.0.1"
5454
if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
5555
steps:
5656
- uses: actions/[email protected]
@@ -67,12 +67,12 @@ jobs:
6767
if: startsWith(github.event.pull_request.head.ref, 'release/')
6868
run: bundle exec fastlane pod_lint
6969

70-
build-xcode14:
71-
name: Build LLC + UI (Xcode 14)
72-
runs-on: macos-12
70+
build-old-xcode:
71+
name: Build LLC + UI (Xcode 15)
72+
runs-on: macos-14
7373
if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
7474
env:
75-
XCODE_VERSION: "14.0.1"
75+
XCODE_VERSION: "15.0.1"
7676
steps:
7777
- uses: actions/[email protected]
7878
- uses: ./.github/actions/ruby-cache
@@ -87,7 +87,7 @@ jobs:
8787

8888
test-llc-debug:
8989
name: Test LLC (Debug)
90-
runs-on: macos-14
90+
runs-on: macos-15
9191
if: ${{ github.event.inputs.snapshots != 'true' }}
9292
needs: build-test-app-and-frameworks
9393
steps:
@@ -136,7 +136,7 @@ jobs:
136136
137137
test-ui-debug:
138138
name: Test UI (Debug)
139-
runs-on: macos-14
139+
runs-on: macos-15
140140
needs: build-test-app-and-frameworks
141141
if: ${{ github.event_name != 'push' }}
142142
steps:
@@ -152,7 +152,7 @@ jobs:
152152
SKIP_BREW_BOOTSTRAP: true
153153
- name: Run UI Tests (Debug)
154154
run: bundle exec fastlane test_ui device:"${{ env.IOS_SIMULATOR_DEVICE }}" skip_build:true record:${{ github.event.inputs.snapshots }}
155-
timeout-minutes: 60
155+
timeout-minutes: 120
156156
env:
157157
GITHUB_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }} # to open a PR
158158
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} # to use github cli
@@ -170,7 +170,7 @@ jobs:
170170
171171
allure_testops_launch:
172172
name: Launch Allure TestOps
173-
runs-on: macos-13
173+
runs-on: macos-14
174174
if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
175175
needs: build-test-app-and-frameworks
176176
outputs:
@@ -189,7 +189,7 @@ jobs:
189189

190190
test-e2e-debug:
191191
name: Test E2E UI (Debug)
192-
runs-on: macos-14
192+
runs-on: macos-15
193193
if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
194194
needs:
195195
- allure_testops_launch
@@ -216,8 +216,6 @@ jobs:
216216
run: bundle exec fastlane test_e2e_mock device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}' test_without_building:true
217217
timeout-minutes: 100
218218
env:
219-
XCODE_VERSION: "15.0.1" # the most stable pair of Xcode
220-
IOS_SIMULATOR_DEVICE: "iPhone 15 Pro (17.0)" # and iOS
221219
MATRIX_SIZE: ${{ strategy.job-total }}
222220
STREAM_DEMO_APP_SECRET: ${{ secrets.STREAM_DEMO_APP_SECRET }}
223221
- name: Allure TestOps Upload

.github/workflows/update-copyright.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ env:
1313
jobs:
1414
copyright:
1515
name: Copyright
16-
runs-on: macos-13
16+
runs-on: macos-14
1717
steps:
1818
- uses: actions/[email protected]
1919
- uses: ./.github/actions/ruby-cache

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
77
### 🐞 Fixed
88
- Fix a rare infinite loop triggering a crash when handling database changes [#3508](https://github.com/GetStream/stream-chat-swift/pull/3508)
99
- Fix reconnection timeout handler not working in the token provider phase [#3513](https://github.com/GetStream/stream-chat-swift/pull/3513)
10+
### 🔄 Changed
11+
- Minor breaking change in the test tools. Some mock classes were made internal and now require a `@testable` annotation [#3509](https://github.com/GetStream/stream-chat-swift/pull/3509)
1012

1113
## StreamChatUI
1214
### 🐞 Fixed

StreamChatUITestsAppUITests/Robots/UserRobot.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,9 @@ extension UserRobot {
142142
func clearComposer() -> Self {
143143
if !composer.textView.text.isEmpty {
144144
composer.inputField.tap()
145+
if !composer.selectAllButton.waitForExistence(timeout: 1) {
146+
composer.inputField.tap()
147+
}
145148
composer.selectAllButton.wait().safeTap()
146149
composer.inputField.typeText(XCUIKeyboardKey.delete.rawValue)
147150
}

TestTools/StreamChatTestTools/Mocks/StreamChat/Controllers/ChatChannelController_Mock.swift

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,20 @@
55
import Foundation
66
@testable import StreamChat
77

8-
public class ChatChannelController_Mock: ChatChannelController {
8+
class ChatChannelController_Mock: ChatChannelController {
99

1010
var mockCid: ChannelId?
11-
public override var cid: ChannelId? {
11+
override var cid: ChannelId? {
1212
mockCid ?? super.cid
1313
}
1414

1515
var mockFirstUnreadMessageId: MessageId?
16-
public override var firstUnreadMessageId: MessageId? {
16+
override var firstUnreadMessageId: MessageId? {
1717
mockFirstUnreadMessageId ?? super.firstUnreadMessageId
1818
}
1919

2020
/// Creates a new mock instance of `ChatChannelController`.
21-
public static func mock(chatClientConfig: ChatClientConfig? = nil) -> ChatChannelController_Mock {
21+
static func mock(chatClientConfig: ChatClientConfig? = nil) -> ChatChannelController_Mock {
2222
.init(
2323
channelQuery: .init(cid: try! .init(cid: "mock:channel")),
2424
channelListQuery: nil,
@@ -35,7 +35,7 @@ public class ChatChannelController_Mock: ChatChannelController {
3535
)
3636
}
3737

38-
public static func mock(
38+
static func mock(
3939
channelQuery: ChannelQuery,
4040
channelListQuery: ChannelListQuery?,
4141
client: ChatClient
@@ -47,7 +47,7 @@ public class ChatChannelController_Mock: ChatChannelController {
4747
)
4848
}
4949

50-
public static func mock(client: ChatClient) -> ChatChannelController_Mock {
50+
static func mock(client: ChatClient) -> ChatChannelController_Mock {
5151
.init(
5252
channelQuery: .init(cid: try! .init(cid: "mock:channel")),
5353
channelListQuery: nil,
@@ -56,7 +56,7 @@ public class ChatChannelController_Mock: ChatChannelController {
5656
}
5757

5858
var createNewMessageCallCount = 0
59-
public override func createNewMessage(
59+
override func createNewMessage(
6060
messageId: MessageId? = nil,
6161
text: String, pinning: MessagePinning? = nil,
6262
isSilent: Bool = false,
@@ -71,61 +71,61 @@ public class ChatChannelController_Mock: ChatChannelController {
7171
createNewMessageCallCount += 1
7272
}
7373

74-
public var hasLoadedAllNextMessages_mock: Bool? = true
75-
public override var hasLoadedAllNextMessages: Bool {
74+
var hasLoadedAllNextMessages_mock: Bool? = true
75+
override var hasLoadedAllNextMessages: Bool {
7676
hasLoadedAllNextMessages_mock ?? super.hasLoadedAllNextMessages
7777
}
7878

79-
public var hasLoadedAllPreviousMessages_mock: Bool? = true
80-
public override var hasLoadedAllPreviousMessages: Bool {
79+
var hasLoadedAllPreviousMessages_mock: Bool? = true
80+
override var hasLoadedAllPreviousMessages: Bool {
8181
hasLoadedAllPreviousMessages_mock ?? super.hasLoadedAllPreviousMessages
8282
}
8383

84-
public var markedAsUnread_mock: Bool? = true
85-
public override var isMarkedAsUnread: Bool {
84+
var markedAsUnread_mock: Bool? = true
85+
override var isMarkedAsUnread: Bool {
8686
markedAsUnread_mock ?? super.isMarkedAsUnread
8787
}
8888

89-
public var channel_mock: ChatChannel?
90-
override public var channel: ChatChannel? {
89+
var channel_mock: ChatChannel?
90+
override var channel: ChatChannel? {
9191
channel_mock ?? super.channel
9292
}
9393

94-
public var channelQuery_mock: ChannelQuery?
95-
public override var channelQuery: ChannelQuery {
94+
var channelQuery_mock: ChannelQuery?
95+
override var channelQuery: ChannelQuery {
9696
channelQuery_mock ?? super.channelQuery
9797
}
9898

99-
public var messages_mock: [ChatMessage]?
100-
override public var messages: LazyCachedMapCollection<ChatMessage> {
99+
var messages_mock: [ChatMessage]?
100+
override var messages: LazyCachedMapCollection<ChatMessage> {
101101
messages_mock.map { $0.lazyCachedMap { $0 } } ?? super.messages
102102
}
103103

104-
public var markReadCallCount = 0
105-
public override func markRead(completion: ((Error?) -> Void)?) {
104+
var markReadCallCount = 0
105+
override func markRead(completion: ((Error?) -> Void)?) {
106106
markReadCallCount += 1
107107
}
108108

109-
public var state_mock: State?
110-
override public var state: DataController.State {
109+
var state_mock: State?
110+
override var state: DataController.State {
111111
get { state_mock ?? super.state }
112112
set { super.state = newValue }
113113
}
114114

115-
public private(set) var synchronize_completion: ((Error?) -> Void)?
116-
override public func synchronize(_ completion: ((Error?) -> Void)? = nil) {
115+
private(set) var synchronize_completion: ((Error?) -> Void)?
116+
override func synchronize(_ completion: ((Error?) -> Void)? = nil) {
117117
synchronize_completion = completion
118118
}
119119

120-
public var loadFirstPageCallCount = 0
121-
public var loadFirstPage_result: Error?
122-
public override func loadFirstPage(_ completion: ((Error?) -> Void)? = nil) {
120+
var loadFirstPageCallCount = 0
121+
var loadFirstPage_result: Error?
122+
override func loadFirstPage(_ completion: ((Error?) -> Void)? = nil) {
123123
loadFirstPageCallCount += 1
124124
completion?(loadFirstPage_result)
125125
}
126126

127-
public var loadPageAroundMessageIdCallCount = 0
128-
public override func loadPageAroundMessageId(
127+
var loadPageAroundMessageIdCallCount = 0
128+
override func loadPageAroundMessageId(
129129
_ messageId: MessageId,
130130
limit: Int? = nil,
131131
completion: ((Error?) -> Void)? = nil
@@ -134,7 +134,7 @@ public class ChatChannelController_Mock: ChatChannelController {
134134
}
135135
}
136136

137-
public extension ChatChannelController_Mock {
137+
extension ChatChannelController_Mock {
138138
/// Simulates the initial conditions. Setting these values doesn't trigger any observer callback.
139139
func simulateInitial(channel: ChatChannel, messages: [ChatMessage], state: DataController.State) {
140140
channel_mock = channel

TestTools/StreamChatTestTools/Mocks/StreamChat/Controllers/ChatChannelListController_Mock.swift

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,40 +5,40 @@
55
import Foundation
66
@testable import StreamChat
77

8-
public class ChatChannelListController_Mock: ChatChannelListController, Spy {
9-
public let spyState = SpyState()
10-
public var loadNextChannelsIsCalled = false
11-
public var loadNextChannelsCallCount = 0
12-
public var resetChannelsQueryResult: Result<(synchedAndWatched: [ChatChannel], unwanted: Set<ChannelId>), Error>?
13-
public var refreshLoadedChannelsResult: Result<Set<ChannelId>, any Error>?
8+
class ChatChannelListController_Mock: ChatChannelListController, Spy {
9+
let spyState = SpyState()
10+
var loadNextChannelsIsCalled = false
11+
var loadNextChannelsCallCount = 0
12+
var resetChannelsQueryResult: Result<(synchedAndWatched: [ChatChannel], unwanted: Set<ChannelId>), Error>?
13+
var refreshLoadedChannelsResult: Result<Set<ChannelId>, any Error>?
1414

1515
/// Creates a new mock instance of `ChatChannelListController`.
16-
public static func mock(client: ChatClient? = nil) -> ChatChannelListController_Mock {
16+
static func mock(client: ChatClient? = nil) -> ChatChannelListController_Mock {
1717
.init(query: .init(filter: .equal(.memberCount, to: 0)), client: client ?? .mock())
1818
}
1919

20-
public var channels_mock: [ChatChannel]?
21-
override public var channels: LazyCachedMapCollection<ChatChannel> {
20+
var channels_mock: [ChatChannel]?
21+
override var channels: LazyCachedMapCollection<ChatChannel> {
2222
channels_mock.map { $0.lazyCachedMap { $0 } } ?? super.channels
2323
}
2424

25-
public var state_mock: State?
26-
override public var state: DataController.State {
25+
var state_mock: State?
26+
override var state: DataController.State {
2727
get { state_mock ?? super.state }
2828
set { super.state = newValue }
2929
}
3030

31-
override public func loadNextChannels(limit: Int?, completion: ((Error?) -> Void)?) {
31+
override func loadNextChannels(limit: Int?, completion: ((Error?) -> Void)?) {
3232
loadNextChannelsCallCount += 1
3333
loadNextChannelsIsCalled = true
3434
}
3535

36-
override public func refreshLoadedChannels(completion: @escaping (Result<Set<ChannelId>, any Error>) -> Void) {
36+
override func refreshLoadedChannels(completion: @escaping (Result<Set<ChannelId>, any Error>) -> Void) {
3737
record()
3838
refreshLoadedChannelsResult.map(completion)
3939
}
4040

41-
override public func resetQuery(
41+
override func resetQuery(
4242
watchedAndSynchedChannelIds: Set<ChannelId>,
4343
synchedChannelIds: Set<ChannelId>,
4444
completion: @escaping (Result<(synchedAndWatched: [ChatChannel], unwanted: Set<ChannelId>), Error>) -> Void
@@ -48,7 +48,7 @@ public class ChatChannelListController_Mock: ChatChannelListController, Spy {
4848
}
4949
}
5050

51-
public extension ChatChannelListController_Mock {
51+
extension ChatChannelListController_Mock {
5252
/// Simulates the initial conditions. Setting these values doesn't trigger any observer callback.
5353
func simulateInitial(channels: [ChatChannel], state: DataController.State) {
5454
channels_mock = channels

0 commit comments

Comments
 (0)