Releases: Quick/Nimble
v14.0.0
Highlights
Nimble 14 includes a reimplementation of polling expectations. Previously, polling expectations would run 2 tasks: The polling, and a timer. Once the timer ends, the polling task is stopped. This worked, but left open the possibility for increased flakiness in heavily loaded environments (as CI often is), and in parallel testing environments (i.e. using Nimble with Swift Testing). Nimble 14 changes how polling expectations are done to instead first calculate how much to poll (based on the duration & interval specified), and then poll based on that amount calculated (e.g. the default 1 second duration with 1 millisecond interval will result in 1000 polling attempts, waiting 1 millisecond between each attempt). This means that time spent running the polling is not accounted for, which does increase the wall-clock time that polling lasts for. Again, this implementation entirely eliminates one source of flakiness; reliability is worth a little extra runtime.
Deprecations
Nimble 14 deprecates synchronous polling expectations (using polling expectations without await) and the synchronous waitUntil when used from Swift. We will continue to allow polling expectations from Objective-C.
Additionally, Nimble 14 will emit test warnings (Requires Swift 6.3 and later, which is when this feature will be introduced) when using the asynchronous version of waitUntil in a Swift Testing environment. If I could make this a compile-time deprecation warning, I would.
In a future version of Nimble, these will be removed/will emit test failures when used.
Auto-Generated Changelog
What's Changed
- Reimplement polling expectations to make them more reliable under heavy system loads by @younata in #1199
- Fix waitUntil, which was broken in the new implementation of polling expectations by @younata in #1202
Full Changelog: v13.8.0...v14.0.0
v13.8.0
Highlights
requireFailnow returns Never, indicating the status that it will always throw an error. (Thanks @bnickel!)toAlwaysandtoNeverwill never fail on a main thread timeout. (Thanks @bnickel!)
Auto-Generated Release Notes
What's Changed
- Update CI actions by @younata in #1184
- Allow multiple async polling expectations by @younata in #1189
- Bump Cwl dependencies to fix Xcode 16 issues by @balavor in #1190
- Return Never from requireFail by @bnickel in #1194
- Bump rexml from 3.3.9 to 3.4.2 by @dependabot[bot] in #1198
- Remove duplicated RunLoop code by @bnickel in #1193
- Fix linux cfrunloop build by @younata in #1200
- Do not fail on timeout for
toAlwaysandtoNeverby @bnickel in #1192
New Contributors
Full Changelog: v13.7.1...v13.8.0
v13.7.1
What's Changed
- done compatible with Sendable by @soranoba in #1159
- add an explicit test that NSObject with custom equality works by @younata in #1181
- Fix regression where be and beIdenticalTo matchers stopped matching against AnyObject protocols by @younata in #1183
Full Changelog: v13.7.0...v13.7.1
v13.7.0
What's Changed
- Bump the ruby version used in github workflows by @younata in #1175
- Bump cocoapods from 1.15.2 to 1.16.2 by @dependabot in #1172
- Bump jazzy from 0.14.4 to 0.15.3 by @dependabot in #1170
- Fix error message grammar in DSL+Wait.swift by @ianrahman in #1176
- Fix expected text in waitUntil stall test by @younata in #1179
- Allow beIdenticalTo and be matchers to be used as composed matchers by @younata in #1178
- Add an overload of map that allows you to fail the conversion by returning nil. by @younata in #1177
- Rename the failable map overload to compactMap by @younata in #1180
New Contributors
- @ianrahman made their first contribution in #1176
Full Changelog: v13.6.2...v13.7.0
v13.6.2
v13.6.1
What's Changed
- Bump rexml from 3.3.6 to 3.3.9 by @dependabot in #1171
- Allow beAKindOf and beAnInstanceOf to nest inside of other matchers by @younata in #1173
Full Changelog: v13.6.0...v13.6.1
v13.6.0
v13.5.0
What's Changed
- Bump rexml from 3.2.8 to 3.3.6 by @dependabot in #1153
- Basic swift testing support by @younata in #1154
Full Changelog: v13.4.0...v13.5.0
v13.4.0
What's Changed
- Bump rexml from 3.2.6 to 3.2.8 by @dependabot in #1143
- BeLogical: fix retroactive conformance error. by @TomerHacohen in #1149
- Add a matcher to negate a passed in matcher by @younata in #1151
New Contributors
- @TomerHacohen made their first contribution in #1149
Full Changelog: v13.3.0...v13.4.0
v13.3.0
Highlights
- Adds Matchers for Result that match against submatchers or equatable values.
- Use DocC for documentation.
- Make
PollingDefaultsthreadsafe.
What's Changed
- Make PollingDefaults threadsafe by @younata in #1122
- Bump softprops/action-gh-release from 1 to 2 by @dependabot in #1128
- Depend on CwlPreconditionTesting 2.2.0 for Cocoapods by @younata in #1129
- Add matchers for Result that match against submatchers, or for equatable values. by @younata in #1134
- Use docc for documentation, instead of having it all in a single, giant README. by @younata in #1135
- Get documentation deploying working. by @younata in #1136
- Improve documentation articles by adding short abstracts to them. by @younata in #1137
- Fix a typo in the name of this framework. 🤦🏻♀️ by @younata in #1138
- Bump actions/checkout from 3 to 4 by @dependabot in #1139
Full Changelog: v13.2.1...v13.3.0