robstoll/atrium
### [`v0.18.0`](https://togithub.com/robstoll/atrium/releases/tag/v0.18.0): align reporting to new `to + infinitive` schema and more reportingOptions
### Table of Content
- [New Features](#new-features)
- [API](#new-features-api)
- [Logic/Core aka write own expectation functions](#new-features-logic-core)
- [Fixes](#fixes)
- [Improvements](#improvements)
- [Deprecation](#deprecation)
- [Breaking Changes](#breaking-changes)
- [Migrating deprecated functionality](#migration)
- [Sponsors](#sponsors)
### New Features
#### All APIs
- aligned reporting to new `to + infinitive` schema
- start error message with `I expected...` [#1090](https://togithub.com/robstoll/atrium/issues/1090)
- also add reportOptions to inAnyOrder.only [#1094](https://togithub.com/robstoll/atrium/issues/1094)
#### api-fluent-en_GB
- no fluent only additions this time
#### api-infx-en_GB
- add report option to `inGiven order and only` in api-infix [#1050](https://togithub.com/robstoll/atrium/issues/1050)
#### Logic / Core
- not a feature as such but more a recommendation. We started to split API files into XyExpectations.kt, XyFeatureExtractor.kt and XySubjectChangers.kt -- we think it will help to get the distinction between those three categories
- add createAndAppend to AssertionContainer expecting Translatable [#1061](https://togithub.com/robstoll/atrium/issues/1061)
### Fixes
- additional elements detected wrong for inAnyOrder.only [#1103](https://togithub.com/robstoll/atrium/issues/1103)
### Improvements
- include given type in error message of IterableLikeToIterableTransformer [#1057](https://togithub.com/robstoll/atrium/issues/1057)
- add samples for optionalExpectations of api-fluent [#917](https://togithub.com/robstoll/atrium/issues/917) => thanks to [@timacosta](https://togithub.com/timacosta)
- add samples for featureAssertions of api-fluent [#648](https://togithub.com/robstoll/atrium/issues/648) => thanks to [@iljakorneckis](https://togithub.com/iljakorneckis)
- add samples for Map.size to api-fluent and api-infix [#1039](https://togithub.com/robstoll/atrium/issues/1039) => thanks to [@ashwini-desai](https://togithub.com/ashwini-desai)
- add samples for fun0Expectations also to api-infix [#1044](https://togithub.com/robstoll/atrium/issues/1044) => thanks to [@Kushiro-C](https://togithub.com/Kushiro-C)
- generate jdk11 byte code instead of jdk1.6 (see breaking changes below for more details)
### Deprecation
- ErrorMessages enum entries which contained ASSERTION => use the replacement with EXPECTATION
- all Description...Assertion.kt => use use the replacement from Description...Expectation.kt
- DescriptionBasic.IS => use TO_BE instead
- DescriptionBasic.IS_NOT => use NOT_TO_BE instead
- maplike.contains.checkers.\* => looks like they were introduced by accident, they will be removed with 0.19.0 without replacement
- COULD_NOT_EVALUATE_DEFINED_ASSERTIONS => will be removed without replacement
- VISIT_COULD_NOT_EVALUATE_ASSERTIONS => will be removed without replacement
- InOrderOnlyReportingOptions.showOnlyFailingIfMoreElementsThan => use showOnlyFailingIfMoreElementsThan will be removed with 0.19.0
- InOrderOnlyReportingOptions.numberOfElementsInSummary => use maxNumberOfExpectedElementsForSummary will be removed with 0.19.0
#### Deprecations with 0.19.0
- we will switch to the new MPP plugin, could be we have to deprecate a few things in this context
#### Deprecations with 0.20.0
We will make a major refactoring on core and logic level. Those changes should not affect most Atrium users. It will 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` 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 0.22.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 0.21.0)
### Breaking Changes
*Planned* (previously deprecated or announced)
- removed the pre-defined assertion verbs `assert` and `assertThat` as they do not fit the to + infinitive naming schema => switch to `expect`
- moved expectation functions already following the `to + infinitive` convention from ...Assertions.kt to the corresponding ...Expectations.kt file which is a binary breaking change => please re-compile your sources
- renamed files named charSequence/iterableLike/mapLikeContains... to charSequence/iterableLike/mapLikeToContain which is a binary breaking change => please re-compile your sources
- we will generate jdk 11 byte code (yes, we skip jdk8 as newer android versions support jdk11 byte code) an no longer jdk1.6 (and thus also rely on Kotlin's stlib-jdk8) => might affect you in case you still generate jdk1.6 or jdk1.8 in tests as inlining will not work (jdk11 code cannot be inlined into jdk1.6 or jdk1.8)
*Unplanned*
- added InAnyOrderOnlyReportingOptions to `inAnyOrder.only` => please re-compile
- added InOrderOnlyReportingOptions and InAnyOrderOnlyReportingOptions to `inOrder.only.grouped` => please re-compile
- InOrderOnlyMatcher.addSingleEntryAssertion now expects a DescriptionIterableLikeExpectation instead of a DescriptionIterableAssertion => we guess this should not affect 99.999% of the users :laughing:
- renamed WithInOrderOnlyReportingOptions.report to WithInOrderOnlyReportingOptions.options
#### Breaking Changes with 0.19.0
First of all, see deprecation above which will be removed with 0.19.0, some of them are breaking as well
- we drop support for jdk 14 (i.e. we no longer build against it, most likely it still works without problems)
- might be that we need to change package names which is a binary and source backward compatibility break in case we switch to the new Kotlin MPP plugin with 0.19.0
#### Breaking Changes with 0.20.0
- BulletPointProvider will most likely use a BulletPointIdentifier from a different package
#### Breaking Changes with 0.21.0
- not pre-seen for now
#### Breaking Changes with 0.22.0
- we will remove all deprecated...Assertions.kt files in all APIs
- we will remove all deprecated... files in the translation modules
- we will remove all deprecated stuff on the logic/core level
#### Breaking Changes with 1.0.0
See [atrium-roadmap -> Milestone 1.0.0](https://togithub.com/robstoll/atrium-roadmap/issues?utf8=%E2%9C%93\&q=is%3Aissue+milestone%3A1.0.0+)
### 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.17.0
### Sponsors
We would like to thank [![Tegonal GmbH](https://www.tegonal.com/assets/images/tegonal_text_logo_green.svg)](https://tegonal.com) (Tegonal GmbH, Bern, Switzerland) for sponsoring the time [@robstoll](https://togithub.com/robstoll) is working on Atrium.
*Are you using Atrium at work?*
Please consider to support the project as well by:
- sponsoring [robstoll](https://togithub.com/sponsors/robstoll) (Author and main contributor)
- share your expectation functions with others
- report bugs
- provide feedback in case you miss a feature
### [`v0.17.0`](https://togithub.com/robstoll/atrium/releases/tag/v0.17.0): to + infinitive naming schema change
### Table of Content
- [New Features](#new-features)
- [API](#new-features-api)
- [Logic/Core aka write own expectation functions](#new-features-logic-core)
- [Fixes](#fixes)
- [Improvements](#improvements)
- [Deprecation](#deprecation)
- [Breaking Changes](#breaking-changes)
- [Migrating deprecated functionality](#migration)
- [Sponsors](#sponsors)
### New Features
#### All APIs
- Refactor/Renaming to a consistent to + infitive schema [#840](https://togithub.com/robstoll/atrium/issues/840)
- notToBeGreaterThan and notToBeLessThan [#878](https://togithub.com/robstoll/atrium/issues/878) => thanks to [@jGleitz](https://togithub.com/jGleitz) for the feature request
- add Path.notToBeWritable [#1001](https://togithub.com/robstoll/atrium/issues/1001) => thanks to [@rhushikesh](https://togithub.com/rhushikesh) for the implementation
- add Path.notToBeExecutable [#1015](https://togithub.com/robstoll/atrium/issues/1015) => thanks to [@rhushikesh](https://togithub.com/rhushikesh) for the implementation
- add Path.notToBeReadable [#942](https://togithub.com/robstoll/atrium/issues/942) => thanks to [@botex98](https://togithub.com/botex98) for the implementation
#### api-fluent-en_GB
- Add option to display only unexpected or missing elements in asserts on collections [#292](https://togithub.com/robstoll/atrium/issues/292)
#### api-infx-en_GB
- no infix only additions this time
#### Logic / Core
- none this time
### Fixes
- fix empty feature extractor [#950](https://togithub.com/robstoll/atrium/issues/950)
### Improvements
- Move hasNext() check out of Iterable.all [#305](https://togithub.com/robstoll/atrium/issues/305) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation
- improve reporting for containsDuplicates [#813](https://togithub.com/robstoll/atrium/issues/813) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation
- less verbose containsNot reporting and more hints [#722](https://togithub.com/robstoll/atrium/issues/722) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation
- don't show number of occurrences for contains.inAnyOrder.atLeast(1) [#310](https://togithub.com/robstoll/atrium/issues/310) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation
- rename withFailureHint to withHelpOnFailure [#671](https://togithub.com/robstoll/atrium/issues/671) => thanks to [@stevenlmcgraw](https://togithub.com/stevenlmcgraw) for the implementation
- show more than first line when using mocha test runner [#691](https://togithub.com/robstoll/atrium/issues/691) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation
- Empty assertionCreator lambda warning is added twice [#933](https://togithub.com/robstoll/atrium/issues/933) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation
- rewrite samples to use Kotlin DSL for gradle [#873](https://togithub.com/robstoll/atrium/issues/873) => thanks to [@wordhou](https://togithub.com/wordhou)
- add samples for iterableExpectations of api-fluent [#651](https://togithub.com/robstoll/atrium/issues/651) => thanks to [@wordhou](https://togithub.com/wordhou)
- add samples for fun0Assertions of api-fluent [#650](https://togithub.com/robstoll/atrium/issues/650) => thanks to [@szatyinadam](https://togithub.com/szatyinadam)
- add samples for mapExpectations of api-infix [#861](https://togithub.com/robstoll/atrium/issues/861) => thanks to [@kacmacuna](https://togithub.com/kacmacuna)
- add samples for mapEntryExpectations of api-infix [#862](https://togithub.com/robstoll/atrium/issues/862) => thanks to [@kacmacuna](https://togithub.com/kacmacuna)
- add samples for iterableExpectations of api-infix [#992](https://togithub.com/robstoll/atrium/issues/992) => thanks to [@vinayak03](https://togithub.com/vinayak03)
- add samples for fileAssertions of api-fluent [#994](https://togithub.com/robstoll/atrium/issues/994) => thanks to [@iljakorneckis](https://togithub.com/iljakorneckis)
- add samples for resultExpectations of api-fluent [#993](https://togithub.com/robstoll/atrium/issues/993) => thanks to [@vinayak03](https://togithub.com/vinayak03)
- add samples for bigDecimalExpectations of api-fluent [#904](https://togithub.com/robstoll/atrium/issues/904) => thanks to [@timacosta](https://togithub.com/timacosta)
- add samples for pathExpectations of api-fluent [#919](https://togithub.com/robstoll/atrium/issues/919) => thanks to [@kacmacuna](https://togithub.com/kacmacuna)
- add samples for throwableExpectations of api-fluent [#658](https://togithub.com/robstoll/atrium/issues/658) => thanks to [@szatyinadam](https://togithub.com/szatyinadam)
- add samples for infix throwable expectations [#1002](https://togithub.com/robstoll/atrium/issues/1002) => thanks to [@szatyinadam](https://togithub.com/szatyinadam)
- add samples for chronoLocalDateExpectations of api-fluent [#914](https://togithub.com/robstoll/atrium/issues/914) => thanks to [@dias-wagner](https://togithub.com/dias-wagner)
- add samples for chronoLocalDateTimeExpectations of api-fluent [#915](https://togithub.com/robstoll/atrium/issues/915) => thanks to [@dias-wagner](https://togithub.com/dias-wagner)
- add samples for chronoZonedDateTimeExpectations of api-fluent [#916](https://togithub.com/robstoll/atrium/issues/916) => thanks to [@dias-wagner](https://togithub.com/dias-wagner)
- add samples for localDateAssertions of api-fluent and api-infix [#996](https://togithub.com/robstoll/atrium/issues/996) => thanks to [@rhushikesh](https://togithub.com/rhushikesh)
- add samples for localDateTimeAssertions of api-fluent and api-infix [#997](https://togithub.com/robstoll/atrium/issues/997) => thanks to [@rhushikesh](https://togithub.com/rhushikesh)
- add samples for zonedDateTimeAssertions of api-fluent [#998](https://togithub.com/robstoll/atrium/issues/998) => thanks to [@vinayak03](https://togithub.com/vinayak03)
- add samples for arrayAssertions of api-infix [#675](https://togithub.com/robstoll/atrium/issues/675) => thanks to [@szatyinadam](https://togithub.com/szatyinadam)
- add samples for pairAssertions of api-infix [#679](https://togithub.com/robstoll/atrium/issues/679) => thanks to [@szatyinadam](https://togithub.com/szatyinadam)
- add samples for pathExpectations of api-infix [#999](https://togithub.com/robstoll/atrium/issues/999) => thanks to [@rhushikesh](https://togithub.com/rhushikesh)
- add samples for sequenceExpectations of api-fluent [#657](https://togithub.com/robstoll/atrium/issues/657) => thanks to [@loge1998](https://togithub.com/loge1998)
- add samples for ZonedDateTime to api-infix [#1019](https://togithub.com/robstoll/atrium/issues/1019) => thanks to [@iljakorneckis](https://togithub.com/iljakorneckis)
- Add ChronoLocalDate, ChronoLocalDateTime and ChronoZonedDateTime expectation samples for the infix api [#941](https://togithub.com/robstoll/atrium/issues/941) => thanks to [@dias-wagner](https://togithub.com/dias-wagner)
### Deprecation
- we deprecated the pre-defined assertion verbs `assert` and `assertThat` as they do not fit the to + infinitive naming schema; they will be removed with 0.18.0 => switch to expect
- basically all expectation functions which did not follow the `to + infinitive` naming schema => see [migration](#migration) further below
#### Deprecations with 0.18.0
- we will deprecate all translation enum entries which do not follow the `to + infinitive` naming schema
#### Deprecations with 0.19.0
We will make a major refactoring on core and logic level where we will:
- 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 0.21.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 0.20.0)
Those changes should not affect most Atrium users. It will affect you if you:
- created own assertion 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.
### Breaking Changes
*Planned* (previously deprecated or announced)
- removed deprecated modules: atrium-core-robstoll, atrium-core-robstoll-lib, atrium-domain-builders (including ExpectBuilder) -- see [https://github.com/robstoll/atrium/pull/856](https://togithub.com/robstoll/atrium/pull/856)
- removed deprecated functions/types which were scheduled to be removed with 0.17.0, i.a. ReporterFactory, RawString, collectForDifferentSubject -- see [https://github.com/robstoll/atrium/pull/858](https://togithub.com/robstoll/atrium/pull/858) and [https://github.com/robstoll/atrium/pull/859](https://togithub.com/robstoll/atrium/pull/859)
- not really a breaking change but just as info, we renamed core-api to core (as we no longer split core into api and implementation)
*Unplanned*
- none this time
#### Breaking Changes with 0.18.0
First of all, see deprecation above which will be removed with 0.18.0, some of them are breaking as well
- we will move expectation functions already following the `to + infinitive` convention from ...Assertions.kt to the corresponding ...Expectations.kt file which is a binary breaking change => please re-compile your sources
- we will rename files named charSequence/iterableLike/mapLikeContains... to charSequence/iterableLike/mapLikeToContain which is a binary breaking change => please re-compile your sources
- we will generate jdk 11 byte code (yes, we skip jdk8 as newer android versions support jdk11 byte code) an no longer jdk1.6 (and thus also rely on Kotlin's stlib-jdk11) => might affect you in case you still generate jdk1.6 or jdk1.8 in tests as inlining will not work (jdk11 code cannot be inlined into jdk1.6 or jdk1.8)
#### Breaking Changes with 0.19.0
- BulletPointProvider will most likely use a BulletPointIdentifier from a different package
- might be that we need to change package names which is a binary and source backward compatibility break in case we switch to the new Kotlin MPP plugin with 0.19.0
#### Breaking Changes with 0.20.0
- we will remove all deprecated ...Assertions as well as other deprecating stuff on the logic level.
#### Breaking Changes with 1.0.0
See [atrium-roadmap -> Milestone 1.0.0](https://togithub.com/robstoll/atrium-roadmap/issues?utf8=%E2%9C%93\&q=is%3Aissue+milestone%3A1.0.0+)
### Migrating deprecated functionality
The following command is carrying out some search & replace so that you don't need to rely on the (unfortunately sometimes buggy) behaviour of ReplaceWith.
find . -type f -name "*.kt" -a \( -path "*/src/test/*" -o -path "*/src/*Test/*" \) | xargs perl -0777 -i \
-pe 's/import ch.tutteli.atrium.api.verbs.(assert|assertThat)\n/import ch.tutteli.atrium.api.verbs.expect\n/g;' \
-pe 's/(assert|assertThat)(\(| ?\{)/expect$2/g;' \
-pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.toBe\n/import ch.tutteli.atrium.api.$1.en_GB.toEqual\n/g;' \
-pe 's/([\. ])toBe([\( ])/$1toEqual$2/g;' \
-pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.notToBe\n/import ch.tutteli.atrium.api.$1.en_GB.notToEqual\n/g;' \
-pe 's/([\. ])notToBe([\( ])/$1notToEqual$2/g;' \
-pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.isSameAs\n/import ch.tutteli.atrium.api.$1.en_GB.toBeTheInstance\n/g;' \
-pe 's/([\. ])isSameAs([\( ])/$1toBeTheInstance$2/g;' \
-pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.isNotSameAs\n/import ch.tutteli.atrium.api.$1.en_GB.notToBeTheInstance\n/g;' \
-pe 's/([\. ])isNotSameAs([\( ])/$1notToBeTheInstance$2/g;' \
-pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.notToBeNull\n/import ch.tutteli.atrium.api.$1.en_GB.notToEqualNull\n/g;' \
-pe 's/([\. ])notToBeNull([\( ])/$1notToEqualNull$2/g;' \
-pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.isA\n/import ch.tutteli.atrium.api.$1.en_GB.toBeAnInstanceOf\n/g;' \
-pe 's/([\. ])isA$toBeAnInstanceOf
### Sponsors
We would like to thank [Tegonal GmbH](https://www.tegonal.com) for sponsoring Support and PR-Review time.
And also a big thank you for sponsoring some time to speed up the transition to the new to + infitive naming schema 🙃
*Are you are using Atrium at work?*
Please consider to support the project as well by:
- sponsoring [robstoll](https://togithub.com/sponsors/robstoll) (Author and main contributor)
- share your expectation functions with others
- report bugs
- provide feedback in case you miss a feature
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
0.16.0
->0.18.0
Release Notes
robstoll/atrium
### [`v0.18.0`](https://togithub.com/robstoll/atrium/releases/tag/v0.18.0): align reporting to new `to + infinitive` schema and more reportingOptions ### Table of Content - [New Features](#new-features) - [API](#new-features-api) - [Logic/Core aka write own expectation functions](#new-features-logic-core) - [Fixes](#fixes) - [Improvements](#improvements) - [Deprecation](#deprecation) - [Breaking Changes](#breaking-changes) - [Migrating deprecated functionality](#migration) - [Sponsors](#sponsors) ### New Features #### All APIs - aligned reporting to new `to + infinitive` schema - start error message with `I expected...` [#1090](https://togithub.com/robstoll/atrium/issues/1090) - also add reportOptions to inAnyOrder.only [#1094](https://togithub.com/robstoll/atrium/issues/1094) #### api-fluent-en_GB - no fluent only additions this time #### api-infx-en_GB - add report option to `inGiven order and only` in api-infix [#1050](https://togithub.com/robstoll/atrium/issues/1050) #### Logic / Core - not a feature as such but more a recommendation. We started to split API files into XyExpectations.kt, XyFeatureExtractor.kt and XySubjectChangers.kt -- we think it will help to get the distinction between those three categories - add createAndAppend to AssertionContainer expecting Translatable [#1061](https://togithub.com/robstoll/atrium/issues/1061) ### Fixes - additional elements detected wrong for inAnyOrder.only [#1103](https://togithub.com/robstoll/atrium/issues/1103) ### Improvements - include given type in error message of IterableLikeToIterableTransformer [#1057](https://togithub.com/robstoll/atrium/issues/1057) - add samples for optionalExpectations of api-fluent [#917](https://togithub.com/robstoll/atrium/issues/917) => thanks to [@timacosta](https://togithub.com/timacosta) - add samples for featureAssertions of api-fluent [#648](https://togithub.com/robstoll/atrium/issues/648) => thanks to [@iljakorneckis](https://togithub.com/iljakorneckis) - add samples for Map.size to api-fluent and api-infix [#1039](https://togithub.com/robstoll/atrium/issues/1039) => thanks to [@ashwini-desai](https://togithub.com/ashwini-desai) - add samples for fun0Expectations also to api-infix [#1044](https://togithub.com/robstoll/atrium/issues/1044) => thanks to [@Kushiro-C](https://togithub.com/Kushiro-C) - generate jdk11 byte code instead of jdk1.6 (see breaking changes below for more details) ### Deprecation - ErrorMessages enum entries which contained ASSERTION => use the replacement with EXPECTATION - all Description...Assertion.kt => use use the replacement from Description...Expectation.kt - DescriptionBasic.IS => use TO_BE instead - DescriptionBasic.IS_NOT => use NOT_TO_BE instead - maplike.contains.checkers.\* => looks like they were introduced by accident, they will be removed with 0.19.0 without replacement - COULD_NOT_EVALUATE_DEFINED_ASSERTIONS => will be removed without replacement - VISIT_COULD_NOT_EVALUATE_ASSERTIONS => will be removed without replacement - InOrderOnlyReportingOptions.showOnlyFailingIfMoreElementsThan => use showOnlyFailingIfMoreElementsThan will be removed with 0.19.0 - InOrderOnlyReportingOptions.numberOfElementsInSummary => use maxNumberOfExpectedElementsForSummary will be removed with 0.19.0 #### Deprecations with 0.19.0 - we will switch to the new MPP plugin, could be we have to deprecate a few things in this context #### Deprecations with 0.20.0 We will make a major refactoring on core and logic level. Those changes should not affect most Atrium users. It will 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` 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 0.22.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 0.21.0) ### Breaking Changes *Planned* (previously deprecated or announced) - removed the pre-defined assertion verbs `assert` and `assertThat` as they do not fit the to + infinitive naming schema => switch to `expect` - moved expectation functions already following the `to + infinitive` convention from ...Assertions.kt to the corresponding ...Expectations.kt file which is a binary breaking change => please re-compile your sources - renamed files named charSequence/iterableLike/mapLikeContains... to charSequence/iterableLike/mapLikeToContain which is a binary breaking change => please re-compile your sources - we will generate jdk 11 byte code (yes, we skip jdk8 as newer android versions support jdk11 byte code) an no longer jdk1.6 (and thus also rely on Kotlin's stlib-jdk8) => might affect you in case you still generate jdk1.6 or jdk1.8 in tests as inlining will not work (jdk11 code cannot be inlined into jdk1.6 or jdk1.8) *Unplanned* - added InAnyOrderOnlyReportingOptions to `inAnyOrder.only` => please re-compile - added InOrderOnlyReportingOptions and InAnyOrderOnlyReportingOptions to `inOrder.only.grouped` => please re-compile - InOrderOnlyMatcher.addSingleEntryAssertion now expects a DescriptionIterableLikeExpectation instead of a DescriptionIterableAssertion => we guess this should not affect 99.999% of the users :laughing: - renamed WithInOrderOnlyReportingOptions.report to WithInOrderOnlyReportingOptions.options #### Breaking Changes with 0.19.0 First of all, see deprecation above which will be removed with 0.19.0, some of them are breaking as well - we drop support for jdk 14 (i.e. we no longer build against it, most likely it still works without problems) - might be that we need to change package names which is a binary and source backward compatibility break in case we switch to the new Kotlin MPP plugin with 0.19.0 #### Breaking Changes with 0.20.0 - BulletPointProvider will most likely use a BulletPointIdentifier from a different package #### Breaking Changes with 0.21.0 - not pre-seen for now #### Breaking Changes with 0.22.0 - we will remove all deprecated...Assertions.kt files in all APIs - we will remove all deprecated... files in the translation modules - we will remove all deprecated stuff on the logic/core level #### Breaking Changes with 1.0.0 See [atrium-roadmap -> Milestone 1.0.0](https://togithub.com/robstoll/atrium-roadmap/issues?utf8=%E2%9C%93\&q=is%3Aissue+milestone%3A1.0.0+) ### 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.17.0 ### Sponsors We would like to thank [![Tegonal GmbH](https://www.tegonal.com/assets/images/tegonal_text_logo_green.svg)](https://tegonal.com) (Tegonal GmbH, Bern, Switzerland) for sponsoring the time [@robstoll](https://togithub.com/robstoll) is working on Atrium. *Are you using Atrium at work?* Please consider to support the project as well by: - sponsoring [robstoll](https://togithub.com/sponsors/robstoll) (Author and main contributor) - share your expectation functions with others - report bugs - provide feedback in case you miss a feature ### [`v0.17.0`](https://togithub.com/robstoll/atrium/releases/tag/v0.17.0): to + infinitive naming schema change ### Table of Content - [New Features](#new-features) - [API](#new-features-api) - [Logic/Core aka write own expectation functions](#new-features-logic-core) - [Fixes](#fixes) - [Improvements](#improvements) - [Deprecation](#deprecation) - [Breaking Changes](#breaking-changes) - [Migrating deprecated functionality](#migration) - [Sponsors](#sponsors) ### New Features #### All APIs - Refactor/Renaming to a consistent to + infitive schema [#840](https://togithub.com/robstoll/atrium/issues/840) - notToBeGreaterThan and notToBeLessThan [#878](https://togithub.com/robstoll/atrium/issues/878) => thanks to [@jGleitz](https://togithub.com/jGleitz) for the feature request - add Path.notToBeWritable [#1001](https://togithub.com/robstoll/atrium/issues/1001) => thanks to [@rhushikesh](https://togithub.com/rhushikesh) for the implementation - add Path.notToBeExecutable [#1015](https://togithub.com/robstoll/atrium/issues/1015) => thanks to [@rhushikesh](https://togithub.com/rhushikesh) for the implementation - add Path.notToBeReadable [#942](https://togithub.com/robstoll/atrium/issues/942) => thanks to [@botex98](https://togithub.com/botex98) for the implementation #### api-fluent-en_GB - Add option to display only unexpected or missing elements in asserts on collections [#292](https://togithub.com/robstoll/atrium/issues/292) #### api-infx-en_GB - no infix only additions this time #### Logic / Core - none this time ### Fixes - fix empty feature extractor [#950](https://togithub.com/robstoll/atrium/issues/950) ### Improvements - Move hasNext() check out of Iterable.all [#305](https://togithub.com/robstoll/atrium/issues/305) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation - improve reporting for containsDuplicates [#813](https://togithub.com/robstoll/atrium/issues/813) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation - less verbose containsNot reporting and more hints [#722](https://togithub.com/robstoll/atrium/issues/722) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation - don't show number of occurrences for contains.inAnyOrder.atLeast(1) [#310](https://togithub.com/robstoll/atrium/issues/310) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation - rename withFailureHint to withHelpOnFailure [#671](https://togithub.com/robstoll/atrium/issues/671) => thanks to [@stevenlmcgraw](https://togithub.com/stevenlmcgraw) for the implementation - show more than first line when using mocha test runner [#691](https://togithub.com/robstoll/atrium/issues/691) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation - Empty assertionCreator lambda warning is added twice [#933](https://togithub.com/robstoll/atrium/issues/933) => thanks to [@wordhou](https://togithub.com/wordhou) for the implementation - rewrite samples to use Kotlin DSL for gradle [#873](https://togithub.com/robstoll/atrium/issues/873) => thanks to [@wordhou](https://togithub.com/wordhou) - add samples for iterableExpectations of api-fluent [#651](https://togithub.com/robstoll/atrium/issues/651) => thanks to [@wordhou](https://togithub.com/wordhou) - add samples for fun0Assertions of api-fluent [#650](https://togithub.com/robstoll/atrium/issues/650) => thanks to [@szatyinadam](https://togithub.com/szatyinadam) - add samples for mapExpectations of api-infix [#861](https://togithub.com/robstoll/atrium/issues/861) => thanks to [@kacmacuna](https://togithub.com/kacmacuna) - add samples for mapEntryExpectations of api-infix [#862](https://togithub.com/robstoll/atrium/issues/862) => thanks to [@kacmacuna](https://togithub.com/kacmacuna) - add samples for iterableExpectations of api-infix [#992](https://togithub.com/robstoll/atrium/issues/992) => thanks to [@vinayak03](https://togithub.com/vinayak03) - add samples for fileAssertions of api-fluent [#994](https://togithub.com/robstoll/atrium/issues/994) => thanks to [@iljakorneckis](https://togithub.com/iljakorneckis) - add samples for resultExpectations of api-fluent [#993](https://togithub.com/robstoll/atrium/issues/993) => thanks to [@vinayak03](https://togithub.com/vinayak03) - add samples for bigDecimalExpectations of api-fluent [#904](https://togithub.com/robstoll/atrium/issues/904) => thanks to [@timacosta](https://togithub.com/timacosta) - add samples for pathExpectations of api-fluent [#919](https://togithub.com/robstoll/atrium/issues/919) => thanks to [@kacmacuna](https://togithub.com/kacmacuna) - add samples for throwableExpectations of api-fluent [#658](https://togithub.com/robstoll/atrium/issues/658) => thanks to [@szatyinadam](https://togithub.com/szatyinadam) - add samples for infix throwable expectations [#1002](https://togithub.com/robstoll/atrium/issues/1002) => thanks to [@szatyinadam](https://togithub.com/szatyinadam) - add samples for chronoLocalDateExpectations of api-fluent [#914](https://togithub.com/robstoll/atrium/issues/914) => thanks to [@dias-wagner](https://togithub.com/dias-wagner) - add samples for chronoLocalDateTimeExpectations of api-fluent [#915](https://togithub.com/robstoll/atrium/issues/915) => thanks to [@dias-wagner](https://togithub.com/dias-wagner) - add samples for chronoZonedDateTimeExpectations of api-fluent [#916](https://togithub.com/robstoll/atrium/issues/916) => thanks to [@dias-wagner](https://togithub.com/dias-wagner) - add samples for localDateAssertions of api-fluent and api-infix [#996](https://togithub.com/robstoll/atrium/issues/996) => thanks to [@rhushikesh](https://togithub.com/rhushikesh) - add samples for localDateTimeAssertions of api-fluent and api-infix [#997](https://togithub.com/robstoll/atrium/issues/997) => thanks to [@rhushikesh](https://togithub.com/rhushikesh) - add samples for zonedDateTimeAssertions of api-fluent [#998](https://togithub.com/robstoll/atrium/issues/998) => thanks to [@vinayak03](https://togithub.com/vinayak03) - add samples for arrayAssertions of api-infix [#675](https://togithub.com/robstoll/atrium/issues/675) => thanks to [@szatyinadam](https://togithub.com/szatyinadam) - add samples for pairAssertions of api-infix [#679](https://togithub.com/robstoll/atrium/issues/679) => thanks to [@szatyinadam](https://togithub.com/szatyinadam) - add samples for pathExpectations of api-infix [#999](https://togithub.com/robstoll/atrium/issues/999) => thanks to [@rhushikesh](https://togithub.com/rhushikesh) - add samples for sequenceExpectations of api-fluent [#657](https://togithub.com/robstoll/atrium/issues/657) => thanks to [@loge1998](https://togithub.com/loge1998) - add samples for ZonedDateTime to api-infix [#1019](https://togithub.com/robstoll/atrium/issues/1019) => thanks to [@iljakorneckis](https://togithub.com/iljakorneckis) - Add ChronoLocalDate, ChronoLocalDateTime and ChronoZonedDateTime expectation samples for the infix api [#941](https://togithub.com/robstoll/atrium/issues/941) => thanks to [@dias-wagner](https://togithub.com/dias-wagner) ### Deprecation - we deprecated the pre-defined assertion verbs `assert` and `assertThat` as they do not fit the to + infinitive naming schema; they will be removed with 0.18.0 => switch to expect - basically all expectation functions which did not follow the `to + infinitive` naming schema => see [migration](#migration) further below #### Deprecations with 0.18.0 - we will deprecate all translation enum entries which do not follow the `to + infinitive` naming schema #### Deprecations with 0.19.0 We will make a major refactoring on core and logic level where we will: - 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 0.21.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 0.20.0) Those changes should not affect most Atrium users. It will affect you if you: - created own assertion 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. ### Breaking Changes *Planned* (previously deprecated or announced) - removed deprecated modules: atrium-core-robstoll, atrium-core-robstoll-lib, atrium-domain-builders (including ExpectBuilder) -- see [https://github.com/robstoll/atrium/pull/856](https://togithub.com/robstoll/atrium/pull/856) - removed deprecated functions/types which were scheduled to be removed with 0.17.0, i.a. ReporterFactory, RawString, collectForDifferentSubject -- see [https://github.com/robstoll/atrium/pull/858](https://togithub.com/robstoll/atrium/pull/858) and [https://github.com/robstoll/atrium/pull/859](https://togithub.com/robstoll/atrium/pull/859) - not really a breaking change but just as info, we renamed core-api to core (as we no longer split core into api and implementation) *Unplanned* - none this time #### Breaking Changes with 0.18.0 First of all, see deprecation above which will be removed with 0.18.0, some of them are breaking as well - we will move expectation functions already following the `to + infinitive` convention from ...Assertions.kt to the corresponding ...Expectations.kt file which is a binary breaking change => please re-compile your sources - we will rename files named charSequence/iterableLike/mapLikeContains... to charSequence/iterableLike/mapLikeToContain which is a binary breaking change => please re-compile your sources - we will generate jdk 11 byte code (yes, we skip jdk8 as newer android versions support jdk11 byte code) an no longer jdk1.6 (and thus also rely on Kotlin's stlib-jdk11) => might affect you in case you still generate jdk1.6 or jdk1.8 in tests as inlining will not work (jdk11 code cannot be inlined into jdk1.6 or jdk1.8) #### Breaking Changes with 0.19.0 - BulletPointProvider will most likely use a BulletPointIdentifier from a different package - might be that we need to change package names which is a binary and source backward compatibility break in case we switch to the new Kotlin MPP plugin with 0.19.0 #### Breaking Changes with 0.20.0 - we will remove all deprecated ...Assertions as well as other deprecating stuff on the logic level. #### Breaking Changes with 1.0.0 See [atrium-roadmap -> Milestone 1.0.0](https://togithub.com/robstoll/atrium-roadmap/issues?utf8=%E2%9C%93\&q=is%3Aissue+milestone%3A1.0.0+) ### Migrating deprecated functionality The following command is carrying out some search & replace so that you don't need to rely on the (unfortunately sometimes buggy) behaviour of ReplaceWith. find . -type f -name "*.kt" -a \( -path "*/src/test/*" -o -path "*/src/*Test/*" \) | xargs perl -0777 -i \ -pe 's/import ch.tutteli.atrium.api.verbs.(assert|assertThat)\n/import ch.tutteli.atrium.api.verbs.expect\n/g;' \ -pe 's/(assert|assertThat)(\(| ?\{)/expect$2/g;' \ -pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.toBe\n/import ch.tutteli.atrium.api.$1.en_GB.toEqual\n/g;' \ -pe 's/([\. ])toBe([\( ])/$1toEqual$2/g;' \ -pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.notToBe\n/import ch.tutteli.atrium.api.$1.en_GB.notToEqual\n/g;' \ -pe 's/([\. ])notToBe([\( ])/$1notToEqual$2/g;' \ -pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.isSameAs\n/import ch.tutteli.atrium.api.$1.en_GB.toBeTheInstance\n/g;' \ -pe 's/([\. ])isSameAs([\( ])/$1toBeTheInstance$2/g;' \ -pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.isNotSameAs\n/import ch.tutteli.atrium.api.$1.en_GB.notToBeTheInstance\n/g;' \ -pe 's/([\. ])isNotSameAs([\( ])/$1notToBeTheInstance$2/g;' \ -pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.notToBeNull\n/import ch.tutteli.atrium.api.$1.en_GB.notToEqualNull\n/g;' \ -pe 's/([\. ])notToBeNull([\( ])/$1notToEqualNull$2/g;' \ -pe 's/import ch.tutteli.atrium.api.(fluent|infix).en_GB.isA\n/import ch.tutteli.atrium.api.$1.en_GB.toBeAnInstanceOf\n/g;' \ -pe 's/([\. ])isA$toBeAnInstanceOf ### Sponsors We would like to thank [Tegonal GmbH](https://www.tegonal.com) for sponsoring Support and PR-Review time. And also a big thank you for sponsoring some time to speed up the transition to the new to + infitive naming schema 🙃 *Are you are using Atrium at work?* Please consider to support the project as well by: - sponsoring [robstoll](https://togithub.com/sponsors/robstoll) (Author and main contributor) - share your expectation functions with others - report bugs - provide feedback in case you miss a featureConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.