mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
25 KiB
25 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.
0.11.7 - 2023-10-16
Fixed
- Fix memoized value (
let
) with a union type causing segfault. #81
0.11.6 - 2023-01-26
Added
- Added ability to cast types using the return value from expect/should statements with a type matcher.
- Added support for string interpolation in context names/labels.
Fixed
- Fix invalid syntax (unterminated call) when recording calls to stubs with an un-named splat. #51
- Fix malformed method signature when using named splat with keyword arguments in mocked type. #49
Changed
- Expectations using 'should' syntax report file and line where the 'should' keyword is instead of the test start.
- Add non-captured block argument in preparation for Crystal 1.8.0.
0.11.5 - 2022-12-18
Added
- Added support for mock modules and types that include mocked modules.
Fixed
- Fix macro logic to support free variables, 'self', and variants on stubbed methods. #48
- Fix method stubs used on methods that capture blocks.
- Fix type name resolution for when using custom types in a mocked typed.
- Prevent comparing range arguments with non-compatible types in stubs. #48
Changed
- Simplify string representation of mock-related types.
- Remove unnecessary redefinitions of methods when adding stub functionality to a type.
- Allow metadata to be stored as nil to reduce overhead when tracking nodes without tags.
- Use normal equality (==) instead of case-equality (===) with proc arguments in stubs.
- Change stub value cast logic to avoid compiler bug. #80
0.11.4 - 2022-11-27
Added
- Add support for using named (keyword) arguments in place of positional arguments in stubs. #47
- Add
before
,after
, andaround
as aliases forbefore_each
,after_each
, andaround_each
respectively.
Fixed
- Clear stubs defined with
expect().to receive()
syntax after test finishes to prevent leakage between tests. - Ensure stubs defined with
allow().to receive()
syntax are cleared after test finishes when used inside a test (another leakage). - Fix crash caused when logging is enabled after running an example that attempts to exit.
Removed
- Removed support for stubbing undefined (untyped) methods in lazy doubles. Avoids possible segfault.
0.11.3 - 2022-09-03
Fixed
- Display error block (failure message and stack trace) when using
fail
. #78 - Defining a custom matcher outside of the
Spectator
namespace no longer produces a compilation error. #46
0.11.2 - 2022-08-07
Fixed
expect_raises
with block and no arguments produces compilation error. #77
Changed
0.11.1 - 2022-07-18
Fixed
- Workaround nilable type issue with memoized value. #76
0.11.0 - 2022-07-14
Changed
- Overhauled mock and double system. #63
- Testing if
exit
is called no longer is done with stubs and catching theSpectator::SystemExit
exception should be caught. #29 - Adjust evaluation order of
change
matcher expressions.
Removed
- Removed support for stubbing top-level methods (such as
exit
).
0.10.6 - 2022-07-07
Fixed
- Fixed compiler warnings generated by positional arguments with different names.
Changed
- Forward example procsy
to_s
to underlying example. #70
0.10.5 - 2022-01-27
Fixed
- Fixed usage of
sample
with single block argument. #41
0.10.4 - 2022-01-11
Added
- Support string interpolation for example name/description. #41
- Support multiple block arguments in
sample
block (Hash#each
). #41
Changed
- Source line reported by failure list changed to line containing
expect
instead of example start line. - Better compiler error when using string interpolation in group name/description. #41
0.10.3 - 2021-10-13
Fixed
- Fixed runtime error with
expect
outside of test block - now gives compilation error.
Added
- Description of a
provided
example can be set by usingit
as an argument. #69
0.10.2 - 2021-10-22
Fixed
- Fix usage of
be ===
andbe =~
#34 - Better handling of the
be(nil)
when used with value types. #37 - Fix missing arguments for stubbed top-level methods (
system
,exit
, etc.). #36 - Fix outdated naming when using
expect_any_instance_of
. - Fix adding stubs to class methods on mocked types.
Changed
- Elegantly handle missing/undefined methods with
have_attributes
matcher.
0.10.1 - 2021-09-16
Fixed
- Fix
Spectator.configure
block calls tofilter_run_excluding
andfilter_run_including
. #61 - Fix shard version constant creation when lib is in a directory with spaces in the path. #33 Thanks @toddsundsted !
- Re-add pre- and post-condition hooks. #62
0.10.0 - 2021-08-19
Fixed
- Fix resolution of types with the same name in nested scopes. #31
around_each
hooks wrapbefore_all
andafter_all
hooks. #12- Hook execution order has been tweaked to match RSpec.
Added
before_each
,after_each
, andaround_each
hooks are yielded the current example as a block argument.- The
let
andsubject
blocks are yielded the current example as a block argument. - Add internal logging that uses Crystal's
Log
utility. Provide theLOG_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.
- Add matcher to check compiled type of values.
- Examples can be skipped by using a
:pending
tag. A reason method can be specified:pending: "Some excuse"
- Examples without a test block are marked as pending. #37
- Examples can be skipped during execution by using
skip
orpending
in the example block. #17 - Sample blocks can be temporarily skipped by using
xsample
orxrandom_sample
. - Add
before_suite
andafter_suite
hooks. #21 - Support defining hooks in
Spectator.configure
block. #21 - Examples with failures or skipped during execution will report the location of that result. #57
- Support custom messages for failed expectations. #28
- Allow named arguments and assignments for
provided
(given
) block. - Add
aggregate_failures
to capture and report multiple failed expectations. #24 - Supports matching groups. #25 #24
- Add
filter_run_including
,filter_run_excluding
, andfilter_run_when_matching
to config block. - By default, only run tests when any are marked with
focus: true
. - Add "f-prefix" blocks for examples and groups (
fit
,fdescribe
, etc.) as a short-hand for specifyingfocus: true
. - Add HTML formatter. Operates the same as the JUnit formatter. Specify
--html_output=DIR
to use. #22 #3
Changed
given
(nowprovided
) blocks changed to produce a single example.it
can no longer be nested in aprovided
block.- 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") }
- Better error messages and detection when DSL methods are used when they shouldn't (i.e.
describe
insideit
). - Prevent usage of reserved keywords in DSL (such as
initialize
). - The count argument for
sample
andrandom_sample
groups must be named (usecount: 5
instead of just5
). - Helper methods used as arguments for
sample
andrandom_sample
must be class methods. - Simplify and reduce instanced types and generics. Should speed up compilation times.
- Overhaul example creation and handling.
- Overhaul storage of test values.
- Overhaul reporting and formatting. Cleaner output for failures and pending tests.
- Cleanup and simplify DSL implementation.
- Other minor internal improvements and cleanup.
Deprecated
pending
blocks will behave differently in v0.11.0. They will mimic RSpec in that they compile and run the block expecting it to fail. Use askip
(orxit
) block instead to prevent compiling the example.given
has been renamed toprovided
. Thegiven
keyword may be reused later for memoization.
Removed
- Removed one-liner
it
-syntax without braces (block).
0.9.40 - 2021-07-10
Fixed
- Fix stubbing of class methods.
- Fix handling of
no_args
in some cases.
Changed
- Better handling and stubbing of
Process.exit
.
0.9.39 - 2021-07-02
Fixed
- Fix
expect().to receive()
syntax not implicitly stubbing the method. - Avoid calling
NoReturn
methods from stubs. #29
Added
- Added support for
with(no_args)
for method stubs. #28 - Allow creation of doubles without definition block. #30
0.9.38 - 2021-05-27
Fixed
- Fix
Channel::ClosedError
when using default Crystal Logger. #27
0.9.37 - 2021-05-19
Added
- Added support for
be ===
andbe =~
. #26
0.9.36 - 2021-04-22
Fixed
- Remove old workaround that prevented compilation on Windows. #58
0.9.35 - 2021-04-18
Fixed
- Allow types stored in variables or returned by methods in
be_a
(and variants), not just type literals. #25
0.9.34 - 2021-03-31
Changed
- Allow filtering examples by using any line in the example block. #19 Thanks @matthewmcgarvey !
0.9.33 - 2021-03-22
Changed
- Target Crystal 1.0
0.9.32 - 2021-02-03
Fixed
- Fix source reference with brace-less example syntax. #20
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
, andhave_elements
to show missing items in output.
0.9.29 - 2020-12-23
Added
- Add variants
contain_elements
andhave_elements
, which behave likecontain
andhave
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 vialet
. #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
andcontain_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
andcontain_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
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 whensuper
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 forraise_error
matcher. - Support omitted description on
it
andspecify
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
andto_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
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
andmatch_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
andlet
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 mimicraise_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
toTime.utc
in docs.
0.5.0 - 2019-04-07
First version ready for public use.