Commit graph

435 commits

Author SHA1 Message Date
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
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
17a3ca3ac7
Fix https://gitlab.com/arctic-fox/spectator/-/issues/77 2022-08-07 14:58:09 -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
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
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
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
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
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
181a34a0b3
Display "None" when no methods are called 2022-07-13 10:53:57 -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
24eec64d64
Check for leaks on class mocks and doubles 2022-07-12 20:09:18 -06:00
Michael Miller
6e57a1c44a
Allow method calls with unconstrained arguments
Workaround for the expect-receive DSL syntax to allow methods to be called without matching arguments.
2022-07-12 19:23:13 -06:00
Michael Miller
c91e288f61
Add initial support for exect-receive syntax 2022-07-12 19:11:44 -06:00
Michael Miller
3d7655a5d1
Add support for any_args in DSL 2022-07-12 19:05:55 -06:00
Michael Miller
4aaa8db5e2
Rename Arguments.empty to Arguments.none 2022-07-12 18:59:23 -06:00
Michael Miller
b137a8e742
Test matcher text 2022-07-12 18:04:51 -06:00
Michael Miller
d7ea969f55
Pretify stub and call output
Fix some tests.
2022-07-12 17:47:05 -06:00
Michael Miller
36cc035417
Add tests for ReceiveMatcher 2022-07-12 17:19:42 -06:00
Michael Miller
694e2e6259
Initial implementation of have_received 2022-07-11 20:25:15 -06:00
Michael Miller
011ca37b50
Reenable pending tests 2022-07-11 02:59:29 -06:00
Michael Miller
32a9bfd356
Add no_args 2022-07-10 18:51:58 -06:00
Michael Miller
ae8421c29e
Address Ameba issue 2022-07-10 17:59:49 -06:00
Michael Miller
29389f1dbf
Add indexer methods for captured arguments 2022-07-10 17:38:17 -06:00
Michael Miller
4aaed186c3
Add with stub modifier 2022-07-10 17:31:13 -06:00
Michael Miller
cd177dd2ae
Implement ProcStub 2022-07-10 11:54:51 -06:00
Michael Miller
4d5004ab4f
Add ExceptionStub 2022-07-09 22:12:24 -06:00
Michael Miller
f17cc73487
More multi value stub tests 2022-07-09 21:48:22 -06:00
Michael Miller
9c705bf888
Add MultiValueStub 2022-07-09 20:52:01 -06:00
Michael Miller
813983de4b
Implement and test DSL for class mocks and doubles 2022-07-07 19:09:18 -06:00
Michael Miller
ccc8997cca
Test type restricted methods with class mocks 2022-07-07 19:00:07 -06:00
Michael Miller
f7147299ab
Add stub support to class methods on mocks 2022-07-04 20:19:13 -06:00
Michael Miller
aa87d124e4
Test class method stubs 2022-07-04 16:14:56 -06:00
Michael Miller
cecd2464de
Initial code for StubbedType 2022-07-03 13:40:29 -06:00
Michael Miller
c8ec0ad02a
Record calls on injected mocks 2022-06-28 23:36:24 -06:00