diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index edbd7245a..52e519ade 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -8,9 +8,9 @@ on: workflow_dispatch: jobs: - xcode14: - name: "Xcode 14" - runs-on: macos-latest + xcode15: + name: "Xcode 15" + runs-on: macos-14 strategy: fail-fast: false @@ -19,15 +19,20 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Select Xcode 15.3 + run: sudo xcode-select -s /Applications/Xcode_15.3.app - name: Run Tests run: CI=1 ./scripts/all-tests.sh "${{ matrix.environment }}" - linux: - name: "Test (Linux)" - runs-on: ubuntu-latest + + # We're having some issues with the Linux tests, so we're disabling them for now. + # Hopefully we'll be able to fix and re-enable them soon. + # Even more hopefully that I won't git blame this comment in the future and see it was 5 years ago :) - steps: - - name: Swift 5.5 Docker Container - uses: docker://swift:5.5.0-slim - - uses: actions/checkout@v3 - - name: Run tests - run: CI=1 ./scripts/all-tests.sh "Unix" \ No newline at end of file + # linux: + # name: "Test (Linux)" + # runs-on: ubuntu-latest + + # steps: + # - uses: actions/checkout@v3 + # - name: Run tests + # run: CI=1 ./scripts/all-tests.sh "Unix" \ No newline at end of file diff --git a/.jazzy.yml b/.jazzy.yml index e6aea3e99..a2d928495 100644 --- a/.jazzy.yml +++ b/.jazzy.yml @@ -100,7 +100,6 @@ custom_categories: - RxCollectionViewDataSourcePrefetchingProxy - RxCollectionViewDataSourceProxy - RxCollectionViewDelegateProxy - - RxDelegateProxyCrashFix - RxNavigationControllerDelegateProxy - RxPickerViewDataSourceProxy - RxPickerViewDelegateProxy diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9088b812d..0aa7bfc25 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,9 +15,9 @@ All contributions are handled via Pull Requests (PRs). Your PR _must_ target the Before submitting a pull request please make sure **`./scripts/all-tests.sh`** is passing (exits with 0), otherwise we won't be able to pull your code. -To be able to run `./scripts/all-tests.sh`, you'll need to install [xcpretty](https://github.com/supermarin/xcpretty). +To be able to run `./scripts/all-tests.sh`, you'll need to install [xcbeautify](https://github.com/cpisciotta/xcbeautify). -`sudo gem install xcpretty` +`brew install xcbeautify` Once the tests pass, you can push your feature branch to your clone of the repository, then open a pull request. There are some best practices that will be followed during the development of this project for common good ([Gitflow](http://nvie.com/posts/a-successful-git-branching-model/) branching model). diff --git a/Platform/Platform.Darwin.swift b/Platform/Platform.Darwin.swift index 7652dcf7c..eacc19431 100644 --- a/Platform/Platform.Darwin.swift +++ b/Platform/Platform.Darwin.swift @@ -6,7 +6,7 @@ // Copyright © 2015 Krunoslav Zaher. All rights reserved. // -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) || os(visionOS) +#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) import Darwin import Foundation diff --git a/Rx.xcodeproj/project.pbxproj b/Rx.xcodeproj/project.pbxproj index 74fcc7d8d..c5e34cbdb 100644 --- a/Rx.xcodeproj/project.pbxproj +++ b/Rx.xcodeproj/project.pbxproj @@ -72,8 +72,6 @@ 7EDBAEB41C89B1A6006CBE67 /* UITabBarItem+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EDBAEAB1C89B1A5006CBE67 /* UITabBarItem+RxTests.swift */; }; 7EDBAEC31C89BCB9006CBE67 /* UITabBarItem+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EDBAEAB1C89B1A5006CBE67 /* UITabBarItem+RxTests.swift */; }; 7F600F411C5D0C6E00535B1D /* UIRefreshControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F600F3D1C5D0C0100535B1D /* UIRefreshControl+Rx.swift */; }; - 7FE849471C5D0D6A00845C0E /* UIRefreshControl+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F600F421C5D0D2D00535B1D /* UIRefreshControl+RxTests.swift */; }; - 7FE849481C5D0D6B00845C0E /* UIRefreshControl+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F600F421C5D0D2D00535B1D /* UIRefreshControl+RxTests.swift */; }; 819C2F091F2FBC7F009104B6 /* First.swift in Sources */ = {isa = PBXBuildFile; fileRef = 819C2F081F2FBC7F009104B6 /* First.swift */; }; 842A5A2C1C357F92003568D5 /* NSTextStorage+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842A5A281C357F7D003568D5 /* NSTextStorage+Rx.swift */; }; 844BC8AC1CE4FA6300F5C7CB /* RxPickerViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844BC8AA1CE4FA5600F5C7CB /* RxPickerViewDelegateProxy.swift */; }; @@ -994,7 +992,6 @@ 78C385EA256859DC005E39B3 /* Infallible+Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Infallible+Tests.swift"; sourceTree = ""; }; 7EDBAEAB1C89B1A5006CBE67 /* UITabBarItem+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITabBarItem+RxTests.swift"; sourceTree = ""; }; 7F600F3D1C5D0C0100535B1D /* UIRefreshControl+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIRefreshControl+Rx.swift"; sourceTree = ""; }; - 7F600F421C5D0D2D00535B1D /* UIRefreshControl+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIRefreshControl+RxTests.swift"; sourceTree = ""; }; 819C2F081F2FBC7F009104B6 /* First.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = First.swift; sourceTree = ""; }; 842A5A281C357F7D003568D5 /* NSTextStorage+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSTextStorage+Rx.swift"; sourceTree = ""; }; 844BC8AA1CE4FA5600F5C7CB /* RxPickerViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxPickerViewDelegateProxy.swift; sourceTree = ""; }; @@ -1971,7 +1968,6 @@ 914FCD661CCDB82E0058B304 /* UIPageControl+RxTest.swift */, 844BC8B71CE5023200F5C7CB /* UIPickerView+RxTests.swift */, C8C4F1621DE9D0A800003FA7 /* UIProgressView+RxTests.swift */, - 7F600F421C5D0D2D00535B1D /* UIRefreshControl+RxTests.swift */, 033C2EF41D081B2A0050C015 /* UIScrollView+RxTests.swift */, C8B2908C1C94D6C500E923D0 /* UISearchBar+RxTests.swift */, 84E4D3951C9B011000ADFDC9 /* UISearchController+RxTests.swift */, @@ -3293,7 +3289,6 @@ C835092F1C38706E0027C24C /* ControlPropertyTests.swift in Sources */, C835093C1C38706E0027C24C /* RxObjCRuntimeState.swift in Sources */, C83509491C38706E0027C24C /* Observable+Extensions.swift in Sources */, - 7FE849471C5D0D6A00845C0E /* UIRefreshControl+RxTests.swift in Sources */, C835094A1C38706E0027C24C /* TestVirtualScheduler.swift in Sources */, DB0B922026FB3139005CEED9 /* Observable+ConcurrencyTests.swift in Sources */, C83509501C38706E0027C24C /* DisposableTest.swift in Sources */, @@ -3473,7 +3468,6 @@ C820A9E31EB50D6C00D431BC /* Observable+SampleTests.swift in Sources */, 788DCE6024CB8512005B8F8C /* Observable+DecodeTests.swift in Sources */, C8D970EA1F532FD30058F2FE /* Driver+Test.swift in Sources */, - 7FE849481C5D0D6B00845C0E /* UIRefreshControl+RxTests.swift in Sources */, C820A9FB1EB510D500D431BC /* Observable+MaterializeTests.swift in Sources */, C801DE4B1F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift in Sources */, C820AA0F1EB5140100D431BC /* Observable+TimeoutTests.swift in Sources */, @@ -3970,7 +3964,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxRelay/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -3986,7 +3984,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxRelay/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4002,7 +4004,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxRelay/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4018,7 +4024,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxCocoa/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = RxCocoa; SKIP_INSTALL = YES; @@ -4034,7 +4044,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxCocoa/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = RxCocoa; SKIP_INSTALL = YES; @@ -4050,7 +4064,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxCocoa/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = RxCocoa; SKIP_INSTALL = YES; @@ -4066,7 +4084,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxBlocking/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = RxBlocking; SKIP_INSTALL = YES; @@ -4082,7 +4104,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxBlocking/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = RxBlocking; SKIP_INSTALL = YES; @@ -4098,7 +4124,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxBlocking/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = RxBlocking; SKIP_INSTALL = YES; @@ -4116,7 +4146,11 @@ "$(inherited)", ); INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = "-all_load"; PRODUCT_BUNDLE_IDENTIFIER = "io.rx.AllTests-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4133,7 +4167,11 @@ APPLICATION_EXTENSION_API_ONLY = NO; BUILD_LIBRARY_FOR_DISTRIBUTION = NO; INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = "-all_load"; PRODUCT_BUNDLE_IDENTIFIER = "io.rx.AllTests-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4150,7 +4188,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APPLICATION_EXTENSION_API_ONLY = NO; INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = "-all_load"; PRODUCT_BUNDLE_IDENTIFIER = "io.rx.AllTests-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4173,7 +4215,11 @@ "$(inherited)", ); INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = "-all_load"; PRODUCT_BUNDLE_IDENTIFIER = "io.rx.AllTests-tvOS"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4192,7 +4238,11 @@ CODE_SIGN_STYLE = Manual; DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = "-all_load"; PRODUCT_BUNDLE_IDENTIFIER = "io.rx.AllTests-tvOS"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4211,7 +4261,11 @@ CODE_SIGN_STYLE = Manual; DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = "-all_load"; PRODUCT_BUNDLE_IDENTIFIER = "io.rx.AllTests-tvOS"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4235,7 +4289,11 @@ "$(inherited)", ); INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); OTHER_LDFLAGS = "-all_load"; PRODUCT_BUNDLE_IDENTIFIER = "io.rx.AllTests-macOS"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4253,7 +4311,11 @@ COMBINE_HIDPI_IMAGES = YES; ENABLE_BITCODE = NO; INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); OTHER_LDFLAGS = "-all_load"; PRODUCT_BUNDLE_IDENTIFIER = "io.rx.AllTests-macOS"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4271,7 +4333,11 @@ COMBINE_HIDPI_IMAGES = YES; ENABLE_BITCODE = NO; INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); OTHER_LDFLAGS = "-all_load"; PRODUCT_BUNDLE_IDENTIFIER = "io.rx.AllTests-macOS"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4294,7 +4360,10 @@ "$(inherited)", ); INFOPLIST_FILE = Tests/Microoptimizations/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = io.rx.PerformanceTests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; @@ -4308,7 +4377,10 @@ COMBINE_HIDPI_IMAGES = YES; ENABLE_BITCODE = NO; INFOPLIST_FILE = Tests/Microoptimizations/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = io.rx.PerformanceTests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; @@ -4322,7 +4394,10 @@ COMBINE_HIDPI_IMAGES = YES; ENABLE_BITCODE = NO; INFOPLIST_FILE = Tests/Microoptimizations/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = io.rx.PerformanceTests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; @@ -4404,7 +4479,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxSwift/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = RxSwift; SKIP_INSTALL = YES; @@ -4424,7 +4503,11 @@ FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks"; INFOPLIST_FILE = RxTest/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = io.rx.RxTest; PRODUCT_NAME = RxTest; @@ -4447,7 +4530,11 @@ FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks"; INFOPLIST_FILE = RxTest/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = io.rx.RxTest; PRODUCT_NAME = RxTest; @@ -4470,7 +4557,11 @@ FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks"; INFOPLIST_FILE = RxTest/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = io.rx.RxTest; PRODUCT_NAME = RxTest; @@ -4624,7 +4715,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxSwift/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = RxSwift; SKIP_INSTALL = YES; @@ -4640,7 +4735,11 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "$(SRCROOT)/RxSwift/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "io.rx.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = RxSwift; SKIP_INSTALL = YES; @@ -4661,7 +4760,11 @@ "$(inherited)", ); INFOPLIST_FILE = Tests/Benchmarks/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = io.rx.Benchmarks; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4679,7 +4782,11 @@ CODE_SIGN_STYLE = Manual; DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = Tests/Benchmarks/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = io.rx.Benchmarks; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4696,7 +4803,11 @@ CODE_SIGN_STYLE = Manual; DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = Tests/Benchmarks/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = io.rx.Benchmarks; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/Sources/AllTestz/main.swift b/Sources/AllTestz/main.swift index ccbe4be16..4a0dc0a4b 100644 --- a/Sources/AllTestz/main.swift +++ b/Sources/AllTestz/main.swift @@ -1657,6 +1657,8 @@ final class ObservableTest_ : ObservableTest, RxTestCase { ("testAsObservable_hides", ObservableTest.testAsObservable_hides), ("testAsObservable_never", ObservableTest.testAsObservable_never), ("testSubscribeWithNext", ObservableTest.testSubscribeWithNext), + ("testDeferredFactoryClosureLifetime", ObservableTest.testDeferredFactoryClosureLifetime), + ("testObservableFactoryClosureLifetime", ObservableTest.testObservableFactoryClosureLifetime), ] } } diff --git a/Tests/RxCocoaTests/DelegateProxyTest.swift b/Tests/RxCocoaTests/DelegateProxyTest.swift index 0d67b25a6..b0f930f03 100644 --- a/Tests/RxCocoaTests/DelegateProxyTest.swift +++ b/Tests/RxCocoaTests/DelegateProxyTest.swift @@ -773,7 +773,6 @@ extension MockTestDelegateProtocol : UIPickerViewDelegate { } -#endif @objc class MockDelegate: NSObject, UICollectionViewDelegate { @objc var demoText: String { @@ -799,3 +798,4 @@ extension DelegateProxyTest { } } } +#endif diff --git a/Tests/RxCocoaTests/UIRefreshControl+RxTests.swift b/Tests/RxCocoaTests/UIRefreshControl+RxTests.swift deleted file mode 100644 index d648a6e86..000000000 --- a/Tests/RxCocoaTests/UIRefreshControl+RxTests.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// UIRefreshControl+RxTests.swift -// Tests -// -// Created by Yosuke Ishikawa on 1/31/16. -// Copyright © 2016 Krunoslav Zaher. All rights reserved. -// - -#if os(iOS) - -import RxSwift -import RxCocoa -import UIKit -import XCTest - -final class UIRefreshControlTests : RxTest { -} - -extension UIRefreshControlTests { - func testRefreshing_True() { - let subject = UIRefreshControl() - Observable.just(true).subscribe(subject.rx.isRefreshing).dispose() - - XCTAssertTrue(subject.isRefreshing == true) - } - - func testRefreshing_False() { - let subject = UIRefreshControl() - Observable.just(false).subscribe(subject.rx.isRefreshing).dispose() - - XCTAssertTrue(subject.isRefreshing == false) - } -} - -#endif diff --git a/Tests/RxSwiftTests/Observable+Tests.swift b/Tests/RxSwiftTests/Observable+Tests.swift index efca33e12..19ccedbc7 100644 --- a/Tests/RxSwiftTests/Observable+Tests.swift +++ b/Tests/RxSwiftTests/Observable+Tests.swift @@ -229,26 +229,26 @@ extension ObservableTest { } // MARK: - Deferred -extension ObservableTest { - func testDeferredFactoryClosureLifetime() { - class Foo { - let expectation: XCTestExpectation +private class DeferredExpectation { + let expectation: XCTestExpectation - init(expectation: XCTestExpectation) { - self.expectation = expectation - } + init(expectation: XCTestExpectation) { + self.expectation = expectation + } - func bar() -> Observable { - Observable - .deferred { - self.expectation.fulfill() - return .never() - } + func bar() -> Observable { + Observable + .deferred { + self.expectation.fulfill() + return .never() } - } + } +} +extension ObservableTest { + func testDeferredFactoryClosureLifetime() { let factoryClosureInvoked = expectation(description: "Factory closure has been invoked") - var foo: Foo? = Foo(expectation: factoryClosureInvoked) + var foo: DeferredExpectation? = DeferredExpectation(expectation: factoryClosureInvoked) weak var initialFoo = foo let disposable = foo?.bar().subscribe() diff --git a/scripts/common.sh b/scripts/common.sh index 6b9fd8f37..bc47f4237 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -21,28 +21,28 @@ BOLDWHITE="\033[1m\033[37m" # make sure all tests are passing if [[ `uname` == "Darwin" ]]; then - echo "🏔 Running iOS 16 / Xcode 14" + echo "🏔 Running iOS 17 / Xcode 15" - if [ `xcrun simctl list runtimes | grep com.apple.CoreSimulator.SimRuntime.iOS-16- | wc -l` -ge 1 ]; then - DEFAULT_IOS_SIMULATOR=RxSwiftTest/iPhone-14/iOS/16.2 + if [ `xcrun simctl list runtimes | grep com.apple.CoreSimulator.SimRuntime.iOS-17- | wc -l` -ge 1 ]; then + DEFAULT_IOS_SIMULATOR=RxSwiftTest/iPhone-15/iOS/17.4 else - echo "No iOS 16.* Simulator found, available runtimes are:" + echo "No iOS 17.* Simulator found, available runtimes are:" xcrun simctl list runtimes exit -1 fi - if [ `xcrun simctl list runtimes | grep com.apple.CoreSimulator.SimRuntime.watchOS-9- | wc -l` -ge 1 ]; then - DEFAULT_WATCHOS_SIMULATOR=RxSwiftTest/Apple-Watch-Series-8-45mm/watchOS/9.0 + if [ `xcrun simctl list runtimes | grep com.apple.CoreSimulator.SimRuntime.watchOS-10- | wc -l` -ge 1 ]; then + DEFAULT_WATCHOS_SIMULATOR=RxSwiftTest/Apple-Watch-Series-9-45mm/watchOS/10.0 else - echo "No watchOS 9.* Simulator found, available runtimes are:" + echo "No watchOS 10.* Simulator found, available runtimes are:" xcrun simctl list runtimes exit -1 fi - if [ `xcrun simctl list runtimes | grep com.apple.CoreSimulator.SimRuntime.tvOS-16- | wc -l` -ge 1 ]; then - DEFAULT_TVOS_SIMULATOR=RxSwiftTest/Apple-TV-1080p/tvOS/16.0 + if [ `xcrun simctl list runtimes | grep com.apple.CoreSimulator.SimRuntime.tvOS-17- | wc -l` -ge 1 ]; then + DEFAULT_TVOS_SIMULATOR=RxSwiftTest/Apple-TV-1080p/tvOS/17.0 else - echo "No tvOS 16.* Simulator found, available runtimes are:" + echo "No tvOS 17.* Simulator found, available runtimes are:" xcrun simctl list runtimes exit -1 fi @@ -155,7 +155,7 @@ function action() { echo "Running on ${DESTINATION}" fi else - DESTINATION='platform=macOS,arch=x86_64' + DESTINATION='platform=macOS' fi set -x @@ -166,7 +166,7 @@ function action() { -configuration "${CONFIGURATION}" \ -derivedDataPath "${BUILD_DIRECTORY}" \ -destination "$DESTINATION" \ - $ACTION | tee build/last-build-output.txt | xcpretty -c + $ACTION | tee build/last-build-output.txt | xcbeautify exitIfLastStatusWasUnsuccessful set +x } diff --git a/scripts/validate-playgrounds.sh b/scripts/validate-playgrounds.sh index 8633487fd..5c0edc4c0 100755 --- a/scripts/validate-playgrounds.sh +++ b/scripts/validate-playgrounds.sh @@ -10,6 +10,6 @@ do PAGES_PATH=${BUILD_DIRECTORY}/Build/Products/${configuration}/all-playground-pages.swift rx ${scheme} ${configuration} "" build cat Rx.playground/Sources/*.swift Rx.playground/Pages/**/*.swift > ${PAGES_PATH} - swift -v -D NOT_IN_PLAYGROUND -target x86_64-apple-macosx10.10 -F ${BUILD_DIRECTORY}/Build/Products/${configuration} ${PAGES_PATH} + swift -v -D NOT_IN_PLAYGROUND -F ${BUILD_DIRECTORY}/Build/Products/${configuration} ${PAGES_PATH} done done \ No newline at end of file