Commit Graph

2231 Commits

Author SHA1 Message Date
Michael Miller 5c910e5a85
Clear stubs defined with `expect().to receive()` syntax after test finishes 2022-10-09 13:57:28 -06:00
Michael Miller 25b9931002
Add ability to remove specific stubs 2022-10-09 13:38:29 -06:00
Michael Miller 422b0efa59
Update test to account for fix in Crystal 1.6
Keyword arguments cannot be used as a short-hand for positional arguments (yet).
https://github.com/icy-arctic-fox/spectator/issues/44
2022-10-09 12:33:31 -06:00
Michael Miller c1e1666449
Formatting 2022-10-08 14:05:53 -06:00
Michael Miller 4dfa5ccb6e
Prevent defining stubs on undefined methods in LazyDouble
In Crystal 1.6, a segfault would occur in the spec spec/spectator/mocks/lazy_double_spec.cr:238
I suspect this is a Crystal bug of some kind, but can't reduce it.
The methods produced by `method_missing` don't have a return type including Symbol.
Symbol is excluded from the union of return types (Int32 | String | Nil).
The program segfaults when calling a method on the actual value, which is a symbol.
It ultimately crashes when producing a failure message, which indicates the value it tested doesn't equal the expected value (a symbol of the same value).
Avoid this issue by preventing stubs on undefined/untyped methods.
2022-10-08 14:04:02 -06:00
Michael Miller 1998edbbb2
Release v0.11.3 2022-09-03 16:48:15 -06:00
Michael Miller 079272c9de
Add spec for custom matchers docs
Related: https://github.com/icy-arctic-fox/spectator/issues/46
2022-09-03 16:46:17 -06:00
Michael Miller ccdf9f124b
Add require statements and namespace Value
When defining a matcher outside of the `Spectator` module (custom matcher), `Value(ExpectedType)` can't be resolved.
I suspect this is a Crystal compiler bug, since a derived class should not affect lookups of parent classes like this.
Require statements are added to (hopefully) ensure `Spectator::Value` is defined for the initializer.
Related to https://github.com/icy-arctic-fox/spectator/issues/46
2022-09-03 16:46:17 -06:00
Michael Miller 7549351cce
Match tense of failure block component 2022-08-29 21:13:58 -06:00
Michael Miller 0505f210f9
Update CHANGELOG 2022-08-29 20:56:26 -06:00
Michael Miller 9d6d8de72f
Show error block for forced failure - `fail`
Fixes https://gitlab.com/arctic-fox/spectator/-/issues/78
2022-08-29 20:53:48 -06:00
Michael Miller 027521a7bc
ErrorResultBlock only needs the exception, not an ErrorResult 2022-08-29 18:00:32 -06:00
Michael Miller d10531430c
Bump v0.11.2 2022-08-07 15:23:05 -06:00
Michael Miller b5c61f9003
Change `-e` to use partial instead of exact match
Fixes https://gitlab.com/arctic-fox/spectator/-/issues/71
Fixes https://github.com/icy-arctic-fox/spectator/issues/45
2022-08-07 15:20:17 -06:00
Michael Miller 17a3ca3ac7
Fix https://gitlab.com/arctic-fox/spectator/-/issues/77 2022-08-07 14:58:09 -06:00
Michael Miller 02027cda53
Bump version 0.11.1 2022-07-18 19:48:43 -06:00
Michael Miller 18e9c1c35d
Workaround issue with Box.unbox causing segfault
Using Box.unbox on a nil value with a union type causes:

Invalid memory access (signal 11) at address 0x8

