Nimble v9.0.0 Release Notes

Release Date: 2020-10-03 // over 3 years ago
  • ๐Ÿš€ Nimble v9 has been released! ๐ŸŽ‰

    ๐Ÿ‘ The new major version requires Swift 5.2 / Xcode 11.4 at least, which also supports Swift 5.3 / Xcode 12 as well.

    ๐Ÿš€ Changes since v9.0.0-rc.3

    ๐Ÿ’ฅ BREAKING CHANGES

    • ๐Ÿ— Make beCloseTo matcher generic to fix a build error when used with allPass matcher on Swift 5.3 #832

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ‘Œ Support ARM based Macs (Apple Silicon) #827 (Thanks @mRs-)
    • โฌ†๏ธ Upgrade Project Format to Xcode 11.4-compatible #828

    ๐Ÿ’ฅ BREAKING CHANGES

    • โฌ†๏ธ Bump Swift requirement to 5.2 (Xcode 11.4) #689, #692, #701, #728
    • ๐Ÿ‘‰ Make throwAssertion and throwError matchers generic and usable with non-void closures #698
    • Replaced TimeInterval with DispatchTimeInterval #718 (Thanks @wongzigii)
    • ๐Ÿ—„ Deprecate Matcher-to-Predicate migration-path features as planned in the Deprecation Roadmap #745, #746
    • โž• Add label to the second associated value of ExpectationMessage.expectedCustomValueTo for readability and understandability #751
    • ๐Ÿ‘€ Make raiseException generic and usable with non-void closures #752
    • Replace NMBMatcher return types with NMBPredicate #757
    • ๐Ÿšš Move most of Objective-C matchers from NMBObjCMatcher to NMBPredicate #761
    • ๐Ÿ‘€ Convert Objective-C raiseException matcher to NMBPredicate #762
    • Convert Objective-C beCloseTo matcher to NMBPredicate #764
    • Convert Objective-C matchers' return types from id<NMBMatcher> to NMBPredicate #765
    • ๐Ÿ—„ Deprecate NMBObjCMatcher which is not used inside Nimble anymore #767
    • ๐Ÿ‘‰ Make postNotifications generic and usable with non-void closures #819
    • โฌ†๏ธ Bump minimum iOS version to 9.0 #825
    • [API BREAKING] Modify expect overloads to fix Swift 5.3 incompatibility #824
    • ๐Ÿ— Make beCloseTo matcher generic to fix a build error when used with allPass matcher on Swift 5.3 #832

    โž• Additions

    • โž• Add elementsEqual(_:by:) matcher using a predicate closure #695
    • ๐Ÿคก Implement assertion chaining #742, #750 (Thanks @mockersf)
    • โž• Add beginWith(prefix:) matcher for sequence prefixes #719 (Thanks @Skoti)
    • ๐Ÿ‘Œ Support passing NSExceptionName to raiseException matcher #776
    • โž• Add postDistributedNotifications matcher for testing DistributedNotificationCenter #786 (Thanks @fabianmuecke)
    • Rename postNotifications(_:fromNotificationCenter:) to postNotifications(_:from:) #788

    ๐Ÿ‘Œ Improvements

    • โšก๏ธ Update CwlPreconditionTesting to 2.0.0 #681, #706
    • ๐Ÿšš [gardening] Move operators into types where possible #699
    • โœ… [CI] Parallel platform testing #700
    • ๐Ÿ›  Fix a swiftlint violation #726 (Thanks @chunkyguy)
    • Enable module stability #732
    • ๐Ÿ‘• [CI] Use norio-nomura/action-swiftlint for running SwiftLint #735
    • โœ… [CI] Test the latest Swift Development Snapshot #738
    • โž• Add default message to Predicate's convenience factory methods #743
    • โœ… Simplify RaisesExceptionTest #748
    • โœ… Enable parallel testing in Xcode #749
    • Add -Xlinker -no_application_extension to OTHER_LDFLAGS at project level #759
    • [gardening] Use guard where appropriate #763
    • Simplify generic parameters #768
    • ๐Ÿ”จ Refactor message creation for errors and exceptions #769
    • โฌ‡๏ธ Reduce Foundation import #770
    • ๐Ÿ‘ท Tweak CI #771
    • โœ‚ Remove now-unnecessary compiler version check #772
    • Unify some #if canImport(Darwin) conditional compilations #773
    • โšก๏ธ bundle update --bundler && bundle update #774
    • ๐Ÿง [Stringers] Remove Linux-related workaround in NSNumber.testDescription #777
    • ๐Ÿง Utilize as NSString bridging on Linux as well #778
    • ๐Ÿง Utilize as NSArray bridging on Linux as well #779
    • ๐Ÿง Utilize as NSDictionary bridging on Linux as well #780
    • โฌ‡๏ธ Reduce #if canImport(Darwin) usages in tests #781
    • Remove SUPPORT_IMPLICIT_BRIDGING_CONVERSION conditional compilation #782
    • ๐Ÿ‘‰ Use as bridging for NSNumber #783
    • โœ‚ Remove unused ExpectationMessage.sampleMessage #654
    • ๐Ÿ”จ Refactor beEmpty matcher and add tests #785
    • ๐Ÿ”จ Refactor postNotifications matchers #787
    • Create dependabot.yml #804
    • โฌ†๏ธ Bump cocoapods from 1.9.2 to 1.9.3 #805
    • โœ… Set ENABLE_TESTING_SEARCH_PATHS to YES #803
    • ๐Ÿ— Test building for tvOS with Xcode-SwiftPM integration #818
    • โž• Add DSL tests for expect variants #823
    • ๐Ÿ‘Œ Support ARM based Macs (Apple Silicon) #827 (Thanks @mRs-)
    • โฌ†๏ธ Upgrade Project Format to Xcode 11.4-compatible #828

    ๐Ÿ›  Bugfixes

    • ๐Ÿ›  Fix elementsEqual matcher constraint to match with the Swift standard library equivalent #693
    • โœ… Stop using method swizzling for registering CurrentTestCaseTracker to XCTestObservationCenter #741
    • ๐Ÿšš [tvOS] Remove CwlCatchException.h from public headers #760
    • ๐Ÿšš [tvOS] Remove CwlMachBadInstructionHandler.h from public headers #766
    • Disambiguate postNotifications overloads #794
    • โœ… Switch back to use +[NSObject load] for registering CurrentTestCaseTracker #815

    ๐Ÿ“„ Docs

    • Unpin the cocoapods instructions from Nimble 6.0.0 in the README #717 (Thanks @intiocean)
    • ๐Ÿ›  Fix README.md code example on Notifications #722 (Thanks @yanamura)
    • Fix indent in ISSUE_TEMPLATE and PULL_REQUEST_TEMPLATE #744
    • Reflect TimeInterval-to-DispatchTimeInterval changes to README #754
    • โšก๏ธ Update README to align with Matcher deprecation #758

Previous changes from v9.0.0-rc.3

  • ๐Ÿ’ฅ BREAKING CHANGES

    • ๐Ÿ‘‰ Make postNotifications generic and usable with non-void closures #819
    • โฌ†๏ธ Bump minimum iOS version to 9.0 #825
    • [API BREAKING] Modify expect overloads to fix Swift 5.3 incompatibility #824

    ๐Ÿ‘Œ Improvements

    • โœ… Set ENABLE_TESTING_SEARCH_PATHS to YES #803
    • ๐Ÿ— Test building for tvOS with Xcode-SwiftPM integration #818
    • โž• Add DSL tests for expect variants #823