Changelog

0.33.0 Scarlet Attitude

  • Supports Kotlin 1.6
  • Add doesNotContainKey and doesNotContainKeys map assertions

0.32.0 Golden Depths

  • Supports Kotlin 1.5
  • Removes strikt-gradle module as classpath isolation is problematic with Kotlin 1.5 and the gradleTestKit dependency.
  • Adds Assertion.Builder<T>.subject : T property for accessing the subject value.

0.31.0 Ashen Forests

  • Incomplete assertion chains now throw IncompleteAssertion.
  • Suppresses class name in the toString of exceptions thrown by Strikt assertions.
  • Updates strikt-arrow to support recent changes in the Arrow library.

0.30.1 Ascending Ivory

  • Fixes an issue where pending assertion chains in a block took precedence over failures, causing false positives. See #243

0.30.0 Sorrowful Glass

  • All transitive dependencies are now resolvable from Maven Central rather than needing JCenter.
  • Adds isContainedIn assertion.

0.29.0 Hateful Mantis

  • Moves several JVM-specific assertions to the new strikt-jvm module.
  • Removes the strikt-java-time module (use strikt-jvm instead).
  • Adds isSorted assertion for Iterable<Comparable<*>>.
  • Broadens isSorted(Comparator) so that it applies to Iterable<*> rather than Collection<*>.

0.28.2 Hidden Ruin

  • Removes support for Arrow's Try type that has been removed from arrow-core.
  • Adds anyIndexed, allIndexed, and noneIndexed assertions for Iterable<*>.

0.28.1 Distant Princess

  • Adds count() and count(predicate) mappings for Iterable subjects.
  • Additional support for File subjects. See #230
    • mapping property Assertion.Builder<File>.parentFile: Builder<File>
    • mapping property Assertion.Builder<File>.lastModified: Long
    • mapping property Assertion.Builder<File>.length: Long
    • mapping property Assertion.Builder<File>.childFiles: Builder<List<File>>
    • mapping function Assertion.Builder<File>.childFile(name): Builder<File>
    • assertion Assertion.Builder<File>.exists()
    • assertion Assertion.Builder<File>.notExists()
    • assertion Assertion.Builder<File>.isRegularFile()
    • assertion Assertion.Builder<File>.isNotRegularFile()
    • assertion Assertion.Builder<File>.isDirectory()
    • assertion Assertion.Builder<File>.isNotDirectory()
    • assertion Assertion.Builder<File>.isReadable()
    • assertion Assertion.Builder<File>.isNotReadable()
    • assertion Assertion.Builder<File>.isWritable()
    • assertion Assertion.Builder<File>.isNotWritable()
    • assertion Assertion.Builder<File>.isExecutable()
    • assertion Assertion.Builder<File>.isNotExecutable()

0.28.0 Invincible Sadness

  • Fixes compilation using Android due to use of private interface methods. See #229
  • Assertion chains that use not will now report actual values if they fail. See #222

0.27.0 Hungry Spear

Kotlin 1.4 compatibility


0.26.1 Quicksilver Silhouette

  • Assertion.Builder<Iterable<E>>withFirst
  • Assertion.Builder<Iterable<E>>withFirst(predicate)
  • Assertion.Builder<Iterable<E>>withLast
  • Assertion.Builder<Iterable<E>>withElementAt
  • Assertion.Builder<Map<K, V>>withValue
  • Assertion.Builder<CapturingSlot<T>>withCaptured in strikt-mockk.

0.26.0 Ferocious Daughter

  • succeeded and failed deprecated in favor of isSuccess and isFailure.
  • added Assertion.Builder<Enum<T>>.isOneOf assertion.
  • single now displays the number of elements found if it fails. See #210
  • Improved description of task mapping. See #218

0.25.0 Blighted Depths

  • strikt-mockk module.

