Skip to content

Latest commit

 

History

History
117 lines (89 loc) · 4.24 KB

File metadata and controls

117 lines (89 loc) · 4.24 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

  • Housekeeping: added release badge to README

[1.0.21] - 2026-01-18

Fixed

  • Improved docs:fix task to handle more YARD-transformed filenames (like README_md.html, USAGE_md.html, etc.) and ensure they are correctly mapped to their final file.*.html counterparts.

[1.0.20] - 2026-01-18

Changed

  • Reorganized documentation: extracted detailed usage into USAGE.md and added Table of Contents.
  • Internal refactoring: moved DescendsFrom to value_matchers.rb and consolidated type matchers.

Fixed

  • Added missing tests for NilValue, Truthy, Falsy, and InstanceOf matchers.

[1.0.0 - 1.0.19] - 2026-01-18

  • Housekeeping: automate CI and release workflows

1.0.0 - 2026-01-17

Added

  • Core matchers

    • equals(expected) - value equality with deep comparison
    • is(expected) - reference equality (now supports matchers as well, e.g., is(anything))
    • anything - placeholder matcher that accepts any value
    • never(matcher) - negation
  • Type and method matchers

    • is_a(type) (alias of descends_from) - type/class checking (including hierarchy)
    • descends_from(type) - type/class checking (including hierarchy)
    • instance_of(type) - exact class checking
    • responds_to(*methods) - method presence checking
  • Value matchers

    • nil_value - matches nil
    • truthy - matches any value that is not nil or false
    • falsy - matches nil or false
  • String matchers

    • starts_with(prefix) - string prefix matching
    • ends_with(suffix) - string suffix matching
    • matches_pattern(regex) - regex pattern matching
    • blank - blank string matching (empty or whitespace-only)
  • Size and emptiness matchers

    • empty - empty collection matching
    • has_size(expected) - size/length matching (accepts matchers)
  • Numeric comparison matchers

    • is_greater_than(n)
    • is_greater_than_or_equal_to(n)
    • is_less_than(n)
    • is_less_than_or_equal_to(n)
    • between(min, max, exclusive: false) - range check
    • is_close_to(n, delta) - floating-point tolerance
  • Collection content matchers

    • includes(*items) - partial containment (strings, arrays, hashes)
    • has_key(*keys) - hash key presence
    • has_value(*values) - hash value presence
    • contains(*items) - exact items in any order
    • contains_exactly(*items) - exact items in exact order
  • Collection item matchers

    • all_items(matcher) - all items must match
    • some_items(matcher) - at least one item must match
    • no_items(matcher) - no items should match
    • all_entries(matcher) - all hash entries must match
    • some_entry(matcher) - at least one hash entry must match
    • no_entry(matcher) - no hash entries should match
  • Membership matcher

    • is_in(collection) - value membership in arrays, hashes, strings, ranges
  • Object attribute matcher

    • has_attribute(name, matcher = nil) - object/hash attribute checking
  • Error assertions

    • raises_error(class = nil, message_matcher = nil) - block raises error
    • raises_nothing - block does not raise
  • Combinators

    • & operator - AND combination
    • | operator - OR combination
    • all_of(*matchers) - all matchers must match
    • some_of(*matchers) - at least one matcher must match
    • none_of(*matchers) - no matcher should match
  • Fluent API

    • assert_that(actual).equals(expected)
    • assert_that(actual).is(expected)
    • assert_that(actual).never(matcher) (aliases: is_not, does_not)
    • assert_that(actual).matches(matcher)
    • assert_that { block }.raises_error
    • assert_that { block }.raises_nothing
  • Custom matcher API

    • Minicrest.register_matcher(name, &block) - register custom matchers
    • Subclass Minicrest::Matcher to create custom matchers
  • Detailed failure messages

    • Hash diffs showing missing/extra/changed keys
    • Array diffs showing index-based differences
    • String diffs showing position of first difference