github Quick/Nimble v14.0.0

5 hours ago

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

Don't miss a new Nimble release

NewReleases is sending notifications on new releases.