0.24.0 Auspicious Misery

  • New methods:
    • Assertion.Builder<Iterable<T>>.elementAt
    • Assertion.Builder<Iterable<T>>.one
    • Assertion.Builder<ArrayNode>.findValuesAsText
    • Assertion.Builder<ArrayNode>.textValues

0.23.7 Celestial Depths

  • Fixes filepeek support on Windows

0.23.6 Weeping Spire

  • Fixes missing transitive dependency on com.christophsturm:filepeek

0.23.5 Auspicious Misery

  • Fixes some errors in complex nested block scenarios. See #203 and #204

0.23.4 Grievous Form

  • Fixes BOM file from previous release

0.23.3 Savage Wing

  • Improved descriptions associated with Jackson extensions. See #195
  • Added at mapping for JsonNode assertions. See #152

0.23.2 Mighty Empress

  • Fixes IllegalArgumentException on compose when prior assertions have failed because the subject is the wrong type. See #194

0.23.1 Bounteous Moon

Re-release of v0.23.0 following broken release


0.23.0 Rancorous Horizon

  • Adds with function for performing blocks of assertions on a derived subject. See #117
  • Many assertion functions may now be used in infix style. See #187
  • Improves presentation of multi-line values in expectation output. See #158
  • The expectThat override that accepts a lambda is now Unit rather than returning Assertion.Builder. See #190

0.22.3 Vermillion Warrior

  • Adds assertions for sequence of values being present in a list
  • Fixes to documentation in Arrow module

0.22.2 Flawless Assassin

  • Fixes transitive dependency on opentest4j for consumers
  • Updates Arrow dependency

0.22.1 Blessed Hammer

  • Fixes documentation link that broke previous release

0.22.0 Rancourous Dirge

  • New module for assertions on Arrow's Either, Try and Option types.