Related Crystal issue: https://github.com/crystal-lang/crystal/issues/11839
Fixes: https://gitlab.com/arctic-fox/spectator/-/issues/76
2022-07-18 19:47:34 -06:00
Michael Miller 95764140ee
Add spec for GitLab issue 51
https://gitlab.com/arctic-fox/spectator/-/issues/51
2022-07-14 22:01:33 -06:00
Michael Miller 61dee8d7db
Release v0.11.0 2022-07-14 20:51:48 -06:00
Michael Miller f4c5caa656
Update checklist 2022-07-14 20:50:28 -06:00
Michael Miller 7e09016e5c
Add count modifiers for have_received matcher 2022-07-14 20:46:52 -06:00
Michael Miller e2e33e440b
Add link 2022-07-14 19:59:47 -06:00
Michael Miller d14a2fa27e
Change "title" 2022-07-14 19:59:14 -06:00
Michael Miller d6e8ce2cb7
Update version 2022-07-14 19:18:38 -06:00
Michael Miller c62cc8fdc7
Update checklist 2022-07-14 19:18:23 -06:00
Michael Miller 9c888fef3f
Add specs for mocks and stubs docs 2022-07-14 19:11:45 -06:00
Michael Miller c0a32505ee
Address Ameba issue 2022-07-14 13:53:30 -06:00
Michael Miller c228984956
Add specs for anonymous and null object doubles docs 2022-07-14 13:51:24 -06:00
Michael Miller 827b69483b
Disallow stubs for undefined methods in null double
Any method_missing invocation should return self.
2022-07-14 13:37:09 -06:00
Michael Miller 7dd77a2096
Add spec for doubles docs 2022-07-14 13:18:13 -06:00
Michael Miller 1d58824e6c
Support default stubs for class_double 2022-07-14 13:18:02 -06:00
Michael Miller e29c732d0f
Add count to ReceiveMatcher 2022-07-13 16:48:38 -06:00
Michael Miller be973cdc4b
Add spec for GitHub issue 44
https://github.com/icy-arctic-fox/spectator/issues/44
2022-07-13 15:52:31 -06:00
Michael Miller 9efb6c95dd
Workaround compiler bug introduced by aa9ca7a
BUG: trying to upcast Nil (Crystal::NilType) <- NoReturn (Crystal::NoReturnType) (Exception)
  from /crystal/src/compiler/crystal/codegen/cast.cr:668:5 in 'upcast_distinct'
  from /crystal/src/compiler/crystal/codegen/cast.cr:523:15 in 'upcast'
  from /crystal/src/compiler/crystal/codegen/codegen.cr:1369:11 in 'accept'
  from /crystal/src/compiler/crystal/codegen/codegen.cr:2274:9 in 'visit'
  from /crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
...
2022-07-13 15:40:22 -06:00
Michael Miller f1465c44d8
Fix Ameba issues 2022-07-13 13:42:44 -06:00
Michael Miller aa9ca7a98e
Don't return nil for methods using NoReturn 2022-07-13 12:24:29 -06:00
Michael Miller 14d8c046f0
Workaround absolute path requirement for mock injection 2022-07-13 12:23:28 -06:00
Michael Miller ac3b322900
Use absolute path for inject_mock
This is necessary to override the original type instead of creating a new one within the spec.
2022-07-13 11:29:19 -06:00
Michael Miller da3fbc9607
Add spec for GitHub issue 43
https://github.com/icy-arctic-fox/spectator/issues/43
2022-07-13 11:17:10 -06:00
Michael Miller 70efa1ad78
Indent multi-line values in failure block output 2022-07-13 11:11:31 -06:00
Michael Miller 181a34a0b3
Display "None" when no methods are called 2022-07-13 10:53:57 -06:00
Mike Miller b65f53f105 Merge branch 'mock-redesign' into 'master'
Overhaul mock system

See merge request arctic-fox/spectator!35
2022-07-13 05:43:53 +00:00
Michael Miller 0ba241221f
Update CHANGELOG 2022-07-12 23:37:13 -06:00
Michael Miller e52f187eb7
Show new mock and double system in README 2022-07-12 23:22:47 -06:00
Michael Miller 754bfd6939
Intercept most exit calls and raise instead 2022-07-12 23:02:20 -06:00
Michael Miller 3c9c7f88be
Reenable test relying on doubles 2022-07-12 22:32:09 -06:00
Michael Miller 2e5f822e1d
Remove `new` from reserved keywords
This effectively allows stubs to be placed on the `new` method for types.
A strange issue arose when the keyword was allowed.
The compiler failed to resolve the Stub type from the Double initializer.
The error trace goes through null_double_spec.cr.
Running just that spec file confirms the issue is there, but running other individual files doesn't produce the error.
As a workaround, I've put the full path of Stub in the initializer.
2022-07-12 22:30:04 -06:00
Michael Miller fe88eefa86
Add inject_mock to DSL 2022-07-12 22:12:48 -06:00
Michael Miller 193a476679
Update known issues to use new mock system 2022-07-12 21:50:45 -06:00
Michael Miller 99fb47c6e9
Remove redundant block conditionals 2022-07-12 21:46:12 -06:00