Commit graph

185 commits

Author SHA1 Message Date
Michael Miller
cddfe5591d Move ValueWrapper and TypedValueWrapper to Internals
Trying to hide from top-level some inner-workings.
2018-09-23 16:23:26 -06:00
Michael Miller
887a04a92a Remove unused classes 2018-09-23 16:13:48 -06:00
Michael Miller
7a6045a1f3 Change #it_behaves_like to a macro 2018-09-23 16:10:07 -06:00
Michael Miller
b3b8efdd59 Mark helper macros private 2018-09-23 16:07:58 -06:00
Michael Miller
70e37eeccf DRY up DSL 2018-09-23 16:07:03 -06:00
Michael Miller
0f323666a0 Fix methods for adding hooks 2018-09-23 15:41:58 -06:00
Michael Miller
855a5f2239 Move hook storage to their own class 2018-09-23 15:26:19 -06:00
Michael Miller
57c9f2c58e Copy/paste to reimplement pending examples 2018-09-23 14:53:32 -06:00
Michael Miller
56ae92a25d Add symbol for getting local from #given 2018-09-23 14:45:36 -06:00
Michael Miller
3c31783fd7 Pass arguments directly onto initializer with splat 2018-09-23 14:45:14 -06:00
Michael Miller
03a8efd7f8 Create test instance when example is created
This exposes errors in the framework
instead of delaying them until the test runs.
2018-09-23 14:39:05 -06:00
Michael Miller
94e2f54713 Implement building groups and examples 2018-09-23 14:34:42 -06:00
Michael Miller
037fe604ea Example group builder classes should build groups
It's implied in their name.
2018-09-23 13:40:16 -06:00
Michael Miller
d551cf6e1b Add missing GivenExampleGroupBuilder class 2018-09-23 12:27:21 -06:00
Michael Miller
6bf07e3967 Collection for #given is now an array of ValueWrapper 2018-09-23 12:27:08 -06:00
Michael Miller
faf3bef05c Fix typo 2018-09-23 12:21:10 -06:00
Michael Miller
fc1c0351cd Must use class variables 2018-09-23 12:19:29 -06:00
Michael Miller
ab7087649d Example wrappers need a top-level initializer
The default initializer made by the compiler takes no arguments.
Use this one to not create a default initializer.
2018-09-23 12:19:07 -06:00
Michael Miller
ecba0d00ec Pass group to example initializer 2018-09-23 12:16:38 -06:00
Michael Miller
09184f4a2a Group builder needs "what" as first arg 2018-09-23 12:15:53 -06:00
Michael Miller
0999cb2dbc Use fully-qualified names 2018-09-23 12:05:19 -06:00
Michael Miller
9109fc30fd Can pass types around (somewhat) at runtime
No need for extra factory classes.
2018-09-23 12:03:52 -06:00
Michael Miller
87d9cc438f Move code for root back to Spectator#describe
There seems to be a problem using def in block.
This broke helper methods and gives the error: `can't declare def 
dynamically`.
2018-09-23 12:02:51 -06:00
Michael Miller
9ba3fc898b More refatoring 2018-09-22 19:41:56 -06:00
Michael Miller
a1b5533504 Some initial work to cleanup the DSL builder 2018-09-22 15:15:29 -06:00
Michael Miller
a82076e2b7 Remove type from group macros
This value is never directly seen,
so it isn't necessary to support it.
2018-09-22 11:38:00 -06:00
Michael Miller
66ca06337d Fix locals not being passed to child groups 2018-09-21 14:26:09 -06:00
Michael Miller
a9d4acda36 Pass locals to example and test wrapper initializer
The #initialize method is defined in each context/given/module
that needs to add a local.
This is an elegant (although possibly confusing) solution.
2018-09-21 14:03:09 -06:00
Michael Miller
cba0abc7f1 Fixes for enumerating examples 2018-09-20 18:41:36 -06:00
Michael Miller
39be62c511 Temp disable until I figure out how to reference wrapped example 2018-09-20 18:41:21 -06:00
Michael Miller
007572f0b8 Get rid of #add_examples
Added #example_count method to help with array sizing.
2018-09-19 23:13:43 -06:00
Michael Miller
8b8981494d Trying to get exaples to map to their given values 2018-09-19 23:00:17 -06:00
Michael Miller
aaf973b8cf Concat #all_examples instead of recursive #add_examples 2018-09-19 22:28:20 -06:00
Michael Miller
4d601281f6 Delay example creation by using factories
The #given block functionality specifically needs this to create 
multiple examples.
2018-09-19 21:58:32 -06:00
Michael Miller
bb7f036a82 Make Example#group abstract
Instead of passing parent group as an argument, define the group method 
in the exapmle class created by the #it macro.
2018-09-19 21:50:51 -06:00
Michael Miller
0f7640411f Use symbols instead of strings for hash lookups 2018-09-19 21:06:10 -06:00
Michael Miller
a28f512ae4 Some code for repeating examples in given blocks 2018-09-19 20:49:01 -06:00
Michael Miller
830aa7b43a Structural code for enumerating given value sets 2018-09-19 20:00:26 -06:00
Michael Miller
2be9d65997 Add examples to group children 2018-09-19 19:32:59 -06:00
Michael Miller
06630e87d3 Rework how children are handled
Uses a loose version of the composite pattern.
This is to keep examples in the order they were declared.
2018-09-19 19:31:50 -06:00
Michael Miller
d679c356fd Move conditional into context macro 2018-09-19 19:29:33 -06:00
Michael Miller
fe81341e1a Rename MAPPING to GROUPS - better name 2018-09-19 18:58:44 -06:00
Michael Miller
41c0d9abc7 Initial changes for DSL refactor
No examples are picked up right now.
2018-09-19 18:53:09 -06:00
Michael Miller
fa73bf3a60 Hide method to infer type of first in collection in given macro
This was a bit of a hack.
2018-09-15 23:38:07 -06:00
Michael Miller
80fbe89b4c Track children in DSL 2018-09-15 16:58:59 -06:00
Michael Miller
a06ea6088c Shorten GroupDefinitions to Definitions 2018-09-15 16:53:28 -06:00
Michael Miller
196187a98a Add human-friendly formatting to runtime 2018-09-15 15:45:17 -06:00
Michael Miller
d1527d8c0d Change char for pending to * 2018-09-15 14:16:10 -06:00
Michael Miller
fd547c5814 Use Time::Span.zero instead of constructor with 0 nanoseconds 2018-09-15 14:10:59 -06:00
Michael Miller
caeab6c338 Cleanup color code 2018-09-15 14:04:17 -06:00
Michael Miller
625262b6d5 Colorize result string based on outcome 2018-09-15 13:51:28 -06:00
Michael Miller
8e1a2e114b Display summary from default formatter 2018-09-15 13:51:07 -06:00
Michael Miller
b329afffb6 Rename Report to TestResults 2018-09-15 13:31:55 -06:00
Michael Miller
ac53394b8d Additional methods to describe result 2018-09-15 13:30:07 -06:00
Michael Miller
5819e0201e Shorten names of result classes 2018-09-15 13:25:11 -06:00
Michael Miller
6ca4d8d2a6 Move matchers DSL into their own module
Moves the #eq method out of the global namespace.
2018-09-15 11:58:43 -06:00
Michael Miller
1ea06998e7 Move #expect from global namespace to example DSL 2018-09-15 11:30:45 -06:00
Michael Miller
967797428c Move DSL to its own directory 2018-09-15 11:21:23 -06:00
Michael Miller
b5cdda4af3 Shorten ExpectationFailedError to ExpectationFailed 2018-09-15 11:05:11 -06:00
Michael Miller
a1871ca62e Rename StandardFormatter to DefaultFormatter 2018-09-15 10:57:49 -06:00
Michael Miller
cfe1a014dd Rename reporters to formatters 2018-09-15 10:56:58 -06:00
Michael Miller
251bf5bb5e Remove unused source type 2018-09-15 10:53:00 -06:00
Michael Miller
a3366add13 Cleanup remaining references to "context" that should be "group" 2018-09-15 10:52:17 -06:00
Michael Miller
010b47ca1f Rename ContextDefinitions to GroupDefinitions 2018-09-15 10:49:46 -06:00
Michael Miller
7968c5a394 Rename Context to ExampleGroup 2018-09-15 10:45:47 -06:00
Michael Miller
dc8e651209 Quick implementation of pending examles 2018-09-15 10:36:20 -06:00
Michael Miller
56229cdc93 Move common example runner code into new RunnableExample class 2018-09-14 22:17:16 -06:00
Michael Miller
e4d46ca603 Initial implementation of invoking #around_each hooks
My brain hurts. 😖
2018-09-13 10:44:21 -06:00
Michael Miller
9f778c5cb9 Fix after_all hooks running too soon 2018-09-12 21:31:44 -06:00
Michael Miller
77753ab974 Move hook execution into Example#run 2018-09-12 20:42:39 -06:00
Michael Miller
5b275f3146 Use #unsafe_as
The value can't be any other type, so this should be a safe operation.
2018-09-12 20:28:36 -06:00
Michael Miller
fbea3533ea Remove setter and extra code for given vars 2018-09-12 20:27:11 -06:00
Michael Miller
e30da2be19 Some macro cleanup 2018-09-12 19:23:27 -06:00
Michael Miller
9b07f669ed Remove Locals sub-module
This allows for seamless helper methods.
2018-09-12 19:16:41 -06:00
Michael Miller
3fc625de3f Allow generic types for #described_class and implicit #subject
Add runtime check to ensure #described_class is a type name.
2018-09-12 18:54:46 -06:00
Michael Miller
037612d00a Add implicit subject 2018-09-12 18:37:33 -06:00
Michael Miller
8cf876268a Use fresh variables 2018-09-12 16:29:48 -06:00
Michael Miller
10fc6c6a35 Hide special character mapping 2018-09-12 15:54:45 -06:00
Michael Miller
625a331745 Initial code to indirectly run example
This issolates the example code from the example class' attributes, such
as #description, #run, and others.
2018-09-12 15:47:57 -06:00
Michael Miller
700108f52f Move example-specific DSL to its own module 2018-09-12 15:41:23 -06:00
Michael Miller
4bfd2b9620 Rearrange DSL 2018-09-12 15:21:23 -06:00
Michael Miller
e451c027a8 Fix bad copy/paste for hooks 2018-09-12 15:16:18 -06:00
Michael Miller
193314d532 Fix given variables being defined in parent context 2018-09-12 15:13:46 -06:00
Michael Miller
8b55d9139d Hide constants used to build test hiearchy 2018-09-12 14:53:11 -06:00
Michael Miller
c2ee9fd520 Move ROOT_CONTEXT out of Spectator module 2018-09-11 20:25:28 -06:00
Michael Miller
6f6ba9c812 Obscure given value setter 2018-09-11 16:19:31 -06:00
Michael Miller
65e8ee3788 Fix string descriptions having extra quotes 2018-09-11 16:01:31 -06:00
Michael Miller
84ed9c41b2 Store example description 2018-09-11 15:57:18 -06:00
Michael Miller
d8621fc43e Store "what" string in context 2018-09-11 15:54:00 -06:00
Michael Miller
284e10482a Add names for most common special characters
These names will be used instead of an underscore. This helps with
naming.
2018-09-11 15:09:23 -06:00
Michael Miller
95ec999bba Hide name of underlying let's block method
This prevent's defining a bang version of the let value with the same
name.
2018-09-11 12:54:47 -06:00
Michael Miller
2c0238d178 Invoke before_each, before_all, after_each, and after_all hooks 2018-09-10 22:33:40 -06:00
Michael Miller
a725c0d5be Pass context to examples 2018-09-10 21:51:14 -06:00
Michael Miller
2ff8ebb3cb Implement creation of hooks 2018-09-10 21:27:24 -06:00
Michael Miller
387e129a89 Add context instances 2018-09-10 19:59:57 -06:00
Michael Miller
65da494e52 Fix for no block arg in #given - "value" treated as StringLiteral 2018-09-10 19:28:57 -06:00
Michael Miller
b1d44fb480 Remove source tracking since it doesn't work right with macros 2018-09-07 21:49:46 -06:00
Michael Miller
aa1764d972 Cleanup contextual arguments 2018-09-07 18:20:54 -06:00
Michael Miller
27e3f00d70 Remove RunOrder
Examples will be sorted by using the decorator pattern.The collection of
examples will be wrapped when a custom run order isused.
2018-09-07 15:06:57 -06:00
Michael Miller
cb0ae516ae Catch duplicate given blocks with same variable name 2018-09-06 22:39:40 -06:00