Commit graph

1413 commits

Author SHA1 Message Date
Michael Miller
f09a6a87e5
Remove TestSuite middle-man object 2021-05-08 23:38:13 -06:00
Michael Miller
e7138080a6
Clean up and simplify Config and Builder 2021-05-08 23:37:33 -06:00
Michael Miller
8a4735b9e6
Use Formatters instead of Reporters (and Formatters) 2021-05-08 23:35:29 -06:00
Michael Miller
f2459cfe94
Override === to call includes?
Allows the use of a filter in pattern matching scenarios (select).
2021-05-08 23:33:59 -06:00
Michael Miller
e7c3d8f060
Use filter if only one is provided
This is less overhead than creating a composite filter for one child 
filter.
2021-05-08 22:53:39 -06:00
Michael Miller
83d7657b18
Use enum flags for run modes 2021-05-08 22:51:54 -06:00
Michael Miller
e8848d6855
Merge branch 'release/0.10' into reporting 2021-05-08 13:23:57 -06:00
Michael Miller
88b323bc27
Move common inspect code up to Node 2021-05-08 13:22:13 -06:00
Michael Miller
d292c01e74
Remove direct references to Example in ExampleGroup 2021-05-08 12:43:41 -06:00
Michael Miller
ef7fca3f95
Bit of cleanup around parent/group 2021-05-08 12:10:27 -06:00
Michael Miller
d7ba47cc49
Clean up hook code 2021-05-08 12:00:29 -06:00
Michael Miller
e47e625016
Remove circular dependency with Node and ExampleGroup 2021-05-07 21:04:17 -06:00
Michael Miller
6bea36d8b6
Move Node out of Spec namespace 2021-05-07 20:09:33 -06:00
Michael Miller
d7bc376429
Some initial work on formatters 2021-05-07 20:05:00 -06:00
Michael Miller
31d819e4c9
Nuke formatting types to prep for new types 2021-05-06 22:11:38 -06:00
Michael Miller
f3afd74dc5
Empty classes for reporting 2021-05-06 22:10:59 -06:00
Michael Miller
ff5d855389
Cleanup harness some 2021-05-06 22:10:40 -06:00
Michael Miller
02b98ea61b
Remove reference to example from result
Pass examples instead of results into formatters.
2021-04-26 18:47:11 -06:00
Michael Miller
f24d634ccb
Merge branch 'release/0.10' into specs 2021-04-26 17:19:25 -06:00
Michael Miller
f549fcfa7a
Minor changes to configure methods 2021-04-26 17:17:18 -06:00
Michael Miller
6c98d7107c
Docs 2021-04-26 17:11:53 -06:00
Michael Miller
5dfc60d4cd
Fix nil reference error when example name is unavailable 2021-04-26 16:53:04 -06:00
Michael Miller
29594eefab
Merge branch 'master' into release/0.10 2021-04-26 11:19:08 -06:00
Michael Miller
18fb2d3879
Bump version to 0.9.36 2021-04-25 23:39:26 -06:00
Michael Miller
f0b524dc47
Remove workaround
https://github.com/icy-arctic-fox/spectator/issues/1 should be resolved 
by https://github.com/crystal-lang/crystal/pull/8234
2021-04-20 19:27:41 -06:00
Michael Miller
25638d766e
Bump version to 0.9.35 2021-04-18 18:08: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
Michael Miller
6481403c6f
Bump version to 0.9.34 2021-03-31 15:01:01 -06:00
matthewmcgarvey
5bd911341b Set end_line equal to line if end_line not provided 2021-03-30 15:29:51 -04:00
matthewmcgarvey
8fafd2467d Allow matching any line number of example in filter 2021-03-30 00:18:08 -04:00
Michael Miller
74b78b7ca8
Rename Source to Location 2021-02-12 22:46:22 -07:00
Michael Miller
08451df643
Add matcher to check compiled type of values 2021-02-12 18:33:50 -07:00
Michael Miller
3083f82132
Change DSL::Values to DSL::Memoize 2021-02-10 17:07:49 -07:00
Michael Miller
3cd569e639
Prevent using reserved keywords in let and subject 2021-02-10 16:58:17 -07:00
Michael Miller
86a85c0946
Missed a method that should be private 2021-02-09 23:27:00 -07:00
Michael Miller
8b5fd099bb
More docs 2021-02-09 22:50:09 -07:00
Michael Miller
8232da1167
Mark DSL generated methods as private 2021-02-09 22:40:15 -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
e0c4d2ac3e
Bump version to 0.9.32 2021-02-03 10:08:46 -07:00
Michael Miller
8d48e441b2
Fix generating source from brace-less examples.
Addresses https://github.com/icy-arctic-fox/spectator/issues/20
2021-02-03 10:06:00 -07:00
Michael Miller
0363c43dff
Fix described_class
Must be a macro, otherwise the return type becomes a union of all nested 
described_class methods, which can cause weird errors.
2021-01-31 00:38:17 -07:00
Michael Miller
a20b7cad80
Workaround for case where wrapper might store a type 2021-01-30 23:49:20 -07:00
Michael Miller
e275711f2b
Formatting 2021-01-30 23:48:59 -07:00
Michael Miller
ff49c674c6
Fix around_each hook ordering when at the same level 2021-01-30 21:15:20 -07:00
Michael Miller
0f44403053
Fix namespaces preventing structs from being mocked 2021-01-30 21:11:51 -07:00
Michael Miller
0332b6eb3b
Log when deferred operations run 2021-01-30 21:07:42 -07:00
Michael Miller
292dfcbe29
Ignore nameless groups in document hierarchy 2021-01-30 21:00:28 -07:00
Michael Miller
e44505d4c1
Set nameless example to matcher description 2021-01-30 21:00:01 -07:00
Michael Miller
82e13f5434
Sloppily handle deferred operations 2021-01-30 20:53:09 -07:00
Michael Miller
078058ad05
Fix various issues with subjects
All tests in crystal spec pass!
2021-01-30 20:38:09 -07:00
Michael Miller
948e29a8b7
Fix short-hand should syntax 2021-01-30 20:27:36 -07:00
Michael Miller
62d478f7c2
Prevent overly verbose output of internals 2021-01-30 20:20:30 -07:00
Michael Miller
228696c8b0
Fix exit code when tests fail 2021-01-30 20:11:09 -07:00
Michael Miller
9743f37e5c
Capture reported expectations 2021-01-30 20:07:45 -07:00
Michael Miller
bda554739c
Re-add JSON output for some types 2021-01-30 20:07:36 -07:00
Michael Miller
9d139dfeed
Hack together result output 2021-01-30 19:42:46 -07:00
Michael Miller
17a3f27029
Address Ameba errors 2021-01-30 18:57:29 -07:00
Michael Miller
e8b284fc60
Fix namepsaces
crystal spec compiles again!
2021-01-30 17:40:33 -07:00
Michael Miller
b6335ab4bc
Update includes list 2021-01-30 17:40:03 -07:00
Michael Miller
d3ad0963cd
Minor fixes 2021-01-30 17:31:50 -07:00
Michael Miller
b07dca697e
Remove seemingly unused context stubs code 2021-01-30 17:27:17 -07:00
Michael Miller
3b5086c74b
Re-add mocks to harness 2021-01-30 17:27:02 -07:00
Michael Miller
73985772b7
DSL fully added back in 2021-01-30 16:43:13 -07:00
Michael Miller
d43d309a47
Note about tag inheritence 2021-01-30 16:39:41 -07:00
Michael Miller
3bc567da4c
Skip examples marked pending 2021-01-30 16:36:15 -07:00
Michael Miller
2301e44bd1
Add pending? method 2021-01-30 16:05:32 -07:00
Michael Miller
20680f37cb
Add docs 2021-01-30 15:39:29 -07:00
Michael Miller
ba967218fa
Move tags code to a common location 2021-01-30 15:34:17 -07:00
Michael Miller
bd942bb644
Shorten tag method names
Plain `tags` is safe to use as a class method on the group.
2021-01-30 14:13:27 -07:00
Michael Miller
e093ec788e
Clean up tags method generation by moving it to another macro 2021-01-30 14:08:42 -07:00
Michael Miller
803a09464d
Initial work to pass along pre-set tags
Define pending examples and groups using this method.
2021-01-30 12:32:13 -07:00
Michael Miller
de779fdf61
Remove unecessary type name 2021-01-30 12:26:29 -07:00
Michael Miller
fdc2a71dd5
Formatting 2021-01-30 12:07:45 -07:00
Michael Miller
c5246e1cd3
Promote Tags to the Spectator namespace 2021-01-30 12:07:23 -07:00
Michael Miller
db877da984
Change tags to symbols 2021-01-30 12:03:38 -07:00
Michael Miller
5166cd7778
Fix case with no tags and some metadata
Simplify tag set construction code.
2021-01-30 12:01:49 -07:00
Michael Miller
467f0d3ad4
Pass along tags 2021-01-30 11:34:01 -07:00
Michael Miller
e77d6f0a4f
Change groups from metadata to tags 2021-01-30 11:21:49 -07:00
Michael Miller
71a497b148
Move tags to node level 2021-01-30 11:20:20 -07:00
Michael Miller
8cf498c9e9
Switch to using tags instead of metadata 2021-01-30 11:13:30 -07:00
Michael Miller
11cb16fb3a
Add missing call to super 2021-01-30 10:14:09 -07:00
Michael Miller
a56b1e0eb1
Somewhat functional metadata unwrap 2021-01-30 01:16:26 -07:00
Michael Miller
466a388558
Initial code for example metadata 2021-01-30 00:40:59 -07:00
Michael Miller
5cccf5b4cb
Support example as block argument to let and subject
Surprisingly, RSpec supports this.
https://relishapp.com/rspec/rspec-core/v/3-10/docs/metadata/current-example
2021-01-22 23:00:17 -07:00
Michael Miller
76378c9dae
Whitespace 2021-01-21 21:05:12 -07:00
Michael Miller
a8840351d5
More work hooking up expectations 2021-01-21 00:03:57 -07:00
Michael Miller
b7ed4ec14c
Nest spec types 2021-01-21 00:03:39 -07:00
Michael Miller
ce6f77656a
Use ExpectationFailed instead of AssertionFailed 2021-01-20 21:38:34 -07:00
Michael Miller
98a29309ff
Remove assert methods 2021-01-20 21:36:18 -07:00
Michael Miller
f97e5365e3
Merge branch 'example-api' of gitlab.com:arctic-fox/spectator into example-api 2021-01-16 18:05:48 -07:00
Michael Miller
73dc7ae811
Fix copy/paste docs 2021-01-16 17:16:31 -07:00
Michael Miller
a7ac170153
Remove unused methods 2021-01-16 17:07:07 -07:00
Michael Miller
57c9333c1f
Match hook ordering of RSpec
Addresses https://github.com/icy-arctic-fox/spectator/issues/12
2021-01-16 17:04:42 -07:00
Michael Miller
cd519178ac
Remove whitespace 2021-01-16 16:52:41 -07:00
Michael Miller
13061cfb38
Workaround context scope not used in method delegation 2021-01-16 16:52:16 -07:00
Michael Miller
153933b044
Add DSL and code to create around_each hooks 2021-01-16 16:47:40 -07:00
Michael Miller
36c2a5d368
Logic for around_each hooks 2021-01-16 16:28:33 -07:00
Michael Miller
5ea83f51bb
Cache implicit subject 2021-01-16 12:10:52 -07:00
Michael Miller
d738494fdf
Cleanup example name output 2021-01-16 11:49:43 -07:00
Michael Miller
3527507639
Remove debug 2021-01-16 11:13:20 -07:00
Michael Miller
3ec267abbb
Fix reporting for should syntax 2021-01-16 11:12:41 -07:00
Michael Miller
97923d6bcd
Handle nil labels 2021-01-16 11:11:42 -07:00
Michael Miller
0992bad7eb
Get harness compiling again 2021-01-16 11:03:05 -07:00
Michael Miller
175ce8f293
Include matchers DSL 2021-01-16 11:02:49 -07:00
Michael Miller
4500ebcddc
Update old references to Value and Block 2021-01-16 11:02:29 -07:00
Michael Miller
58e7981b0c
Fix type warning 2021-01-16 11:00:54 -07:00
Michael Miller
e09f5c960a
Change Assertions to Expectations
Start expectation rework.
2021-01-16 10:22:23 -07:00
Michael Miller
50d1f69230
Don't cache the block return value
Let the matcher handle this if it needs to.
2021-01-15 23:15:07 -07:00
Michael Miller
a74957204b
Introduce abstract generic value type
Sits between AbstractExpression and Value and Block.
2021-01-15 22:32:02 -07:00
Michael Miller
4ed8c4a573
Implement remaining assertion macros
Move "should" methods.
2021-01-10 11:09:28 -07:00
Michael Miller
096c31d7f5
Initial work on assertions 2021-01-09 19:50:32 -07:00
Michael Miller
122395837f
Implement remaining value DSL macros 2021-01-09 17:36:50 -07:00
Michael Miller
391325d431
Initial work on values DSL 2021-01-09 17:01:33 -07:00
Michael Miller
4108a6602d
Simplify get method 2021-01-09 16:57:23 -07:00
Michael Miller
3e4b77da77
Create value wrapper 2021-01-09 16:51:37 -07:00
Michael Miller
aa4c257ade
Change Wrapper to a nested type for Lazy 2021-01-09 14:35:58 -07:00
Michael Miller
5cac4aa5a1
Add lazy utility 2021-01-09 14:19:40 -07:00
Michael Miller
fb0423ed02
Move top-level types into spectator/ sub-directory 2021-01-09 13:56:32 -07:00
Michael Miller
7451769a29
Pass current example as block argument 2021-01-09 13:34:15 -07:00
Michael Miller
009ca4776a
Cleanup new DSL macros 2021-01-09 13:17:42 -07:00
Michael Miller
fbd9713d52
Remove unused and deprecated types 2021-01-09 12:56:35 -07:00
Michael Miller
2e8036d230
Move instance variable 2021-01-09 12:48:53 -07:00
Michael Miller
65dba9f317
Don't need delegates stored in hooks
Use proc instead. The context can be retrieved from the example 
instance.
2021-01-09 12:04:27 -07:00
Michael Miller
c4289b82da
Better trace message for initial hook processing 2021-01-09 11:33:29 -07:00
Michael Miller
df096d91aa
Capture source info for hooks 2021-01-09 11:30:00 -07:00
Michael Miller
def66acc15
Trace hook invocation 2021-01-09 11:14:27 -07:00
Michael Miller
e5cbc8d631
Promote hooks to fully-fledge types
Hook types include a source, label, and context delegate.
2021-01-09 11:06:59 -07:00
Michael Miller
cf422eca02
Add null constructor 2021-01-09 10:56:33 -07:00
Michael Miller
7d0ba752e9
Change ExampleNode to SpecNode 2021-01-09 10:39:04 -07:00
Michael Miller
0ee708281f
Cleanup hook macros 2021-01-09 10:27:54 -07:00
Michael Miller
950f6b3424
Add block expression 2021-01-09 00:13:22 -07:00
Michael Miller
fbe9f22e02
Start rework on capturing expressions 2021-01-09 00:12:28 -07:00
Michael Miller
c2d5bdd5d1
Bump version to 0.9.31 2021-01-08 15:32:42 -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
b697511761
Slight doc improvement 2020-12-31 18:45:56 -07:00
Michael Miller
4c6b6e6436
Merge branch 'master' into example-api 2020-12-23 14:52:53 -07:00
Michael Miller
891cd4bbf7
Change includes to has 2020-12-23 14:39:24 -07:00
Michael Miller
20caed9262
Add contain matcher improvements to have matcher 2020-12-23 14:38:30 -07:00
Michael Miller
edf8ae36df
Fix negated contain case 2020-12-23 14:19:40 -07:00
Michael Miller
a2ef0fa46a
Consistent comments 2020-12-23 14:17:05 -07:00
Michael Miller
de1af7178c
Fix string usage with contain matcher 2020-12-23 14:11:50 -07:00
Michael Miller
f6fc36f60a
Bump version to 0.9.30 2020-12-23 13:56:19 -07:00
Michael Miller
875ca587f3
Show missing values in error output 2020-12-23 13:44:12 -07:00
Michael Miller
f465df48d4
Fix copy/paste fail docs 2020-12-23 13:18:36 -07:00
Michael Miller
5ec7e25d57
Remove splat 2020-12-23 12:54:44 -07:00
Michael Miller
c720147974
Bump version to 0.9.29 2020-12-23 12:39:05 -07:00
Michael Miller
0540f94823
Add contain_elements and have_elements variants 2020-12-23 12:38:37 -07:00
Michael Miller
4533cffce7
Initial code to run hooks 2020-11-15 11:25:07 -07:00
Michael Miller
2f4cbd9c33
Specify contents of event trigger method with macro block
Implement calling parent group hooks.
2020-11-15 11:22:52 -07:00
Michael Miller
0279606a1c
Placeholder code for after hooks 2020-11-15 11:22:06 -07:00
Michael Miller
19d57dd828
Add call_once variant of events 2020-11-14 17:02:24 -07:00
Michael Miller
b4e74444d1
Some work on hooks in DSL 2020-11-08 22:21:52 -07:00
Michael Miller
7d54884196
Don't pass context, get/cast from example instance 2020-11-08 16:53:54 -07:00
Michael Miller
b8dc83286c
Upcast context to reduce method instances generated by compiler 2020-11-08 16:52:08 -07:00
Michael Miller
f433405ece
Scratch work
Trying to implement hooks. Ran into a problem with contexts.
2020-11-08 15:06:49 -07:00
Michael Miller
688c08b087
Initial work on hooks rework 2020-11-07 22:04:37 -07:00
Michael Miller
1f319a70ce
Add docs 2020-11-07 22:04:21 -07:00
Michael Miller
4230ec70a0
Move test handling code to Harness 2020-11-07 20:56:30 -07:00
Michael Miller
dba2e23750
Typo 2020-11-07 15:24:22 -07:00
Michael Miller
f7fe177685
Minor adjustments 2020-11-07 15:01:08 -07:00
Michael Miller
8ae6ef478b
Dynamic examples with null context 2020-11-07 14:43:59 -07:00
Michael Miller
40dd85eb38
Bit of naming cleanup 2020-11-07 13:47:39 -07:00
Michael Miller
347e1a84e5
Dedicated example runner type 2020-11-07 13:47:31 -07:00
Michael Miller
b8901d485d
Merge branch 'master' into example-api 2020-11-07 11:18:47 -07:00
Michael Miller
27754c9e03
Bump version to 0.9.28 2020-11-07 11:04:34 -07:00
Michael Miller
b91103b40a
Handle case where block is provided with return type 2020-11-07 11:04:03 -07:00
Michael Miller
8966c0976b
Allow manual specification of return type 2020-11-07 10:56:33 -07:00
Michael Miller
e8afe5070b
Address Ameba issues 2020-10-19 20:34:18 -06:00
Michael Miller
a0e6d5c4e8
Re-introduce config options 2020-10-19 20:19:25 -06:00
Michael Miller
c36e006c85
Move top-level DSL to its own module 2020-10-17 22:57:27 -06:00
Michael Miller
87c8914187
Typo 2020-10-17 22:12:47 -06:00
Michael Miller
e4f3d334ed
Consistent naming of random seed 2020-10-17 22:12:02 -06:00
Michael Miller
225e1a52ba
Clean up example randomization 2020-10-17 22:11:04 -06:00
Michael Miller
b2bf980685
Some config cleanup 2020-10-17 21:39:41 -06:00
Michael Miller
79499c5d2e
Add config to spec builder 2020-10-17 17:40:38 -06:00
Michael Miller
4462f27316
Rework result types 2020-10-17 14:56:31 -06:00
Michael Miller
788b12a8bc
Fix example methods overriding previously defined methods 2020-10-17 12:12:04 -06:00
Michael Miller
27875631d3
Mostly implement inspect method 2020-10-17 11:51:16 -06:00
Michael Miller
9c1fd6fb5a
Use standard log utility 2020-10-17 11:46:21 -06:00
Michael Miller
e6d78345c4
Rename debug macro 2020-10-17 11:25:46 -06:00
Michael Miller
4974054de7
Some code to run a spec 2020-10-17 11:23:51 -06:00
Michael Miller
2cdee0716f
Bump version to 0.9.27 2020-10-01 18:25:29 -06:00
Michael Miller
9ac6121201
New stub syntax to support operator methods
Works like:
  stub :[], index : Int32 { 42 }

