mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Rename Context to ExampleGroup
This commit is contained in:
parent
dc8e651209
commit
7968c5a394
9 changed files with 102 additions and 112 deletions
|
@ -13,6 +13,6 @@ module Spectator
|
|||
end
|
||||
|
||||
at_exit do
|
||||
Runner.new(Context::ROOT).run
|
||||
Runner.new(ExampleGroup::ROOT).run
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,97 +0,0 @@
|
|||
require "./example"
|
||||
|
||||
module Spectator
|
||||
class Context
|
||||
ROOT = Context.new("ROOT")
|
||||
|
||||
getter what : String
|
||||
getter parent : Context?
|
||||
getter examples = [] of Example
|
||||
getter contexts = [] of Context
|
||||
getter before_all_hooks = [] of ->
|
||||
getter before_each_hooks = [] of ->
|
||||
getter after_all_hooks = [] of ->
|
||||
getter after_each_hooks = [] of ->
|
||||
getter around_each_hooks = [] of Proc(Nil) ->
|
||||
|
||||
@before_all_hooks_run = false
|
||||
@after_all_hooks_run = false
|
||||
|
||||
def initialize(@what, @parent = nil)
|
||||
if (parent = @parent)
|
||||
parent.contexts << self
|
||||
end
|
||||
end
|
||||
|
||||
def all_examples
|
||||
add_examples
|
||||
end
|
||||
|
||||
def run_before_all_hooks
|
||||
if (parent = @parent)
|
||||
parent.run_before_all_hooks
|
||||
end
|
||||
unless @before_all_hooks_run
|
||||
@before_all_hooks.each do |hook|
|
||||
hook.call
|
||||
end
|
||||
@before_all_hooks_run = true
|
||||
end
|
||||
end
|
||||
|
||||
def run_before_each_hooks
|
||||
if (parent = @parent)
|
||||
parent.run_before_each_hooks
|
||||
end
|
||||
@before_each_hooks.each do |hook|
|
||||
hook.call
|
||||
end
|
||||
end
|
||||
|
||||
def run_after_all_hooks
|
||||
unless @after_all_hooks_run
|
||||
if all_examples.all?(&.finished?)
|
||||
@after_all_hooks.each do |hook|
|
||||
hook.call
|
||||
end
|
||||
@after_all_hooks_run = true
|
||||
end
|
||||
end
|
||||
if (parent = @parent)
|
||||
parent.run_after_all_hooks
|
||||
end
|
||||
end
|
||||
|
||||
def run_after_each_hooks
|
||||
@after_each_hooks.each do |hook|
|
||||
hook.call
|
||||
end
|
||||
if (parent = @parent)
|
||||
parent.run_after_each_hooks
|
||||
end
|
||||
end
|
||||
|
||||
def wrap_around_each_hooks(&block : ->)
|
||||
wrapper = block
|
||||
@around_each_hooks.reverse_each do |hook|
|
||||
wrapper = wrap_proc(hook, wrapper)
|
||||
end
|
||||
if (parent = @parent)
|
||||
wrapper = parent.wrap_around_each_hooks(&wrapper)
|
||||
end
|
||||
wrapper
|
||||
end
|
||||
|
||||
private def wrap_proc(inner : Proc(Nil) ->, wrapper : ->)
|
||||
-> { inner.call(wrapper) }
|
||||
end
|
||||
|
||||
protected def add_examples(array = [] of Example)
|
||||
array.concat(@examples)
|
||||
contexts.each do |context|
|
||||
context.add_examples(array)
|
||||
end
|
||||
array
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
module Spectator
|
||||
module ContextDefinitions
|
||||
ALL = {} of Path => Object
|
||||
MAPPING = {} of String => Context
|
||||
MAPPING = {} of String => ExampleGroup
|
||||
|
||||
SPECIAL_CHARS = {
|
||||
'~' => "Tilde",
|
||||
|
|
|
@ -24,7 +24,7 @@ module Spectator
|
|||
%}
|
||||
|
||||
::Spectator::ContextDefinitions::MAPPING[{{absolute_module_name.stringify}}] =
|
||||
Context.new({{what_arg}}, ::Spectator::ContextDefinitions::MAPPING[{{parent_module.stringify}}])
|
||||
ExampleGroup.new({{what_arg}}, ::Spectator::ContextDefinitions::MAPPING[{{parent_module.stringify}}])
|
||||
|
||||
module {{module_name.id}}
|
||||
include {{parent_module}}
|
||||
|
|
|
@ -2,10 +2,10 @@ require "./source"
|
|||
|
||||
module Spectator
|
||||
abstract class Example
|
||||
getter context : Context
|
||||
getter group : ExampleGroup
|
||||
getter? finished = false
|
||||
|
||||
def initialize(@context)
|
||||
def initialize(@group)
|
||||
end
|
||||
|
||||
abstract def run : ExampleResult
|
||||
|
|
|
@ -2,9 +2,96 @@ require "./example"
|
|||
|
||||
module Spectator
|
||||
class ExampleGroup
|
||||
protected getter examples : Array(Example)
|
||||
ROOT = ExampleGroup.new("ROOT")
|
||||
|
||||
def initialize(@examples)
|
||||
getter what : String
|
||||
getter parent : ExampleGroup?
|
||||
getter examples = [] of Example
|
||||
getter groups = [] of ExampleGroup
|
||||
getter before_all_hooks = [] of ->
|
||||
getter before_each_hooks = [] of ->
|
||||
getter after_all_hooks = [] of ->
|
||||
getter after_each_hooks = [] of ->
|
||||
getter around_each_hooks = [] of Proc(Nil) ->
|
||||
|
||||
@before_all_hooks_run = false
|
||||
@after_all_hooks_run = false
|
||||
|
||||
def initialize(@what, @parent = nil)
|
||||
if (parent = @parent)
|
||||
parent.groups << self
|
||||
end
|
||||
end
|
||||
|
||||
def all_examples
|
||||
add_examples
|
||||
end
|
||||
|
||||
def run_before_all_hooks
|
||||
if (parent = @parent)
|
||||
parent.run_before_all_hooks
|
||||
end
|
||||
unless @before_all_hooks_run
|
||||
@before_all_hooks.each do |hook|
|
||||
hook.call
|
||||
end
|
||||
@before_all_hooks_run = true
|
||||
end
|
||||
end
|
||||
|
||||
def run_before_each_hooks
|
||||
if (parent = @parent)
|
||||
parent.run_before_each_hooks
|
||||
end
|
||||
@before_each_hooks.each do |hook|
|
||||
hook.call
|
||||
end
|
||||
end
|
||||
|
||||
def run_after_all_hooks
|
||||
unless @after_all_hooks_run
|
||||
if all_examples.all?(&.finished?)
|
||||
@after_all_hooks.each do |hook|
|
||||
hook.call
|
||||
end
|
||||
@after_all_hooks_run = true
|
||||
end
|
||||
end
|
||||
if (parent = @parent)
|
||||
parent.run_after_all_hooks
|
||||
end
|
||||
end
|
||||
|
||||
def run_after_each_hooks
|
||||
@after_each_hooks.each do |hook|
|
||||
hook.call
|
||||
end
|
||||
if (parent = @parent)
|
||||
parent.run_after_each_hooks
|
||||
end
|
||||
end
|
||||
|
||||
def wrap_around_each_hooks(&block : ->)
|
||||
wrapper = block
|
||||
@around_each_hooks.reverse_each do |hook|
|
||||
wrapper = wrap_proc(hook, wrapper)
|
||||
end
|
||||
if (parent = @parent)
|
||||
wrapper = parent.wrap_around_each_hooks(&wrapper)
|
||||
end
|
||||
wrapper
|
||||
end
|
||||
|
||||
private def wrap_proc(inner : Proc(Nil) ->, wrapper : ->)
|
||||
-> { inner.call(wrapper) }
|
||||
end
|
||||
|
||||
protected def add_examples(array = [] of Example)
|
||||
array.concat(@examples)
|
||||
groups.each do |group|
|
||||
group.add_examples(array)
|
||||
end
|
||||
array
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,6 +9,6 @@ module Spectator
|
|||
parent: nil,
|
||||
given: [] of Object
|
||||
} %}
|
||||
::Spectator::ContextDefinitions::MAPPING[{{@type.stringify}}] = ::Spectator::Context::ROOT
|
||||
::Spectator::ContextDefinitions::MAPPING[{{@type.stringify}}] = ::Spectator::ExampleGroup::ROOT
|
||||
end
|
||||
end
|
||||
|
|
|
@ -5,20 +5,20 @@ module Spectator
|
|||
|
||||
def run
|
||||
result = ResultCapture.new
|
||||
context.run_before_all_hooks
|
||||
context.run_before_each_hooks
|
||||
group.run_before_all_hooks
|
||||
group.run_before_each_hooks
|
||||
begin
|
||||
wrapped_capture_result(result).call
|
||||
ensure
|
||||
@finished = true
|
||||
context.run_after_each_hooks
|
||||
context.run_after_all_hooks
|
||||
group.run_after_each_hooks
|
||||
group.run_after_all_hooks
|
||||
end
|
||||
translate_result(result)
|
||||
end
|
||||
|
||||
private def wrapped_capture_result(result)
|
||||
context.wrap_around_each_hooks do
|
||||
group.wrap_around_each_hooks do
|
||||
capture_result(result)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,7 +3,7 @@ require "./successful_example_result"
|
|||
|
||||
module Spectator
|
||||
class Runner
|
||||
def initialize(@context : Context,
|
||||
def initialize(@group : ExampleGroup,
|
||||
@reporter : Reporters::Reporter = Reporters::StandardReporter.new)
|
||||
end
|
||||
|
||||
|
@ -11,7 +11,7 @@ module Spectator
|
|||
results = [] of ExampleResult
|
||||
elapsed = Time.measure do
|
||||
@reporter.start_suite
|
||||
results = @context.all_examples.map do |example|
|
||||
results = @group.all_examples.map do |example|
|
||||
@reporter.start_example(example)
|
||||
example.run.tap do |result|
|
||||
@reporter.end_example(result)
|
||||
|
|
Loading…
Reference in a new issue