v1.0.0 notToHaveElementsOr... and based on current Multiplatform Plugin
Table of Content
- New Features
- Fixes
- Improvements
- Deprecation
- Breaking Changes
- Migrating deprecated functionality
- Sponsors
Full Changelog: v0.18.0...v1.0.0
New Features
All APIs
- notToHaveElementsOrAny
- notToHaveElementsOrAll
- notToHaveElementsOrNone
- deprecate ChronoZonedDateTime.toBeLessThan etc. in favour of isBefore etc. #709 => thanks to @JordanllHarper
- add asLocalDate for java.util.Date #1285 => thanks to @sajalverma17
- add asLocalDateTime for java.util.Date #1286 => thanks to @Jujusp
- undeprecate nested
expect
in preparation of #1330
api-fluent-en_GB
- no fluent only additions this time
api-infx-en_GB
- no infix only additions this time
Logic / Core
- none this time
Fixes
- stackBacktrace is removed in JS when the NoOpAtriumErrorAdjuster is used #1383
- Kotlin (1.4, 1.5) bug: Result unwrapping affects Atrium #1234 => thanks to @JordanllHarper
Improvements
- Hint for
not to contain
#1156 - Add icon for JetBrains IDEA / Toolbox #1434 => thanks @vlsi for the idea
- Add a version switcher to the Code Documentation: https://docs.atriumlib.org and and out-of-date warning
build
- Redo Build Logic #744 (update MPP plugins from old to new plugins)
- rewrite readme-examples/build.gradle to build.gradle.kts #1159 => thanks to @jakubriegel
- rewrite misc/tools/atrium-js-sample-test/build.gradle to build.gradle.kts #1160 => thanks to @femialaka
- rewrite misc/tools/atrium-samples-test/build.gradle to build.gradle.kts #1161 => thanks to @Stexxe
- rewrite the root build.gradle to build.gradle.kts and update tutteli-gradle-plugin
- update to new dokka plugin #641
- Builds take too long #971
samples
- Added SequenceSubjectChangerSamples.kt with samples #1179 => thanks to @JordanllHarper
- add ResultExpectationSamples also to api-infix #1157
- add samples for iterableSubjectChangers to api-fluent and api-infix #1038 => thanks to @simonNozaki
- add samples for sequenceSubjectChangers also to api-infix #1046 => thanks to @JordanllHarper
migrations
- migrate DescriptiveWithBasedOnSubjectSpec from spek to kotest #1194 => thanks to @jakubriegel
- migrate BulletPointProviderSpec from spek to kotest #1195 => thanks to @jakubriegel
- migrate AtriumErrorSpec from spek to kotest #1196 => thanks to @jakubriegel
- migrate AdjustStackSpec from spek to kotest #1201 => thanks to @Dark-Knight11
- migrate TextSpec from spek to kotest #1197 => thanks to @Dark-Knight11
- migrate fluent-en_GB SmokeTest from spek to kotest #1202 => thanks to @Dark-Knight11
Sadly, we had to move back to Spek for the moment as kotest is buggy in terms of the JS platform. Kotlin-test (i.e. all samples) where no longer run as soon as kotest was specified as dependency
Deprecation
- none this time
Deprecations with 1.1.0
- we will drop the support for internationalization with 1.2.0, all functions involving Translatable will be deprecated in v1.1.0
- we will rename the package
ch.tutteli.atrium.api.fluent.en_GB.creating.charsequence.contains
to charsequence.toCtonain` and thus deprecated the existing packages (will be dropped with 1.5.0 latest) -- same same for the infix API - same same for iterable.toContain (fluent and infix API)
- we will drop support for Kotlin 1.2 and deprecate the package ch.tutteli.atrium.api.fluent.en_GB.kotlin_1_3 as we move the functions to
ch.tutteli.atrium.api.fluent.en_GB (same same for infix) - might be we drop
en_GB
from package names - might be we move BulletPointProvider to another package
Deprecations with 1.2.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
Migration steps/pointers will be provided in the release notes as usual.
The following changes are planned:
- replace
Assertion
withProof
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) - rename StringBuilder.appendln() to appendLine (to follow kotlin)
Breaking Changes
Planned (previously deprecated or announced)
- removed COULD_NOT_EVALUATE_DEFINED_ASSERTIONS => will be removed without replacement
- removed VISIT_COULD_NOT_EVALUATE_ASSERTIONS => will be removed without replacement
- removed ContainsAssertionCreator#getDescriptionContains => use descriptionToContain
- removed InOrderOnlyReportingOptions.showOnlyFailingIfMoreElementsThan => use showOnlyFailingIfMoreElementsThan
- removed InOrderOnlyReportingOptions.numberOfElementsInSummary => use maxNumberOfExpectedElementsForSummary
- removed ErrorMessages enum entries which contained ASSERTION
- removed maplike.contains.checkers.* => looks like they were introduced by accident, removed without replacement
- removed all deprecated function/classes/interfaces/translations etc. which were marked to be removed with 1.0.0 latest
Unplanned
- not really a breaking change but we already removed en_GB from artifact names.
Breaking Changes with 1.1.0
- we will drop support for Kotlin 1.2 (might even drop support for kotlin 1.3)
- we will switch from LEGACY compiler backend to IR backend for JS
- we will use the IR compiler backend for JVM
- we will drop support for jdk 14 (i.e. we no longer build against it, most likely it still works without problems) and officially support jdk 17
- we will drop support for translating the output - API will persist until 1.2.0 but we might already only use UsingDefaultTranslator
- we might introduce interface groups for ReporterBuilder - binary compatibility break
Breaking Changes with 1.2.0
- we might drop support for kotlin 1.3 (if not already in 1.1.0)
- BulletPointProvider will most likely use a BulletPointIdentifier from a different package
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 0.18.0
Sponsors
We would like to thank (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