Addresses https://github.com/icy-arctic-fox/spectator/issues/14
2020-10-01 18:23:28 -06:00
Michael Miller
f71a8ac6a3
Merge branch 'master' into example-api 2020-09-27 12:46:38 -06:00
Michael Miller
93fa6f6e72
Bump version to 0.9.26 2020-09-27 10:35:28 -06:00
Michael Miller
e68697a212
Fix stubbed yielding method calling original instead of stub 2020-09-27 10:30:51 -06:00
Michael Miller
0970f02465
Yield instead of forwarding block
Forwarding the block like this captures it, which prevents yield from 
being used.
Addresses https://gitlab.com/arctic-fox/spectator/-/issues/54
2020-09-27 10:14:30 -06:00
Michael Miller
ec6018bed4
Start reactivating runner 2020-09-27 09:10:27 -06:00
Michael Miller
579fcacfde
Move spec builder 2020-09-26 22:51:58 -06:00
Michael Miller
d663e82c36
Improve internal error handling output 2020-09-26 22:25:53 -06:00
Michael Miller
543df88d39
Forward build method 2020-09-26 22:25:04 -06:00
Michael Miller
4567162459
Prevent defining an example or group in a test 2020-09-26 19:23:57 -06:00
Michael Miller
99a9d7960a
Formatting 2020-09-26 19:23:16 -06:00
Michael Miller
60795a371d
Reorganize 2020-09-26 19:15:34 -06:00
Michael Miller
b8ba38152e
Cleanup example description handling 2020-09-26 19:14:08 -06:00
Michael Miller
1d359efcb0
Improve source line detection 2020-09-26 19:12:42 -06:00
Michael Miller
1ad41ac016
Cleanup group description handling 2020-09-26 19:11:52 -06:00