Commit graph

1742 commits

Author SHA1 Message Date
Michael Miller
71740113d5 Allow subject for non-class types 2020-01-02 19:30:46 -07:00
Michael Miller
88ed415191 Bubble up matcher description
The last run matcher's description is used if one wasn't provided by the 
user.
Only applies to examples that actually run and have expectations.
2020-01-02 19:19:55 -07:00
Michael Miller
d64ecc4192 Store matcher description in MatchData 2020-01-02 19:16:33 -07:00
Michael Miller
00fe913d77 Add predicate method to check for description 2020-01-02 18:43:30 -07:00
Michael Miller
ff2cbcd4c7 Allow test description to be blank
Currently defaults to the example's source.
2020-01-02 18:40:25 -07:00
Michael Miller
061028782b Workaround for what seems to be a Crystal macro bug
The syntax:
stub instance.==(other) { true }
effectively becomes:
stub instance.==(other { true })
2020-01-01 21:48:58 -07:00
Michael Miller
612222ace8 Update version to 0.9.1 2019-12-13 20:26:22 -07:00
Michael Miller
8ccc08b472 Fix reflection (verify double) on self arg type
There is still an issue with using _ for a placeholder.
2019-12-13 20:25:18 -07:00
Michael Miller
16625cf495 Registry#expect takes a stub 2019-12-13 19:56:43 -07:00
Michael Miller
a38625f8a7 Remove GenericMethodCall
This type isn't needed. MethodCall is suitable after moving arguments to
it.
2019-12-13 19:54:06 -07:00
Michael Miller
a6aa00eb38 Fix double default stub with type 2019-12-13 19:17:08 -07:00
Michael Miller
4c9bbbe07b Formatting 2019-12-08 15:11:23 -07:00
Michael Miller
0ae5cdc9ae Remove debug 2019-12-08 15:11:08 -07:00
Michael Miller
1a30a56f2a Better stringified call 2019-12-08 15:10:49 -07:00
Michael Miller
91696d490f Check if underlying type responds to method 2019-12-08 15:08:13 -07:00
Michael Miller
067c789019 Initial work on type reflection for verifying doubles 2019-12-08 14:52:54 -07:00
Michael Miller
074aff531c Add "anything" which always returns true when compared against 2019-12-08 14:52:28 -07:00
Michael Miller
07ce835724 VerifyingDouble should be abstract 2019-12-08 14:51:48 -07:00
Michael Miller
8b0f509689 Detect when to use a verifying double 2019-12-08 11:37:08 -07:00
Michael Miller
8197a82ace Expect stubs not method names
Needed for argument syntax:
`expect(dbl).to receive(:foo).with(:bar)`
2019-11-29 09:25:58 -07:00
Michael Miller
c710961be1 Fix returned type inferred to NoReturn 2019-11-29 08:53:36 -07:00
Michael Miller
d6c1169bc3 Fix dumb syntax 2019-11-20 20:40:53 -07:00
Michael Miller
5d84536e1e Implement and_call_original 2019-11-20 19:17:51 -07:00
Michael Miller
f8563e86c7 Pass along original block 2019-11-20 16:29:06 -07:00
Michael Miller
2dee50f19e Pass original (and type constraint) to stub via block 2019-11-20 15:43:45 -07:00
Michael Miller
51a47fec98 Remove unused RT parameter 2019-11-20 15:05:04 -07:00
Michael Miller
27acf7bced Allow receive block syntax 2019-11-19 17:28:00 -07:00
Michael Miller
b062472d98 Revert "Initial support for and_yield"
This reverts commit e49bd0d57a.

Removing support for stubbed yield.
Attempting to yield with different a different arity or argument types causes compilation errors.
I don't see any easy fix for this.
I would rather have no yield support than broken support.
2019-11-17 13:30:09 -07:00
Michael Miller
e49bd0d57a Initial support for and_yield 2019-11-17 13:12:39 -07:00
Michael Miller
b896a7f1d5 Implement stub that raises 2019-11-17 12:53:18 -07:00
Michael Miller
6e287f864b Implement returning multiple values 2019-11-17 12:26:02 -07:00
Michael Miller
1a3f663b70 Name is optional for doubles 2019-11-17 10:47:51 -07:00
Michael Miller
a63d3d05a5 Negation for receive matchers 2019-11-17 10:32:37 -07:00
Michael Miller
5da231a5e8 Check expectations for anonymous double 2019-11-17 10:14:03 -07:00
Michael Miller
45fe6217b4 Missing args 2019-11-17 09:42:19 -07:00
Michael Miller
ac9b3ad1fe Implement expect_any_instance_of 2019-11-16 21:27:18 -07:00
Michael Miller
a15e2a97b1 Allow deferred expectation of multiple stubs 2019-11-16 15:24:23 -07:00
Michael Miller
a8e0f46645 Revert "Coerce operations in match? to booleans"
This reverts commit 76c21d447a.

Should no longer be needed since mocks and doubles should indirectly leak into StandardMatcher types.
2019-11-16 15:15:53 -07:00
Michael Miller
d9d30c57d0 Merge ReceiveArgumentsMatcher and ReceiveMatcher
Finally found the issue causing other matchers derived from
StandardMatcher to be "leaked" doubles and mocks indirectly.
The if-condition in ExpectationPartial#to and #to_not caused the matcher
to be given the StandardMatcher type instead of a union type.
This lead to really strange compilation errors and wasted a lot of
hours.
2019-11-16 15:14:38 -07:00
Michael Miller
f0bfd8b6d4 Switch to run-time error for unsupported negation 2019-11-16 13:18:09 -07:00
Michael Miller
201fe614d1 Expect messages on double, but don't stub them 2019-11-16 10:59:13 -07:00
Michael Miller
186fa15a1a Add method to check for stub 2019-11-16 10:06:11 -07:00
Michael Miller
8dbfb2d6ec Revert "Allow expected value to receive stub"
This reverts commit 6cd410c4c7.

Should not stub the method.
The end-user needs to do this.
2019-11-16 09:23:45 -07:00
Michael Miller
c9fb4d2d33 Don't run deferred blocks if the test fails
This also prevents overriding the test's original error with on that may 
occur in the deferred blocks.
2019-11-16 09:06:47 -07:00
Michael Miller
23d8f4b5a6 Formatting 2019-11-16 09:03:24 -07:00
Michael Miller
ca85acefaf Resolve issue trying to splat union of named tuples 2019-11-16 09:02:57 -07:00
Michael Miller
85531fecf9 Fix truthy values not being strings 2019-11-16 09:01:03 -07:00
Michael Miller
76c21d447a Coerce operations in match? to booleans
The compiler is merging null-doubles with these matchers.
Methods that normally return a boolean instead return the instance 
(self).
This causes a return type-mismatch.
There should be a better alternative to this.
2019-11-16 08:49:09 -07:00
Michael Miller
6cd410c4c7 Allow expected value to receive stub 2019-11-16 08:32:13 -07:00
Michael Miller
72e4ac8fe9 Remove unnecessary free variables 2019-11-16 08:17:46 -07:00