Michael Miller
726a2e1515
Add non-captured block argument
...
Preparing for Crystal 1.8.0
https://github.com/crystal-lang/crystal/issues/8764
2023-01-26 17:19:31 -07:00
Michael Miller
fa99987780
Support creating instances of mocked modules via class
...
This is a bit of a hack.
The `.new` method is added to the module, which creates an instance that includes the mocked module.
No changes to the def_mock and new_mock methods are necessary.
For some reason, infinite recursion occurs when calling `.new` on the class.
To get around the issue for now, the internal method of allocation is used.
That is, allocate + initialize.
2022-12-18 16:04:49 -07:00
Michael Miller
d378583054
Support mocking modules
2022-12-18 15:18:20 -07:00
Michael Miller
4b68b8e3de
Fix resolution issue when mocked types use custom types
...
GitLab issue 51 is affected.
https://gitlab.com/arctic-fox/spectator/-/issues/51
Private types cannot be referenced with mocks.
2022-12-17 20:56:16 -07:00
Michael Miller
a967dce241
Adjust double string representation
...
to_s and inspect (with variants) are no longer "original implementation."
2022-11-29 21:24:31 -07:00
Michael Miller
8efd38fbdd
Split Arguments class by functionality
...
Code changes for https://github.com/icy-arctic-fox/spectator/issues/47 caused a drastic increase in compilation times.
This improves compilation times by splitting concerns for arguments.
In one case, arguments are used for matching.
In the other, arguments are captured for comparison.
The second case has been moved to a FormalArguments class.
Theoretically, this reduces the complexity and combinations the compiler might be iterating.
2022-11-27 22:26:19 -07:00
Michael Miller
a6149b2671
Use before
instead of before_each
(same for after)
2022-11-04 16:56:03 -06:00
Michael Miller
4dacaab6dc
Fix missing keyword arguments after splat
2022-10-23 22:36:20 -06:00
Michael Miller
c77da67341
Hide splat label in certain situations
...
Undefined double methods were reporting splat arguments, which is technically correct.
But for output in these cases, it makes more sense to show the exact calling args.
2022-10-23 21:56:37 -06:00
Michael Miller
e2130d12d3
Implement arguments case equality
...
Implements https://github.com/icy-arctic-fox/spectator/issues/47
Some specs are failing and need to be resolved before the new feature is considered done.
2022-10-23 20:42:08 -06:00
Michael Miller
a728a037d4
Rename attributes
2022-10-23 15:37:55 -06:00
Michael Miller
163f94287e
Fix Arguments to_s
2022-10-23 15:27:39 -06:00
Michael Miller
e38e3ecc32
Initial rework of arguments to support named positionals
2022-10-23 15:22:50 -06:00
Michael Miller
d9082dab45
Test behavior and for leakages with allow syntax
2022-10-09 17:14:20 -06:00
Michael Miller
b3aa2d62c0
Ensure stubs don't leak between examples
2022-10-09 16:59:39 -06:00
Michael Miller
c6afa0adb3
Use different value than original
2022-10-09 16:58:56 -06:00
Michael Miller
090c95b162
Ensure stubs defined with allow syntax are cleared
2022-10-09 15:48:00 -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
7e09016e5c
Add count modifiers for have_received matcher
2022-07-14 20:46:52 -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
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
754bfd6939
Intercept most exit calls and raise instead
2022-07-12 23:02:20 -06:00
Michael Miller
fe88eefa86
Add inject_mock to DSL
2022-07-12 22:12:48 -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
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
Michael Miller
8aed5027aa
Remove _spectator_calls method with filter
2022-06-28 23:02:46 -06:00
Michael Miller
3589f23475
Store calls to mocks and doubles
2022-06-28 22:54:08 -06:00
Michael Miller
c70e4792af
Rename _spectator_calls to _spectator_invocations
2022-06-08 08:18:16 -06:00
Michael Miller
96c7c84275
Test mocked structs
2022-06-01 23:37:54 -06:00
Michael Miller
d289cbff29
Add tests for abstract class mock
2022-06-01 23:13:16 -06:00