shard-spectator/CHANGELOG.md
2021-01-30 12:10:09 -07:00

12 KiB

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

Added

  • Hooks are yielded the current example as a block argument.
  • The let and subject blocks are yielded the current example as a block argument.
  • Add internal logging that uses Crystal's Log utility. Provide the LOG_LEVEL environment variable to enable.
  • Support dynamic creation of examples.
  • Capture and log information for hooks.
  • Tags can be added to examples and example groups.

Changed

  • Simplify and reduce defined types and generics. Should speed up compilation times.
  • around_each hooks wrap before_all and after_all hooks. #12
  • The "should" syntax no longer reports the source as inside Spectator.
  • Short-hand "should" syntax must be included by using require "spectator/should" - it { should eq("foo") }
  • Overhaul example creation and handling.
  • Overhaul storage of test values.
  • Cleanup and simplify DSL implementation.
  • Better error messages and detection when DSL methods are used when they shouldn't (i.e. describe inside it).
  • Other minor internal improvements and cleanup.

0.9.31 - 2021-01-08

Fixed

  • Fix misaligned line numbers when referencing examples and groups.

0.9.30 - 2020-12-23

Fixed

  • Fix issue caused by additions from 0.9.29.

Changed

  • Improve the contain, contain_elements, have, and have_elements to show missing items in output.

0.9.29 - 2020-12-23

Added

  • Add variants contain_elements and have_elements, which behave like contain and have matchers except that they take an array (or any enumerable type) instead of a parameter list or splat.

0.9.28 - 2020-11-07

Added

  • Add return_type option to method stubs.

0.9.27 - 2020-10-01

Added

  • Add syntax for stubbing operator-style methods, such as [].

0.9.26 - 2020-09-27

Fixed

  • Fix issue with yielding in stubbed mocks.

0.9.25 - 2020-09-26

Fixed

  • Fix issue with splatting values for failed match data. This prevented the use of "description" and "failure_message" in some matches like respond_to.

0.9.24 - 2020-09-17

Changed

  • Allow some forms of string interpolation in group and example descriptions.

0.9.23 - 2020-08-30

Fixed

  • Allow the use of object_id and other possibly conflicting method names via let. #53

0.9.22 - 2020-08-11

Changed

  • Handle splat in macro for matcher DSL. #8

0.9.21 - 2020-07-27

Added

  • Display random seed when using -r or --seed options. #7

0.9.20 - 2020-05-29

Fixed

  • Fix bug when using multiple short-hand block expects in one test.

0.9.19 - 2020-05-28

Fixed

  • Fix issue with match_array and contain_exactly matchers not working with immutable collections.

0.9.18 - 2020-04-26

Fixed

  • Fix describe_class.new when using a generic type.

0.9.17 - 2020-04-23

Fixed

  • Fix issue when using deferred syntax with receive matcher. #48

0.9.16 - 2020-04-06

Fixed

  • Silence warnings from Crystal 0.34

0.9.15 - 2020-04-03

Fixed

  • Fix issues with match_array().in_any_order and contain_exactly().in_any_order. #47

Changed

  • Improve usability when actual value does not respond to methods needed to verify it. For instance, expect(nil).to contain_exactly(:foo) would not compile. This has been changed so that it compiles and raises an error at runtime with a useful message.

0.9.14 - 2020-04-01

Fixed

  • Fix using nil with be matcher. #45

0.9.13 - 2020-03-28

Fixed

  • Fix arguments not found in default stubs for mocks. #44

0.9.12 - 2020-03-20

Fixed

  • Fix issue when mocking modules. Thanks @watzon !

0.9.11 - 2020-03-04

Fixed

  • Fix issue when describing constants. #40 #41

0.9.10 - 2020-03-03

Changed

  • Smarter behavior when omitting the block argument to the around_each hook.

0.9.9 - 2020-02-22

Fixed

  • Fix implicit subject when used with a module. #6

0.9.8 - 2020-02-21

Fixed

  • Fix be_between matcher. Thanks @davidepaolotua / @jinn999 !

0.9.7 - 2020-02-16

Fixed

  • Fix memoization of subject when using a type name for the context.
  • Fix some cases when mocking a class method.

0.9.6 - 2020-02-10

Added

  • Add short-hand "should" syntax - it { should eq("foo") }
  • The be matcher can be used on value types.
  • Add more tests cases from RSpec docs.

Fixed

  • Fix an issue with stubbed class methods on mocked types. Sometimes previous_def was used when super should have been used instead.
  • Fix deferred expectations not running after all hooks.

0.9.5 - 2020-01-19

Changed

  • Described type is now considered an explicit subject.

0.9.4 - 2020-01-19

Added

  • Add more test cases from RSpec docs.
  • Add it_fails utility to test expected failures.

Fixed

  • Fix negated case for respond_to matcher.

0.9.3 - 2020-01-17

Fixed

  • Fix implicit subject overwriting explicit subject. #25

0.9.2 - 2020-01-14

Added

  • Add tests from RSpec docs.
  • Add with_message modifier for raise_error matcher.
  • Support omitted description on it and specify blocks. Use matcher description by default.

Fixed

  • Fix let! not inferring return type. #4

Changed

  • Modified some matchers to behave more closely to their RSpec counterparts.

0.9.1 - 2019-12-13

Fixed

  • Fix default stub with type.
  • Fix verifying double on self argument type.
  • Pass stub instead of stub name to mock registry.

Removed

  • Remove unnecessary type from stub class hierarchy.

0.9.0 - 2019-12-08

Added

  • Implement initial mocks and doubles (stubbing) support. #16 #6
  • Deferred expectations (to_eventually and to_never).

Changed

  • Test cases no longer define an entire class, but rather a method in a class belonging to the group.

0.8.3 - 2019-09-23

Fixed

  • Fix and address warnings with Crystal 0.31.0.

0.8.2 - 2019-08-21

Fixed

  • Workaround for Crystal compiler bug #7060. #1

0.8.1 - 2019-08-17

Fixed

  • Fix nested sample_value blocks giving cryptic error. #20

0.8.0 - 2019-08-12

Added

  • Add "any order" modifier for contains_exactly and match_array.
  • Add change matcher and its variations.
  • Add all matcher.
  • Variation of let syntax that takes an assignment.

Changed

  • Rewrote matcher class structure.
  • Improved tracking of actual and expected values and their labels.
  • Matcher values are only produced when the match fails, instead of always.

Fixed

  • Fix malformed code generated by macros not working in latest Crystal version.

0.7.2 - 2019-06-01

Fixed

  • Reference types used in subject and let were recreated between hooks and the test block. #11

0.7.1 - 2019-05-21

Fixed

  • Fixed an issue where named subjects could crash the compiler.

0.7.0 - 2019-05-16

Added

  • Added be_between matcher.

Changed

  • The be_within matcher behaves like RSpec's.

0.6.0 - 2019-05-08

Changed

  • Introduced reference matcher and changed be matcher to use it instead of the case matcher.

Removed

  • Removed regex matcher, the case matcher is used instead.

0.5.3 - 2019-05-08

Fixed

  • Updated the expect_raises matcher to accept an optional second argument to mimic raise_error. #4

0.5.2 - 2019-04-22

Fixed

  • Fix after_all hooks not running with fail-fast enabled. #2

0.5.1 - 2019-04-18

Added

  • Note in README regarding repository mirror.

Fixed

  • Change protection on expectation partial to work with Crystal 0.28 and "should" syntax.
  • Change references to Time.now to Time.utc in docs.

0.5.0 - 2019-04-07

First version ready for public use.