0.21.2 Funereal Daughter

  • Fixes issues with and (see #176)
  • Kotlin 1.3.50

0.21.1 Heavenly Bear

  • Bug-fix for type inference in succeeded().
  • Improved output for failed().

0.21.0 Funereal Raven

  • Updated exception handling assertions that use Kotlin's runCatching and Result<T>.
  • Added override for describedAs that accepts a lambda.

0.20.1 Elder Refuge

  • Changed Assertion.Builder<Iterable<*>>.contains to pass if the argument is an empty list/varargs.
  • Fixed an out of bounds exception in Assertion.Builder<Iterable<*>>.containsExactly

0.20.0 Pain Mother

Added strikt.gradle module with some support for testing Gradle's API.


0.19.7 Glorious Catacomb

  • Adds assertions and mappings for java.io.File and java.nio.file.Path
  • Adds assertions for Spring's ResponseEntity class.

0.19.6 Bitter Forest

Fixes issues with bom publication.


0.19.5 Victorious Scholar

Packages a BOM for aligning strikt versions.


0.19.4 Poison Spire

Suppresses internal stack frames from exceptions to make it easier to determine where the assertion was raised.


0.19.3 Iron Ocean

  • Adds assertions and mappings for Assertion.Builder<ClosedRange>.
  • Adds endsWith(Char) for Assertion.Builder<CharSequence>.

0.19.2 Bounteous Steel

  • Adds getValue assertion/mapping for Assertion.Builder<Map<*, *>>.

0.19.1 Mighty Rainbow

  • Adds overload of not that accepts a block.

0.19.0 Poison Hammer

  • Ensures that chains inside of blocks still fail fast.
  • Ensures get is runtime type safe. It's now a no-op when preceded by a failing type-narrowing assertion.

0.18.2 Venomous Twilight

Added atLeat, atMost and exactly assertions for iterables.


0.18.1 Ferocious Rose

Extends strikt-jackson module with further assertion and mapping functions:

  • hasNodeType(JsonNodeType)
  • isMissing()
  • textValue()
  • numberValue()
  • booleanValue()

0.18.0 Silken Grasshopper

Adds strikt-jackson module.


0.17.3 Unfettered Serpent

Adds isPresent and isAbsent assertions for java.util.Optional along with toNullable mapping function.


0.17.2 Battleworn Understanding

Fixes isSorted when used in a block.


0.17.1 Whispering Sword

Adds filter, filterNot and filterIsInstance functions for Assertion.Builder<Iterable<*>>


0.17.0 Forsaken Raven

  • Upgrades Strikt to depend on Kotlin 1.3.
  • expectThrows is un-deprecated.
  • Expectations are now compatible with suspending lambdas.
  • isBefore and isAfter in strikt-java-time now support ZonedDateTime.

0.16.3 Saffron Mammoth

  • Assertion.Builder<Collection<*>.isSorted
  • isEqualTo now has special handling for arrays that compares content using contentEquals.

0.16.2 Anonymous Ifrit

  • Backed out truncation of values in failure messages.

0.16.1 Onyx Mammoth

  • Backed out truncation of values in failure messages.

0.16.0 Sadness Blossom

  • Assertions for java.time types moved from strikt-core to new strikt-java-time module.
  • Assertion.Builder<Map<*, *>>.isNotEmpty
  • Assertion.Builder<Array<*>>.toList
  • Assertion.Builder<CharSequence>.trim
  • Assertion.Builder<String>.trim

0.15.2 Alabaster Tyrant

  • Added is(Not)(NullOr)(Empty|Blank) assertions.

0.15.1 Wasteland Monkey

  • Changes get to use a receiver rather than a parameter.
  • Adds new first(predicate) and flatMap mapping extensions for iterable subjects.

0.15.0 Garden Daimyo

  • Deprecates chain in favor of new get method.

0.14.4 Void Maiden

  • Added Java 11 build & hopefully fixed site publishing

0.14.3 Hungry Boulder

  • Added isIn assertion.

0.14.2 Black Waterfall


0.14.1 Bitter Tiger

Fixes broken dependency declaration in strikt-protobuf.


0.14.0 Ruby Panther

Breaking change renaming map to chain in order to allow a map method that applies to Assertion.Builder<Iterable<*>>.


0.13.0 Blessed Starfall

  • Revisions to exception assertions.
    • Instead of assertThrows(() -> Unit) use assertThat(catching(() -> Unit))
    • throws' receiver is now Assertion.Builder<Throwable?> instead of Assertion.Builder<() -> Unit>

0.12.0 Adamant Rose


0.11.6 Moonsilver Serpent


0.11.5 Harmonious Eagle


0.11.4 Pain Empress


0.11.3 Unfettered Sky


0.11.2 Viper Understanding


0.11.1 Mantis Discipline


0.11.0 Ascending Snake


0.10.2 Forest Daimyo


0.10.1 Silhouette Evasion


0.10.0 Ashen Intuition


0.9.0 Glorious Bitterness


0.8.6 Fluttering Rat


0.8.5 Havoc Lotus


0.8.4 Vengeful Technique


0.8.3 Scorning Guardian


0.8.2 Ebon Claw


0.8.1 Marginal Spring


0.8.0 Ridiculous Diplomat


0.7.4 Stalwart Havoc


0.7.2 Noticeable Bell


0.7.1 Bright Raven


0.7.0 Vermillion Mantis


0.6.8 Battleworn Hyena


0.6.7 Black Rampart


0.6.6 Quicksilver Serpent


0.6.5 Whispering Horizon


0.6.4 Sorrowful Bow


0.6.3 Flaxen Tiger


0.6.2 Benificent Locust


0.6.1 Drunken Orchid


0.6.0 Metal Eagle


0.5.1 Tsunami Carp


0.5.0 Saffron Thunderhead


0.4.2 Virtuous Monsoon


0.4.1 Iron Mind


0.4.0 Starmetal Mist


0.3.0 Towering Moon


0.2.7 Elder Starfall


0.2.6 Sapphire Spear


0.2.5


0.2.4


0.2.3


0.2.2


0.2.1


0.2.0


0.1.0