From 3d9dc221d62254f52f251c26ff2603417c0d02e6 Mon Sep 17 00:00:00 2001 From: Anders Ha Date: Tue, 16 Jun 2020 13:10:09 +0100 Subject: [PATCH] Fix tests for Mac Catalyst. --- ReactiveCocoa.xcodeproj/project.pbxproj | 11 +++++++++++ .../KeyValueObservingSpec+Swift4.swift | 17 +++-------------- .../KeyValueObservingSpec.swift | 17 +++-------------- .../QueueScheduler+Factory.swift | 19 +++++++++++++++++++ 4 files changed, 36 insertions(+), 28 deletions(-) create mode 100644 ReactiveCocoaTests/QueueScheduler+Factory.swift diff --git a/ReactiveCocoa.xcodeproj/project.pbxproj b/ReactiveCocoa.xcodeproj/project.pbxproj index 921fdfad8e..28a9086978 100644 --- a/ReactiveCocoa.xcodeproj/project.pbxproj +++ b/ReactiveCocoa.xcodeproj/project.pbxproj @@ -52,6 +52,9 @@ 53AC46CC1DD6F97400C799E1 /* UISlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53AC46CB1DD6F97400C799E1 /* UISlider.swift */; }; 53AC46CF1DD6FC0000C799E1 /* UISliderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53AC46CE1DD6FC0000C799E1 /* UISliderSpec.swift */; }; 57A4D20A1BA13D7A00F7D4B1 /* ReactiveCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = D04725EF19E49ED7006002AA /* ReactiveCocoa.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B76DE402498EDDC00E8B4F3 /* QueueScheduler+Factory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B76DE3F2498EDDC00E8B4F3 /* QueueScheduler+Factory.swift */; }; + 5B76DE412498EDDC00E8B4F3 /* QueueScheduler+Factory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B76DE3F2498EDDC00E8B4F3 /* QueueScheduler+Factory.swift */; }; + 5B76DE422498EDDC00E8B4F3 /* QueueScheduler+Factory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B76DE3F2498EDDC00E8B4F3 /* QueueScheduler+Factory.swift */; }; 654DE7B02205F9DE0048FE14 /* ReactiveCocoa.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = D04725EA19E49ED7006002AA /* ReactiveCocoa.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 654DE7B22205FA0A0048FE14 /* ReactiveCocoa.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = D047260C19E49F82006002AA /* ReactiveCocoa.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 654DE7B32205FA200048FE14 /* ReactiveCocoa.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 57A4D2411BA13D7A00F7D4B1 /* ReactiveCocoa.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -493,6 +496,7 @@ 57A4D2451BA13F9700F7D4B1 /* tvOS-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "tvOS-Base.xcconfig"; sourceTree = ""; }; 57A4D2461BA13F9700F7D4B1 /* tvOS-Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "tvOS-Framework.xcconfig"; sourceTree = ""; }; 57A4D2471BA13F9700F7D4B1 /* tvOS-StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "tvOS-StaticLibrary.xcconfig"; sourceTree = ""; }; + 5B76DE3F2498EDDC00E8B4F3 /* QueueScheduler+Factory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "QueueScheduler+Factory.swift"; sourceTree = ""; }; 7A8BA0F91FCC86FC003241C7 /* NSTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSTextView.swift; sourceTree = ""; }; 7DFBED031CDB8C9500EE435B /* ReactiveCocoaTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ReactiveCocoaTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 834DE1001E4109750099F4E5 /* NSImageViewSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSImageViewSpec.swift; sourceTree = ""; }; @@ -1116,6 +1120,7 @@ D03766B119EDA60000A782A9 /* test-data.json */, BFA6B94A1A76044800C846D1 /* SignalProducerNimbleMatchers.swift */, D04725FB19E49ED7006002AA /* Info.plist */, + 5B76DE3F2498EDDC00E8B4F3 /* QueueScheduler+Factory.swift */, ); name = "Supporting Files"; sourceTree = ""; @@ -1815,6 +1820,7 @@ 4ABEFE291DCFCFA90066A8C2 /* UICollectionViewSpec.swift in Sources */, 9A54A2131DDF5B4D001739B3 /* InterceptingPerformanceTests.swift in Sources */, BEE020661D637B0000DF261F /* TestError.swift in Sources */, + 5B76DE422498EDDC00E8B4F3 /* QueueScheduler+Factory.swift in Sources */, 9A1D06531D93EA7E00ACF44C /* UITextFieldSpec.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1983,6 +1989,7 @@ 3B30EE8C1E7BE529007CC8EF /* DeprecationsSpec.swift in Sources */, CD42C69B1E951F6900AA9504 /* ReactiveCocoaTestsConfiguration.swift in Sources */, 9AA6A1E51F11F9B000CA2257 /* KeyValueObservingSpec+Swift4.swift in Sources */, + 5B76DE402498EDDC00E8B4F3 /* QueueScheduler+Factory.swift in Sources */, 9A1E72BA1D4DE96500CC20C3 /* KeyValueObservingSpec.swift in Sources */, 4ABEFE2E1DCFD01F0066A8C2 /* NSTableViewSpec.swift in Sources */, ); @@ -2100,6 +2107,7 @@ A9EB3D291E94F3D3002A9BCC /* UITabBarItemSpec.swift in Sources */, 538DCB7E1DCA5E9B00332880 /* NSLayoutConstraintSpec.swift in Sources */, 9A1D06521D93EA7E00ACF44C /* UITextFieldSpec.swift in Sources */, + 5B76DE412498EDDC00E8B4F3 /* QueueScheduler+Factory.swift in Sources */, 4EE637342090EFDF00ECD02A /* UIViewControllerSpec.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -2707,6 +2715,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = D047263219E49FE8006002AA /* iOS-Application.xcconfig */; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; INFOPLIST_FILE = ReactiveCocoaTests/Info.plist; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OBJC_BRIDGING_HEADER = "ReactiveCocoaTests/ReactiveCocoaTests-Bridging-Header.h"; @@ -2717,6 +2726,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = D047263219E49FE8006002AA /* iOS-Application.xcconfig */; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; INFOPLIST_FILE = ReactiveCocoaTests/Info.plist; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OBJC_BRIDGING_HEADER = "ReactiveCocoaTests/ReactiveCocoaTests-Bridging-Header.h"; @@ -2787,6 +2797,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = D047263219E49FE8006002AA /* iOS-Application.xcconfig */; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; INFOPLIST_FILE = ReactiveCocoaTests/Info.plist; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; SWIFT_OBJC_BRIDGING_HEADER = "ReactiveCocoaTests/ReactiveCocoaTests-Bridging-Header.h"; diff --git a/ReactiveCocoaTests/KeyValueObservingSpec+Swift4.swift b/ReactiveCocoaTests/KeyValueObservingSpec+Swift4.swift index d70115f9b3..a22630fc8e 100644 --- a/ReactiveCocoaTests/KeyValueObservingSpec+Swift4.swift +++ b/ReactiveCocoaTests/KeyValueObservingSpec+Swift4.swift @@ -521,12 +521,7 @@ fileprivate class KeyValueObservingSwift4SpecConfiguration: QuickConfiguration { } it("attach observers") { - let deliveringObserver: QueueScheduler - if #available(*, OSX 10.10) { - deliveringObserver = QueueScheduler(name: "\(#file):\(#line)") - } else { - deliveringObserver = QueueScheduler(queue: DispatchQueue(label: "\(#file):\(#line)")) - } + let deliveringObserver = QueueScheduler.makeForTesting() var atomicCounter = Int64(0) @@ -566,17 +561,11 @@ fileprivate class KeyValueObservingSwift4SpecConfiguration: QuickConfiguration { } it("async disposal of signal with in-flight changes") { - let otherScheduler: QueueScheduler + let otherScheduler = QueueScheduler.makeForTesting() var token = Optional(Lifetime.Token()) let lifetime = Lifetime(token!) - if #available(*, OSX 10.10) { - otherScheduler = QueueScheduler(name: "\(#file):\(#line)") - } else { - otherScheduler = QueueScheduler(queue: DispatchQueue(label: "\(#file):\(#line)")) - } - let replayProducer = context.changes(testObject) .map { $0 % 2 == 0 } .observe(on: otherScheduler) @@ -604,7 +593,7 @@ fileprivate class KeyValueObservingSwift4SpecConfiguration: QuickConfiguration { iterationQueue.resume() - waitUntil { done in + waitUntil(timeout: 3.0) { done in iterationQueue.async(flags: .barrier, execute: done) } } diff --git a/ReactiveCocoaTests/KeyValueObservingSpec.swift b/ReactiveCocoaTests/KeyValueObservingSpec.swift index 5b7f020156..88b8c35a20 100644 --- a/ReactiveCocoaTests/KeyValueObservingSpec.swift +++ b/ReactiveCocoaTests/KeyValueObservingSpec.swift @@ -571,12 +571,7 @@ fileprivate class KeyValueObservingSpecConfiguration: QuickConfiguration { } it("attach observers") { - let deliveringObserver: QueueScheduler - if #available(*, OSX 10.10) { - deliveringObserver = QueueScheduler(name: "\(#file):\(#line)") - } else { - deliveringObserver = QueueScheduler(queue: DispatchQueue(label: "\(#file):\(#line)")) - } + let deliveringObserver = QueueScheduler.makeForTesting() var atomicCounter = Int64(0) @@ -624,17 +619,11 @@ fileprivate class KeyValueObservingSpecConfiguration: QuickConfiguration { // Direct port of https://github.com/ReactiveCocoa/ReactiveObjC/blob/3.1.0/ReactiveObjCTests/RACKVOProxySpec.m#L196 it("async disposal of signal with in-flight changes") { - let otherScheduler: QueueScheduler + let otherScheduler = QueueScheduler.makeForTesting() var token = Optional(Lifetime.Token()) let lifetime = Lifetime(token!) - if #available(*, OSX 10.10) { - otherScheduler = QueueScheduler(name: "\(#file):\(#line)") - } else { - otherScheduler = QueueScheduler(queue: DispatchQueue(label: "\(#file):\(#line)")) - } - let replayProducer = context.changes(testObject) .map { ($0 as! NSNumber).intValue } .map { $0 % 2 == 0 } @@ -663,7 +652,7 @@ fileprivate class KeyValueObservingSpecConfiguration: QuickConfiguration { iterationQueue.resume() - waitUntil { done in + waitUntil(timeout: 3.0) { done in iterationQueue.async(flags: .barrier, execute: done) } } diff --git a/ReactiveCocoaTests/QueueScheduler+Factory.swift b/ReactiveCocoaTests/QueueScheduler+Factory.swift new file mode 100644 index 0000000000..c56a33242e --- /dev/null +++ b/ReactiveCocoaTests/QueueScheduler+Factory.swift @@ -0,0 +1,19 @@ +import ReactiveSwift +import Foundation + +extension QueueScheduler { + static func makeForTesting(file: String = #file, line: UInt = #line) -> QueueScheduler { + let file = URL(string: file)?.lastPathComponent ?? "" + let label = "reactiveswift:\(file):\(line)" + + #if targetEnvironment(macCatalyst) + return QueueScheduler() + #else + if #available(OSX 10.10, iOS 8.0, *) { + return QueueScheduler() + } else { + return QueueScheduler(queue: DispatchQueue(label: label)) + } + #endif + } +}