Root example group specialization

This commit is contained in:
Michael Miller 2018-10-14 14:28:05 -06:00
parent 3facf3af9d
commit 2070d7816b
4 changed files with 32 additions and 5 deletions

View file

@ -2,11 +2,9 @@ module Spectator::DSL
module Builder
extend self
@@group_stack = [::Spectator::DSL::ExampleGroupBuilder.new("ROOT")]
@@group_stack = Array(ExampleGroupBuilder).new(1, root_group)
private def root_group
@@group_stack.first
end
private class_getter root_group = RootExampleGroupBuilder.new()
private def current_group
@@group_stack.last
@ -57,7 +55,7 @@ module Spectator::DSL
end
protected def build : ExampleGroup
root_group.build(nil, Internals::SampleValues.empty)
root_group.build(Internals::SampleValues.empty)
end
end
end

View file

@ -0,0 +1,15 @@
module Spectator::DSL
class RootExampleGroupBuilder < ExampleGroupBuilder
def initialize
super("ROOT")
end
def build(sample_values : Internals::SampleValues) : ExampleGroup
RootExampleGroup.new(build_hooks).tap do |group|
group.children = @children.map do |child|
child.build(group, sample_values).as(ExampleGroup::Child)
end
end
end
end
end

View file

@ -18,6 +18,7 @@ require "./pending_example"
require "./example_hooks"
require "./example_group"
require "./root_example_group"
require "./expectation_failed"
require "./test_results"

View file

@ -0,0 +1,13 @@
require "./example_group"
module Spectator
class RootExampleGroup < ExampleGroup
def initialize(hooks)
super("ROOT", nil, hooks)
end
def to_s(io)
# ...
end
end
end