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
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
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
Michael Miller
a39b27387c
Add delete method to clear stubs for a mock
2022-05-15 16:19:55 -06:00
Michael Miller
847fd38534
Test mock names
2022-05-15 15:59:08 -06:00
Michael Miller
c98442e0ed
Add functionality to clear stubs
2022-05-15 15:56:32 -06:00
Michael Miller
fdac99d122
Rename thing to mock
2022-05-15 13:44:45 -06:00
Michael Miller
37c6db250d
Add ValueMockRegistry
...
Support injecting mock functionality into concrete structs (value types).
2022-05-15 12:34:50 -06:00
Michael Miller
51f133eb61
Ensure mocking doesn't change the memory
...
This can be important for serialization.
Cleanup names.
2022-05-15 11:27:58 -06:00
Michael Miller
ac03bd439b
Address Ameba issues
2022-05-15 11:06:00 -06:00
Michael Miller
1adcf74c3f
Fix stub_type when used on a sub-type
...
previous_def should only be used if the type being stubbed matches the type stub methods are defined in.
Re-enable tests for define_subclass mocking.
2022-05-15 10:59:44 -06:00
Michael Miller
86b49dc20e
Add mock registry fetch method
...
Solves the issue of pre-populating a mock with stubs.
2022-05-15 00:36:29 -06:00
Michael Miller
380d721fad
Add ReferenceMockRegistry
2022-05-14 23:31:57 -06:00
Michael Miller
9817b2948e
Add mock inject macro
...
Debugging some type resolution issues.
2022-04-30 11:40:54 -06:00
Michael Miller
d74bc76687
Verify that initial stubs can be overridden
2022-04-28 22:32:34 -06:00
Michael Miller
3961662bf6
Experimental mock functionality
2022-04-10 20:01:54 -06:00
Michael Miller
a6fc2a4917
Test stub modifiers
2022-04-02 12:12:31 -06:00
Michael Miller
be1c698836
Test stub location
2022-04-02 12:09:59 -06:00
Michael Miller
873b1abcae
Test null stub
2022-04-02 12:07:50 -06:00
Michael Miller
3299c94359
Test Allow
2022-04-02 12:07:39 -06:00
Michael Miller
17592287ad
Replace stub value method with call method
...
Pass method call information to stub.
2022-03-31 23:07:55 -06:00
Michael Miller
7896a3496d
Remove unused objects
2022-03-30 21:11:38 -06:00
Michael Miller
231323bbf1
Add return type restriction
...
This overrides the previous definition which doesn't have a restriction.
This is a workaround for the inability to infer a stub's return type.
2022-03-30 21:10:36 -06:00
Michael Miller
b3f98cd50c
Add return type annotation
...
Required for type resolution.
2022-03-30 20:51:38 -06:00
Michael Miller
ef64fa466b
Avoid type cast issues
2022-03-30 20:44:43 -06:00
Michael Miller
613c969fbb
Match RSpec behavior
2022-03-30 20:28:36 -06:00
Michael Miller
1199379833
Various fixes
2022-03-26 00:12:37 -06:00
Michael Miller
28ae03d56f
Remove expect_null_double
...
Workaround no longer needed.
2022-03-25 22:45:13 -06:00
Michael Miller
b28437ccc4
Match RSpec behavior
2022-03-25 22:32:27 -06:00
Michael Miller
5aceaf7d8c
Comment out problematic casts
...
Specs compile again.
2022-03-22 22:13:59 -06:00
Michael Miller
0b6e44c227
Fix types of arguments given to common object methods
2022-03-20 15:39:19 -06:00
Michael Miller
bed84b315d
Add lazy double
2022-03-19 19:32:41 -06:00
Michael Miller
b3fa2e3bfe
Address Ameba issues
2022-03-19 17:22:13 -06:00
Michael Miller
0c7f72dc78
Test handling of blocks in doubles
2022-03-19 17:04:51 -06:00
Michael Miller
17e97cb39a
Explode method expansion
...
Somewhere along the way the block argument gets dropped.
Even though `method` is a `Def` that accepts a block, the `&block` portion is dropped.
Possible Crystal compiler bug.
2022-03-19 16:13:11 -06:00
Michael Miller
5d21e4bb71
Remove double_dsl_spec
2022-03-19 14:27:00 -06:00
Michael Miller
4f7a4a3453
Avoid issue with TypeCastError message
...
For some reason, attempting to get the class of the stubbed value causes a segfault.
This appears to get swallowed in some cases.
Trying to inspect the value was difficult without triggering some error.
In the failing case, the value is 42 (returned by a stubbed foo method).
The method is supposed to return a String, and this error checking should be triggered (line 119).
The value is a union, and inspecting the bytes contained in it looks like it's prefixed with the Crystal type ID for Int32.
However it looks like Crystal tries to treat it as a Bool? I'm not sure.
Very weird behavior and instead of wasting more time on it, I'm omitting the returned type from the error.
This type of casting error shouldn't be common.
This seems like a Crystal bug, but I'm having a hard time distilling the issue.
2022-03-16 22:40:24 -06:00
Michael Miller
b68c75dda5
Add tests around problematic issues in NullDouble to Double
2022-03-16 21:10:47 -06:00
Michael Miller
280f117e23
Use TypedStub instead of ValueStub
...
Test possible issues around stub returning nil
2022-03-16 21:07:20 -06:00
Michael Miller
332ab1cebc
Smarter handling of stub fallback
2022-03-15 22:46:43 -06:00