Skip to content

Commit 623113f

Browse files
authored
Refactor FXIOS-13481 [Swift 6 Migration] Turn on Concurrency for SummarizerKit Tests in BrowserKit (#31033)
* Turn on concurrency for summarizerTests * Fix summarizeControllerTests * Fix SummarizeViewModelTests * Make MockSummarizerService unchecked Sendable * Make MockLanguageModelSession unchecked Sendable * Add SummarizerServiceTests * Make TrackMemoryLeak extension MainActor isolated * use setup and teardown async throws * remove unneeded change and version bump * Update SummarizerServiceTests
1 parent a884306 commit 623113f

10 files changed

+35
-14
lines changed

BrowserKit/Package.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,11 @@ let package = Package(
220220
]
221221
),
222222
.testTarget(name: "SummarizeKitTests",
223-
dependencies: ["SummarizeKit"]),
223+
dependencies: ["SummarizeKit"],
224+
swiftSettings: [
225+
.unsafeFlags(["-enable-testing"]),
226+
.enableExperimentalFeature("StrictConcurrency")
227+
]),
224228
.target(
225229
name: "JWTKit",
226230
dependencies: ["Common", "Shared"],

BrowserKit/Tests/SummarizeKitTests/LiteLLMClientTests.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import XCTest
66
import Common
77
@testable import SummarizeKit
88

9+
@MainActor
910
final class LiteLLMClientTests: XCTestCase {
1011
private static let mockAPIEndpoint = "https://test-api-url.com"
1112
private static let mockAPIKey = "test-api-key"

BrowserKit/Tests/SummarizeKitTests/Mocks/MockLanguageModelSession.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ struct MockLanguageModelResponseSnapshot: LanguageModelResponseSnapshotProtocol
2525
/// Mock implementation of a language model session for testing the session and responses.
2626
/// This allows injecting controlled outputs or errors without calling the real inference backend.
2727
@available(iOS 26, *)
28-
final class MockLanguageModelSession: LanguageModelSessionProtocol {
28+
final class MockLanguageModelSession: LanguageModelSessionProtocol, @unchecked Sendable {
2929
var respondWith: [String] = [""]
3030
var respondWithError: Error?
3131

BrowserKit/Tests/SummarizeKitTests/Mocks/MockWebView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import WebKit
66

7-
class MockWebView: WKWebView {
7+
final class MockWebView: WKWebView, @unchecked Sendable {
88
var overridenURL: URL
99

1010
init(_ url: URL) {

BrowserKit/Tests/SummarizeKitTests/Mocks/XCTest+TrackMemoryLeak.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Foundation
66
import XCTest
77

88
public extension XCTestCase {
9+
@MainActor
910
func trackForMemoryLeaks(_ object: AnyObject?, file: StaticString = #filePath, line: UInt = #line) {
1011
addTeardownBlock { [weak object] in
1112
XCTAssertNil(object, "Memory leak detected in \(file):\(line)")

BrowserKit/Tests/SummarizeKitTests/SSEDataParserTests.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import XCTest
66
@testable import SummarizeKit
77

8+
@MainActor
89
final class SSEDataParserTests: XCTestCase {
910
private struct EventExampleType: Decodable, Equatable {
1011
let id: Int

BrowserKit/Tests/SummarizeKitTests/SummarizationCheckerTests.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
@testable import SummarizeKit
66
import XCTest
77

8+
@MainActor
89
final class SummarizationCheckerTests: XCTestCase {
910
func jsStubBuilder(
1011
canSummarize: Bool,

BrowserKit/Tests/SummarizeKitTests/SummarizeControllerTests.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ final class MockSummarizeNavigationHandler: SummarizeNavigationHandler {
3333
}
3434

3535
@MainActor
36-
final class SummarizeControllerTests: XCTestCase {
36+
final class SummarizeControllerTests: XCTestCase, @unchecked Sendable {
3737
private var summarizer: MockSummarizer!
3838
private var navigationHandler: MockSummarizeNavigationHandler!
3939
private var webView: MockWebView!
@@ -87,8 +87,8 @@ final class SummarizeControllerTests: XCTestCase {
8787
)
8888
private let maxWords = 5000
8989

90-
override func setUp() {
91-
super.setUp()
90+
override func setUp() async throws {
91+
try await super.setUp()
9292
UIView.setAnimationsEnabled(false)
9393
summarizer = MockSummarizer(shouldRespond: ["Response"], shouldThrowError: nil)
9494
navigationHandler = MockSummarizeNavigationHandler()
@@ -97,14 +97,14 @@ final class SummarizeControllerTests: XCTestCase {
9797
AppContainer.shared.register(service: DefaultThemeManager(sharedContainerIdentifier: "") as ThemeManager)
9898
}
9999

100-
override func tearDown() {
100+
override func tearDown() async throws {
101101
UIView.setAnimationsEnabled(true)
102102
summarizer = nil
103103
navigationHandler = nil
104104
webView = nil
105105
viewModel = nil
106106
AppContainer.shared.reset()
107-
super.tearDown()
107+
try await super.tearDown()
108108
}
109109

110110
func test_viewDidLoad_startSummarizing() async {

BrowserKit/Tests/SummarizeKitTests/SummarizeViewModelTests.swift

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// file, You can obtain one at http://mozilla.org/MPL/2.0/
44

55
import XCTest
6+
import Common
67
@testable import SummarizeKit
78

89
extension Result {
@@ -25,28 +26,28 @@ class MockDateProvider: DateProvider {
2526
}
2627

2728
@MainActor
28-
final class SummarizeViewModelTests: XCTestCase {
29+
final class SummarizeViewModelTests: XCTestCase, @unchecked Sendable {
2930
private var tosAcceptor: MockSummarizeToSAcceptor!
3031
private var summarizerService: MockSummarizerService!
3132
private var webView: MockWebView!
3233
private var dateProvider: MockDateProvider!
3334
private let maxWords = 5000
3435
private let url = URL(string: "https://example.com")!
3536

36-
override func setUp() {
37-
super.setUp()
37+
override func setUp() async throws {
38+
try await super.setUp()
3839
webView = MockWebView(url)
3940
dateProvider = MockDateProvider()
4041
summarizerService = MockSummarizerService()
4142
tosAcceptor = MockSummarizeToSAcceptor()
4243
}
4344

44-
override func tearDown() {
45+
override func tearDown() async throws {
4546
tosAcceptor = nil
4647
dateProvider = nil
4748
summarizerService = nil
4849
webView = nil
49-
super.tearDown()
50+
try await super.tearDown()
5051
}
5152

5253
func test_summarize_whenTosNotAccepted_whenTriggerIsShake_showsToSScreen() {

BrowserKit/Tests/SummarizeKitTests/SummarizerServiceTests.swift

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,24 @@
44

55
@testable import SummarizeKit
66
import XCTest
7+
import Common
78

9+
@MainActor
810
final class SummarizerServiceTests: XCTestCase {
911
static let mockResponse = ["Summarized", "content"]
1012
static let maxWords = 100
1113
static let maxWordCount = 50
12-
var mockWebView = MockWebView(URL(string: "https://foo.com")!)
14+
private var mockWebView: MockWebView!
15+
16+
override func setUp() async throws {
17+
try await super.setUp()
18+
mockWebView = MockWebView(URL(string: "https://foo.com")!)
19+
}
20+
21+
override func tearDown() async throws {
22+
mockWebView = nil
23+
try await super.tearDown()
24+
}
1325

1426
func testSummarizerServiceReturnsSummary() async throws {
1527
let subject = createSubject()

0 commit comments

Comments
 (0)