Skip to content

Commit 1ba32b7

Browse files
authored
Merge pull request #2450 from maxchuquimia/fix-kingfisherwrapper-uiapplication-shared-crash-in-unit-tests
Fix a crash when trying to access KingfisherWrapper<UIApplication>.shared in a Unit Test
2 parents d30a5fa + d157b52 commit 1ba32b7

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

Sources/Cache/ImageCache.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1292,7 +1292,8 @@ extension KingfisherWrapper where Base: UIApplication {
12921292
public static var shared: UIApplication? {
12931293
let selector = NSSelectorFromString("sharedApplication")
12941294
guard Base.responds(to: selector) else { return nil }
1295-
return Base.perform(selector).takeUnretainedValue() as? UIApplication
1295+
guard let unmanaged = Base.perform(selector) else { return nil }
1296+
return unmanaged.takeUnretainedValue() as? UIApplication
12961297
}
12971298
}
12981299
#endif

Tests/KingfisherTests/ImageCacheTests.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -895,7 +895,15 @@ class ImageCacheTests: XCTestCase {
895895
let result = try XCTUnwrap(fileURL)
896896
XCTAssertTrue(result.absoluteString.hasSuffix(".myExt"))
897897
}
898-
898+
899+
#if !os(macOS) && !os(watchOS)
900+
func testKingfisherWrapperUIApplicationSharedReturnsNilInUnitTest() {
901+
// UIApplication.shared is not available in some Unit Tests contexts.
902+
// This tests that accessing it via KingfisherWrapper does not cause a crash.
903+
XCTAssertNil(KingfisherWrapper<UIApplication>.shared)
904+
}
905+
#endif
906+
899907
// MARK: - Helper
900908
private func storeMultipleImages(_ completionHandler: @escaping () -> Void) {
901909
let group = DispatchGroup()

0 commit comments

Comments
 (0)