Commit Graph

1483 Commits

Author SHA1 Message Date
Michael Miller 98ba607583
Dumb whitespace 2021-06-02 23:37:01 -06:00
Michael Miller 835fa40773
Handle nil location 2021-06-02 23:35:41 -06:00
Michael Miller 39e917ce57
Consistent location fields 2021-06-02 23:09:30 -06:00
Michael Miller 8f3a7c0a5a
Basically done JSON formatter 2021-06-02 22:48:48 -06:00
Michael Miller fa3e9dd34d
Implement JUnit formatter 2021-05-30 15:02:30 -06:00
Michael Miller e30d5c1981
Use multiple << on a single line 2021-05-30 14:21:42 -06:00
Michael Miller 0a7909fb7a
Cleanup 2021-05-30 10:44:09 -06:00
Michael Miller 877831a98b
Add docs 2021-05-30 10:17:49 -06:00
Michael Miller a4042a9684
Extend PendingBlock from ResultBlock and rename to PendingResultBlock 2021-05-30 10:02:25 -06:00
Michael Miller 7215e28d75
Implement TAP formatter 2021-05-29 23:09:28 -06:00
Michael Miller 40e189a1d1
Fix method name 2021-05-29 23:09:18 -06:00
Michael Miller 48fb293ba0
Define notification type for messages 2021-05-29 22:59:56 -06:00
Michael Miller 76c525de52
Fix call to example_finished 2021-05-29 22:47:53 -06:00
Michael Miller f02e1acb3b
Remove lazy iteration
Fixes issue with empty? method eating the first example for failure and 
pending lists.
2021-05-29 18:35:01 -06:00
Michael Miller 5e1ca34146
Fix pending results not being counted 2021-05-29 17:59:16 -06:00
Michael Miller 6d8d117ec2
Handle nodes with no name 2021-05-29 17:50:30 -06:00
Michael Miller 4a44d038fb
Re-enable desired logging on framework error 2021-05-29 17:45:49 -06:00
Michael Miller fccd55ed0a
Improve appearance of multi-line error messages 2021-05-29 17:33:45 -06:00
Michael Miller 76dd5603de
Fix harness not updating current 2021-05-29 17:13:14 -06:00
Michael Miller 71d0af7cd5
Merge branch 'release/0.10' into reporting 2021-05-29 16:57:22 -06:00
Michael Miller 39c95397fd
Merge branch 'master' into release/0.10 2021-05-29 16:56:57 -06:00
Michael Miller 92f758084d
Bump version to 0.9.38 2021-05-27 15:20:11 -06:00
Michael Miller edb18dcf95
Fix for default logger being cleaned up before Spectator runs
Resolves https://github.com/icy-arctic-fox/spectator/issues/27
2021-05-27 15:17:27 -06:00
Michael Miller 99378c0f36
Merge branch 'release/0.10' into reporting 2021-05-19 20:15:51 -06:00
Michael Miller a3305a9273
Merge branch 'master' into release/0.10 2021-05-19 20:15:36 -06:00
Michael Miller 55398709de
Bump version to 0.9.37 2021-05-19 19:51:08 -06:00
Michael Miller e3576c8924
Add support for `be ===` and `be =~`
Addresses https://github.com/icy-arctic-fox/spectator/issues/26
2021-05-19 19:46:46 -06:00
Michael Miller 453f6a2fce
Cleanup 2021-05-18 20:10:02 -06:00
Michael Miller 867c06bd67
Initial working document formatter 2021-05-18 20:01:58 -06:00
Michael Miller 1e2f3f7c66
Use index offset argument 2021-05-18 19:38:04 -06:00
Michael Miller 1addc46f7e
Remove parameter from stop method 2021-05-18 19:03:40 -06:00
Michael Miller c0befe63e9
Don't use random seed unless randomized 2021-05-18 18:50:43 -06:00
Michael Miller b970abd334
Limit generated seed to < 100,000 2021-05-16 20:39:35 -06:00
Michael Miller 1525317e2c
Pass along and output random seed 2021-05-16 20:38:02 -06:00
Michael Miller 36f9f2b434
Return true from run method if successful 2021-05-16 20:23:16 -06:00
Michael Miller ebf04b360e
Add profiling info 2021-05-16 20:21:04 -06:00
Michael Miller 4bb4c2f16e
Dump profile before summary 2021-05-16 19:52:53 -06:00
Michael Miller aa13b077f3
No need to type restrict io method 2021-05-16 19:47:07 -06:00
Michael Miller 1e3e0daa04
Place error count in parens next to failures 2021-05-16 19:42:15 -06:00
Michael Miller aee171656a
Fix '<anonymous>' showing up for root group 2021-05-16 19:37:45 -06:00
Michael Miller 84ac41967b
Formatting 2021-05-16 19:29:20 -06:00
Michael Miller cc09cb1b77
Cleanup and consolidate common code for result blocks 2021-05-16 19:28:59 -06:00
Michael Miller f81c498aef
Add error block component 2021-05-16 17:14:09 -06:00
Michael Miller ed3ad662d2
Move failure command list to its own component 2021-05-16 17:13:06 -06:00
Michael Miller 2316377c6e
Rename ExampleFilterCommand to ExampleCommand 2021-05-16 17:08:15 -06:00
Michael Miller 031e892dad
Rename SummaryBlock to Stats 2021-05-16 16:56:19 -06:00
Michael Miller 3ecb04e293
Initial work on summary output 2021-05-16 15:03:37 -06:00
Michael Miller ee294a3ec2
Use Array instead of Enumerable 2021-05-16 13:22:25 -06:00
Michael Miller 0ed684afbc
Integrate report and summary events 2021-05-16 13:20:02 -06:00
Michael Miller ceb368a7f4
Overhaul Report 2021-05-16 13:19:04 -06:00
Michael Miller fb436d2ec4
Define a pending result as neither passing nor failing 2021-05-16 12:31:01 -06:00
Michael Miller 832ffbf403
Split to make it obvious run is called 2021-05-16 12:22:00 -06:00
Michael Miller 59c67c26a9
Result visitor methods should take result as argument 2021-05-16 12:19:16 -06:00
Michael Miller 9a62c1386a
Remove parameter from start_dump and close events 2021-05-16 10:51:50 -06:00
Michael Miller ba2922e655
Implement broadcast formatter methods 2021-05-16 10:12:40 -06:00
Michael Miller 5da21f8ede
Update Ameba and address issues 2021-05-15 19:51:44 -06:00
Michael Miller aa03e3527d
Formatting 2021-05-15 19:45:17 -06:00
Michael Miller eebcba0749
Mostly implemented progress formatter 2021-05-15 19:45:01 -06:00
Michael Miller e2f4051927
Split error handler from failure method 2021-05-15 19:44:06 -06:00
Michael Miller a36982d6d6
Use visitor pattern 2021-05-15 19:43:13 -06:00
Michael Miller d5c4d5e822
Call `fail` instead of `failure` on visitor 2021-05-15 19:42:59 -06:00
Michael Miller 618e9e195a
Begin triggering events for formatters 2021-05-15 18:31:52 -06:00
Michael Miller 4eb457f197
Define and document formatter methods 2021-05-15 17:01:29 -06:00
Michael Miller 1ea209184e
Formatting 2021-05-12 21:41:56 -06:00
Michael Miller 81f509c083
Get config, spec, builder, and runner working together 2021-05-12 21:41:34 -06:00
Michael Miller 83c4b01e84
Set up placeholder formatters 2021-05-12 21:41:12 -06:00
Michael Miller ff084bb3cd
Fix dumb mistakes 2021-05-12 21:40:48 -06:00
Michael Miller b8b6b3b609
Add pass?/fail? methods to Result types 2021-05-12 21:39:50 -06:00
Michael Miller 72b2e7ebcb
Fix paths and references 2021-05-08 23:46:19 -06:00
Michael Miller 7294f2da67
Change ConfigSource to "applicator"
Remove unecessary abstract base class.
Shorten name of CLI arguments config applicator.
2021-05-08 23:45:54 -06:00
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