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
d7c1c675ff
Add missing require for spec_helper
2022-05-25 17:28:11 -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
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
0704fd2a48
Adjust evaluation order of change matcher expressions
...
Handles reference types better and matches RSpec more closely.
2022-05-14 23:30:15 -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
f6f4f9dc1e
Test contexts and memoized values
2022-04-02 15:58:08 -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
f1ce914b73
Better stub DSL tests
2022-04-02 12:07:30 -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
f00ea23c47
Rename stubs_spec.cr to stub_spec.cr
2022-03-31 23:07:08 -06:00
Michael Miller
e05ef94ef5
Initial work on stub DSL - found bug in Crystal compiler
...
```
Module validation failed: Invalid bitcast
%4 = bitcast i32* %3 to %"(Spectator::Arguments(T, NT) | Nil)", !dbg !16
(Exception)
from /crystal/src/int.cr:541:9 in 'finish'
from /crystal/src/compiler/crystal/codegen/codegen.cr:71:7 in 'codegen'
from /crystal/src/compiler/crystal/compiler.cr:173:16 in 'compile'
from /crystal/src/compiler/crystal/command/spec.cr:98:14 in 'spec'
from /crystal/src/hash.cr:901:11 in '__crystal_main'
from /crystal/src/crystal/main.cr:115:5 in 'main'
from src/env/__libc_start_main.c:94:2 in 'libc_start_main_stage2'
Error: you've found a bug in the Crystal compiler. ...
```
I haven't been able to reproduce this in a simplified form.
Passing the `constraint` argument in NullStub#and_return to ValueStub.new triggers the bug.
Removing the `constraint` argument fixes the issue.
2022-03-31 22:49:45 -06:00
Michael Miller
9c1357da3f
Allow passing predefined stubs in as keyword args
2022-03-31 18:55:12 -06:00
Michael Miller
c1195ef687
Simplify macro eval by returning a lazy double
2022-03-31 18:54:39 -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
a8e55e32d2
Works now due to lazy doubles
2022-03-30 19:13:14 -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
e209fe3eb5
Use Box for Wrapper implementation
...
This won't raise on invalid casts.
It should reduce the amount of instantiated types and methods.
2022-03-19 22:53:50 -06:00
Michael Miller
bed84b315d
Add lazy double
2022-03-19 19:32:41 -06:00
Michael Miller
1657d3577d
Fix test of double name
2022-03-19 18:57:39 -06:00