v0.6.0-M1
Pre-releaseThis work aims at narrowing the gap required to be jumped for CE3 compatibility.
Breaking changes :
- The test framework is now effect-specific, meaning that some configuration is needed in your build depending on the effect-type you use.
- The GlobalResource API is now tied to the preferred effect type of the user (as opposed to being de-facto cats-IO based)
Runtime semantics changes :
- On JVM, per compile-unit (aka module, aka "sbt project"), all test suites are now weaved in a single IO before being run unsafely (as opposed to one suite == one "unsafeRun" call previous). Cross-suite parallelism is still dependant on whatever settings are defined in the build (sequential by default on forked JVMs, parallel by default otherwise). In theory most users should not be impacted by this change.
- On JS, the results are now properly aggregated and displayed at the end of the run
WTH is going on here ?
CE3 is removing the abstraction allowing to "unsafeRun" effects. It is also removing the abstraction allowing to switch from one effect to cats'IO. These features are currently heavily used by weaver, which currently runs one IO per suite.
We're making the decision to drastically change the internals of the framework in order to support an upgrade to CE3. Overall, this means that weaver now comprises 4 different test frameworks, one per effect-type currently existing in the ecosystem (cats-effect, monix, monix-bio, zio). All of them delegate to a generic one, which runs a single IO per run (ie compile-unit), and communicates with the build tool via an ad-hoc promise/concurrent queues based protocol. However each framework has a thin, effect-specific layer associated to it that dictates how things run (essentially calling the unsafeRun equivalent of the effect type).
This means that weaver is becoming more respectful of the choices of its users, as cats-IO will not be run, at all, if users prefer using monix. It also means that features such as "Global Resources" can now be interacted with in terms of whichever effect type is preferred by the user.