Commit Graph

28 Commits

Author SHA1 Message Date
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 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 a6149b2671
Use `before` instead of `before_each` (same for after) 2022-11-04 16:56:03 -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 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 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 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 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 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