Skip to content

Release notes 1.3.0 draft

Robert Stoll edited this page Aug 23, 2024 · 10 revisions

Table of Content

Full Changelog: https://github.com/robstoll/atrium/compare/v1.2.0...v1.3.0

New Features

All APIs

  • none this time

api-fluent

  • none this time

api-infx

  • none this time

Core

  • simpler creation of Proofs (compared to Assertions) by incorporating the ProofContainer into the builder.
  • use a tree-like builder for creating Proofs (thanks to @vlsi for the idea)

Fixes

  • none this time

Improvements

  • better error Reporting

Deprecation

  • everything related with Assertion (Assertion, AssertionGroup, AssertionFormatter, assertionBuilder etc. etc.) was deprecated and will be removed with 2.0.0 at the latest -> switch to Proof, see Migration for hints

  • everything related to Translatable (Untranslatable, TranslatableWithArgs) => use Text or another InlineElement

    • all Description...Expectation -> switch to Description...Proof => you can use the provided ReplaceWith (see also Migration for hints)
  • everything in atrium-logic, we moved the functionality to core and will drop this module in the future (with 2.0.0 at the latest)

Deprecations with 1.4.0

We will make a major refactoring on core and logic level. Those changes should not affect most Atrium users. It might affect you if you:

  • created own expectation function based on assertionBuilder or other types which are defined in core or logic.
  • use an own expectation verb
  • we will drop the support for internationalization with 1.4.0, all functions involving Translatable will be deprecated in v1.3.0
  • might be we drop en_GB from package names
  • might be we move BulletPointProvider to another package

Migration steps/pointers will be provided in the release notes as usual.

The following changes are planned:

  • replace Assertion with Proof and along with it rename many types incorporating Assertion in its name or in its package's name => we will remove Assertion and co. with 1.5.0 at the latest)
  • re-write reporting entirely, a lot of types in ch.tutteli.atrium.reporting will be affected (could be we move this to 1.3.0)

Breaking Changes

Planned (previously deprecated or announced)

=> TODO check what we did

  • we will drop support for translating the output - API might persist until 2.0.0 but we might already only use UsingDefaultTranslator
  • we might introduce interface groups for ReporterBuilder - binary compatibility break
  • BulletPointProvider might use a BulletPointIdentifier from a different package
  • we might drop the experimental expectExtension such as expect(...).withOptions provide it in a different form

Unplanned

  • We switched from Translatable to InlineElement in few places which is source but not binary backward compatible => please re-compile
  • we changed the toString representation of Text, never rely on toString of any class in Atrium, the outcome is never considered part of the public API
  • AtriumError.create now expects the rootAssertion, this should most likely not affect you but in case you create AtriumErrors on your own, add the Assertion from which the error results.

breaking internal changes (no guarantees given, stated here in case you still used some of it):

  • FeatureExpectImpl renamed parameter assertions to proofs => you might need to rename your named arguments

Breaking Changes with 1.4.0

  • we will remove deprecated functionality in impl packages (sometimes without replacement). As always there are no backward compatibility guarantees for classes in impl packages, use at your own risk.

Migrating deprecated functionality

Use the ReplaceWith in the corresponding @Deprecated annotations.

Please have a look at older release-notes in case you don't migrate from 1.0.0

Sponsors

We would like to thank   Tegonal Genossenschaft (Tegonal Cooperative, Bern, Switzerland) for sponsoring the time @robstoll is working on Atrium.

Are you using Atrium at work?

Please consider to support the project as well by:

  • sponsoring robstoll (Author and main contributor)
  • share your expectation functions with others
  • report bugs
  • provide feedback in case you miss a feature