From c81750d433ebcb4830af87924220d1276eeeb979 Mon Sep 17 00:00:00 2001 From: Mark Villacampa Date: Fri, 5 Apr 2024 22:40:22 +0200 Subject: [PATCH] Register test observer in main queue (#834) --- Sources/SnapshotTesting/AssertSnapshot.swift | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Sources/SnapshotTesting/AssertSnapshot.swift b/Sources/SnapshotTesting/AssertSnapshot.swift index 552077e49..cd25d88f3 100644 --- a/Sources/SnapshotTesting/AssertSnapshot.swift +++ b/Sources/SnapshotTesting/AssertSnapshot.swift @@ -371,18 +371,24 @@ func sanitizePathComponent(_ string: String) -> String { // We need to clean counter between tests executions in order to support test-iterations. private class CleanCounterBetweenTestCases: NSObject, XCTestObservation { private static var registered = false - private static var registerQueue = DispatchQueue( - label: "co.pointfree.SnapshotTesting.testObserver") static func registerIfNeeded() { - registerQueue.sync { - if !registered { - registered = true - XCTestObservationCenter.shared.addTestObserver(CleanCounterBetweenTestCases()) + if Thread.isMainThread { + doRegisterIfNeeded() + } else { + DispatchQueue.main.sync { + doRegisterIfNeeded() } } } + private static func doRegisterIfNeeded() { + if !registered { + registered = true + XCTestObservationCenter.shared.addTestObserver(CleanCounterBetweenTestCases()) + } + } + func testCaseDidFinish(_ testCase: XCTestCase) { counterQueue.sync { counterMap = [:]