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
Michael Miller
0a710c831a
Test context handling with mocks
2022-06-01 22:23:49 -06:00
Michael Miller
8fbcbe8b73
Test mock scope
2022-06-01 22:11:32 -06:00
Michael Miller
3f4216a271
Allow passing default value stubs to mock initialization
2022-06-01 22:04:18 -06:00
Michael Miller
225553127d
More mock tests
2022-06-01 17:56:09 -06:00
Michael Miller
934c92aed1
More mock DSL tests
2022-05-29 00:28:38 -06:00
Michael Miller
03754321b5
Fix existing mock DSL macros
...
Initial code for mock DSL.
2022-05-28 09:18:49 -06:00
Michael Miller
6060b3cd10
Test type restrictions and ensure original methods aren't called
2022-05-28 09:18:03 -06:00
Michael Miller
fa89fa5550
Remove problematic test and use be_a
2022-05-27 21:45:01 -06:00
Michael Miller
959139b1ee
Use be_a instead of be_lt for types
...
Remove problematic `be_lt(::Reference)`
This appears to drastically increase compilation time and resources.
2022-05-25 18:00:42 -06:00
Michael Miller
670dd7f062
Run smoke test for nightly
2022-05-25 17:20:57 -06:00
Michael Miller
d0e5f6ca35
Workaround struct pass by value with let
2022-05-24 19:41:16 -06:00
Michael Miller
1f6417bca5
Skip test producing Crystal compiler bug
2022-05-24 19:40:48 -06:00
Michael Miller
9f5b5d8576
Add tests for mock of abstract struct
...
Compilation causes a compiler bug in 1.4.1
BUG: {{ @type > T }} (Crystal::MacroExpression) at /usr/share/crystal/src/class.cr:89:5 should have been expanded (Exception)
2022-05-24 19:30:42 -06:00
Michael Miller
be69018591
Test that a class is defined
2022-05-24 19:29:42 -06:00
Michael Miller
5132ce7329
Don't define method body for abstract stub method
...
Test inheriting an abstract class with mocks.
2022-05-24 19:25:22 -06:00
Michael Miller
ddaed636c4
Remove type resolution
...
The `resolve` macro method operates in the scope of `@type`, not where the macro method was called.
This is why types could not be found within the spec.
Change `define_subclass` to `define_subtype` and accept base type keyword.
2022-05-18 20:56:04 -06:00