mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
0f7a9ed9e8
RSpec defines these as applying to a scope (example, context, suite) as opposed to example group. Mimicing this is currently not possible in Spectator and would require a substantial restructure of how hooks are handled. This may be implemented in the future.
17 KiB
17 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
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
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.