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
Michael Miller
b3fa2e3bfe
Address Ameba issues
2022-03-19 17:22:13 -06:00
Michael Miller
b83c6b7b1e
Remove or skip mock, double, and stub tests
2022-03-19 17:20:15 -06:00
Michael Miller
0c7f72dc78
Test handling of blocks in doubles
2022-03-19 17:04:51 -06:00
Michael Miller
043ebd818f
Fix argument order
2022-03-19 16:42:14 -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
99aa8afdce
Add as_null_object method
2022-03-19 14:41:45 -06:00
Michael Miller
5d21e4bb71
Remove double_dsl_spec
2022-03-19 14:27:00 -06:00
Michael Miller
3fa6baea4d
Test mixing block and keyword stubs
2022-03-19 12:52:23 -06:00
Michael Miller
9091b8d027
Literally inject stubs from double block
2022-03-19 12:28:00 -06:00
Michael Miller
f1daecd25f
Initial spec for double DSL
2022-03-19 11:41:29 -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
Michael Miller
5ad29f486f
Better formatting for empty arguments
2022-03-12 17:49:07 -07:00
Michael Miller
ca827a3c52
Initial work on null (object) double
2022-03-12 17:07:34 -07:00
Michael Miller
1e7e31ff97
Use true instead of false
...
It's more obvious the stub worked when same? reports true for different objects.
2022-03-12 15:52:48 -07:00
Michael Miller
ea46af00a6
Add method to define stubs
2022-03-12 14:31:19 -07:00
Michael Miller
5b1a5cd49d
Update tests to use new Double usage
2022-03-12 13:54:40 -07:00
Michael Miller
76c1d6a096
Some rework of stubs and doubles
2022-03-12 09:39:32 -07:00
Michael Miller
7c8db07eda
Test ValueStub
2022-03-05 20:57:43 -07:00
Michael Miller
ae14a47329
Rename Response to Stub
2022-03-05 20:09:56 -07:00
Michael Miller
ced98778a4
Document and test MethodCall
2022-03-05 16:15:42 -07:00
Michael Miller
13f185b801
Capture and report arguments in exception message
2022-03-05 16:06:01 -07:00
Michael Miller
75ccda0a86
Test responses on inherited methods
2022-03-05 15:39:35 -07:00
Michael Miller
ac007f8565
Test response constraints
2022-03-05 15:00:11 -07:00
Michael Miller
2adc867843
Initial work on response constraints
2022-03-05 10:41:39 -07:00
Michael Miller
de7cd90d11
Add type capturing arguments
2022-03-04 17:16:45 -07:00
Michael Miller
5644d54470
Support double names
2022-03-03 22:31:40 -07:00
Michael Miller
26deea3d20
Initial work on Double
2022-03-03 22:10:09 -07:00
Michael Miller
eb8bd88927
Handle case with typeless block
...
Fixes syntax:
`stub method(&block)`
To stub a block with args, use:
`stub method(&block : Type -> Type)`
Addresses https://github.com/icy-arctic-fox/spectator/issues/42
2022-02-21 18:17:44 -07:00
Michael Miller
92e839415d
Fix sample iteration with single block arg (not tuple)
2022-01-26 13:14:30 -07:00
Michael Miller
4057089c20
Support multiple block arguments in sample block
...
https://github.com/icy-arctic-fox/spectator/issues/41#issuecomment-1010192486
2022-01-11 15:53:53 -07:00
Michael Miller
c1841526d4
Test string interpolation with sample
2022-01-10 21:49:54 -07:00
Michael Miller
dd49fe3a67
Support string interpolation for example names
2022-01-10 21:29:05 -07:00
Michael Miller
941b91fef4
Spelling
2022-01-10 21:10:36 -07:00
Michael Miller
be79367256
Formatting
2022-01-07 17:27:25 -07:00
Michael Miller
9d4a5886e5
Reorganize some specs
2021-10-09 13:39:44 -06:00
Michael Miller
2f6ef4b578
Fix accidental check-in from testing
2021-08-19 13:16:50 -06:00
Michael Miller
dd0ef01369
Initial code for HTML formatter
2021-08-18 17:50:09 -06:00
Michael Miller
01d1a8736e
Mark slow compilation tests
2021-08-18 15:57:39 -06:00
Michael Miller
f53ffabf6b
Support label for aggregate_failures block
2021-07-31 12:04:43 -06:00
Michael Miller
4c125d98d4
Implement aggregate_failures
2021-07-31 11:56:53 -06:00
Michael Miller
9a97596b84
Allow named arguments in provided
block
2021-07-31 10:15:16 -06:00
Michael Miller
e8413db33f
Support custom messages for failed expectations
...
Fixes https://gitlab.com/arctic-fox/spectator/-/issues/28
2021-07-17 17:42:25 -06:00
Michael Miller
6c55301d0b
Merge remote-tracking branch 'origin/master' into release/0.10
2021-07-11 00:16:25 -06:00
Michael Miller
7210b8e11c
Test class method usage
2021-07-10 23:04:02 -06:00
Michael Miller
766b6b17c7
Add test for https://github.com/icy-arctic-fox/spectator/issues/33
2021-07-10 22:51:47 -06:00
Michael Miller
dba20757f3
Add test for https://github.com/icy-arctic-fox/spectator/issues/32
2021-07-10 22:44:43 -06:00
Michael Miller
aa12cdf17c
Introduce non-expectation error ExampleFailed
...
Used by fail method.
Still todo: Output from failed example is missing because there are no
expectations.
2021-07-10 03:32:55 -06:00
Michael Miller
6a01ab3531
Merge master into release/0.10
2021-07-05 11:32:45 -06:00
Michael Miller
f728ab6ad7
Add test case handling NoReturn stub and top-level methods (exit)
...
Fixes https://github.com/icy-arctic-fox/spectator/issues/29
2021-07-02 21:55:42 -06:00
Michael Miller
a0537484f4
Allow creation of doubles without a definition
...
Utilizes anonymous doubles to implement this.
Fixes https://github.com/icy-arctic-fox/spectator/issues/30
2021-07-02 19:18:14 -06:00
Michael Miller
e3f6fb3c7c
Add no_args support for stubs
...
Fixes https://github.com/icy-arctic-fox/spectator/issues/28
2021-07-02 18:43:39 -06:00
Michael Miller
dcdc64e134
Specify skip reason
2021-06-11 19:30:23 -06:00
Michael Miller
103597a7be
Update runtime JSON parsing to use new structure
2021-06-02 23:59:42 -06:00
Michael Miller
f24d634ccb
Merge branch 'release/0.10' into specs
2021-04-26 17:19:25 -06:00
Michael Miller
29594eefab
Merge branch 'master' into release/0.10
2021-04-26 11:19:08 -06:00
Michael Miller
93e270f87a
Support variables and methods for type matcher (be_a).
...
Addresses https://github.com/icy-arctic-fox/spectator/issues/25
2021-04-17 09:38:29 -06:00
Michael Miller
d612657b15
Merge branch 'release/0.10' into specs
2021-03-31 15:28:16 -06:00
Michael Miller
3d702f9bc6
Merge branch 'master' into release/0.10
2021-03-31 15:19:30 -06:00
matthewmcgarvey
91ea9e6cab
Comment out failing expectation with reference to open issue
2021-03-30 15:31:23 -04:00
matthewmcgarvey
8fafd2467d
Allow matching any line number of example in filter
2021-03-30 00:18:08 -04:00
Michael Miller
79d6ad93b3
Avoid using subject with structs
2021-02-13 17:33:52 -07:00
Michael Miller
4af23751bc
Add specs for value types
2021-02-13 13:30:05 -07:00
Michael Miller
7d5c9edab7
Use cast as workaround
2021-02-13 11:44:51 -07:00
Michael Miller
35946dc993
Test value types
2021-02-09 22:50:21 -07:00
Michael Miller
7a5f7adfc2
Change Anything to only use case equality
2021-02-09 21:18:20 -07:00
Michael Miller
a20f2d4f98
Test and improve "Anything"
2021-02-09 19:10:11 -07:00
Michael Miller
2c33e96dd4
Fix parsing passing spec
2021-01-30 20:14:25 -07:00
Michael Miller
d3ad0963cd
Minor fixes
2021-01-30 17:31:50 -07:00
Michael Miller
2ecd4ded6d
Fix line numbers being wrong with macro expansion
...
Addresses https://github.com/icy-arctic-fox/spectator/issues/18
2021-01-08 15:32:15 -07:00
Michael Miller
d31b8f4093
Disable false warning from Ameba
...
spec_helper_path is actually used by the ECR template.
2020-08-16 12:10:32 -06:00
Michael Miller
62fd289b0f
Add ability to test expectations directly
2020-08-16 12:04:45 -06:00
Michael Miller
fab216419c
Capture expectations
2020-08-16 11:39:54 -06:00
Michael Miller
14608c8b2d
Change to struct
2020-08-16 11:00:46 -06:00
Michael Miller
5688e58025
Initial runtime test compilation
...
Allows for compiling single examples at runtime.
2020-08-16 10:59:15 -06:00
Michael Miller
414f132f49
Add missing require statement
2020-05-09 14:12:40 -06:00
Michael Miller
5c24d606dd
Add specs of snippets from docs
2020-03-28 10:50:58 -06:00
Michael Miller
e92aa7ed57
Implicit subject should not use .new with modules
...
Fixes GitHub issue https://github.com/icy-arctic-fox/spectator/issues/6
2020-02-22 22:59:09 -07:00
Davide Paolo Tua
83ac420273
Add test for fix, fix test for range_matcher
2020-02-21 13:19:27 +01:00
Michael Miller
cacca99c0b
Formatting
2020-01-20 20:32:14 -07:00
Michael Miller
721425c3c8
Run deferred expectations after all hooks
2020-01-20 20:15:49 -07:00
Michael Miller
1e3d89884b
Add some RSpec docs tests for hooks
2020-01-20 20:11:19 -07:00
Michael Miller
60f1c3091b
Allow be
matcher to be used on structs
2020-01-19 22:39:21 -07:00
Michael Miller
3d08949c94
Add helper method specs from RSpec docs
2020-01-19 22:24:28 -07:00
Michael Miller
b1984b343a
Add should
keywords to examples
...
Allows short-hand like:
it { should be_empty }
2020-01-19 22:12:06 -07:00
Michael Miller
8381c08b05
Add subject specs
2020-01-19 22:05:38 -07:00
Michael Miller
64f6456935
Merge branch 'specs'
2020-01-19 09:52:41 -07:00
Michael Miller
15f211c4b6
Add it_fails
to handle expected failures
2020-01-17 22:41:38 -07:00
Michael Miller
e3a4dedfc6
Add RSpec respond_to
matcher spec
2020-01-17 22:14:25 -07:00
Michael Miller
ed48b80d58
Add RSpec raise_error
matcher spec
2020-01-17 21:58:29 -07:00
Michael Miller
596f7e87c8
Formatting
2020-01-17 09:27:48 -07:00
Arina Shmeleva
cf448576e2
Add test for subject
2020-01-17 00:49:59 +03:00
Michael Miller
6a0a73ca76
Add RSpec match
matcher spec
2020-01-06 23:05:31 -07:00
Michael Miller
b433511201
Add RSpec include/contain
matcher spec
2020-01-06 22:51:47 -07:00
Michael Miller
6ad861365c
Add RSpec have_attributes
matcher spec
2020-01-06 22:33:52 -07:00
Michael Miller
f23141b3e1
Add RSpec start_with
and end_with
matchers specs
2020-01-06 22:19:09 -07:00
Michael Miller
7868755eee
Add RSpec cover
matcher spec
2020-01-05 23:02:09 -07:00
Michael Miller
5bbaad36d2
Add RSpec contain_exactly
matcher spec
2020-01-05 11:42:43 -07:00
Michael Miller
26656b7c12
Add RSpec change
matcher spec
2020-01-05 10:35:35 -07:00
Michael Miller
e17435f6e8
Add RSpec be_within
matcher spec
2020-01-05 10:28:21 -07:00
Michael Miller
1f7ac79c78
Add RSpec be
matchers spec
2020-01-05 00:29:10 -07:00
Michael Miller
80c4e97c29
Add RSpec all
matchers spec
2020-01-05 00:12:57 -07:00
Michael Miller
42ef2cc904
Add RSpec type matchers spec
2020-01-04 12:47:23 -07:00
Michael Miller
2538f3a9a4
Add RSpec predicate matchers spec
2020-01-04 09:58:53 -07:00
Michael Miller
7f8d9d5ef3
Add comparison tests from RSpec docs
2020-01-02 20:00:51 -07:00
Michael Miller
9f91e3a266
Add tests for equality matcher
2020-01-01 21:58:37 -07:00
Michael Miller
0a6493964d
Allow auto-run of Spectator
...
Needed to test Spectator with itself.
2020-01-01 21:50:08 -07:00
Michael Miller
2c400950a4
Remove specs since they're mostly invalidated by the refactor
2019-09-26 20:52:26 -06:00
Michael Miller
43dc106c18
Add return type annotations
...
Addresses Crystal compiler warning about abstract method return types.
2019-09-23 20:32:21 -06:00
Michael Miller
adbfb7da7c
Use integer division - Crystal 0.31.0 change
2019-09-23 19:38:15 -06:00
Michael Miller
cede88bf0c
Update spec with new arguments
2019-08-17 08:24:06 -06:00
Michael Miller
a54e406fec
Clean up expectation specs
...
Removed tests that are no longer valid or non-trivial to update.
2019-08-09 15:32:22 -06:00
Michael Miller
251e3b8774
Remove specs for matchers
...
Will replace with Spectator-based tests later.
2019-08-09 15:16:01 -06:00
Michael Miller
19d52ff02b
Add unordered array matcher
2019-06-12 15:35:33 -06:00
Michael Miller
0eaf8efcc6
Fix copy/paste fail
2019-06-12 13:57:33 -06:00
Michael Miller
efde29c90e
Add have_size_of matcher
2019-06-09 12:45:49 -06:00
Michael Miller
bb2b834662
Add have_size matcher
2019-06-09 12:44:46 -06:00
Michael Miller
0164d2973f
Fix predicate tests and add new ones for have_ variant
2019-06-01 23:39:23 -06:00
Michael Miller
e234ac2f31
Test case to ensure runtime type is reported
2019-06-01 20:55:29 -06:00
Michael Miller
77307f6eb1
Split part of RangeMatcher off as CollectionMatcher
...
Use CollectionMatcher for `be_within`.
The `#of` method creates a RangeMatcher.
2019-05-16 18:20:08 -06:00
Michael Miller
f53bc26c28
Add ReferenceMatcher type
2019-05-08 16:59:36 -06:00
Michael Miller
7168b26218
Remove regex matcher - use case matcher
2019-05-08 16:39:00 -06:00
Michael Miller
00045ba9be
Tests for nested groups and fail-fast
2019-04-22 20:27:54 -06:00
Michael Miller
1d530de5b1
Add tests for fail-fast and after hooks
...
Inspecting issue #2
2019-04-22 19:12:45 -06:00
Michael Miller
b305c829be
Allow hooks and conditions to be passed to create
2019-04-22 18:22:12 -06:00
Michael Miller
3eb6a1d676
Remove unused block arguments
2019-04-06 17:20:12 -06:00
Michael Miller
53bfcc25ef
Add Ameba and address code linting issues
2019-04-06 17:19:02 -06:00
Michael Miller
365bd1ec2f
Fix failing tests
2019-04-06 12:48:41 -06:00