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
|
end
|
||||||
|
|
||||||
at_exit do
|
at_exit do
|
||||||
Runner.new(Context::ROOT).run
|
Runner.new(ExampleGroup::ROOT).run
|
||||||
end
|
end
|
||||||
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 Spectator
|
||||||
module ContextDefinitions
|
module ContextDefinitions
|
||||||
ALL = {} of Path => Object
|
ALL = {} of Path => Object
|
||||||
MAPPING = {} of String => Context
|
MAPPING = {} of String => ExampleGroup
|
||||||
|
|
||||||
SPECIAL_CHARS = {
|
SPECIAL_CHARS = {
|
||||||
'~' => "Tilde",
|
'~' => "Tilde",
|
||||||
|
|
|
@ -24,7 +24,7 @@ module Spectator
|
||||||
%}
|
%}
|
||||||
|
|
||||||
::Spectator::ContextDefinitions::MAPPING[{{absolute_module_name.stringify}}] =
|
::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}}
|
module {{module_name.id}}
|
||||||
include {{parent_module}}
|
include {{parent_module}}
|
||||||
|
|
|
@ -2,10 +2,10 @@ require "./source"
|
||||||
|
|
||||||
module Spectator
|
module Spectator
|
||||||
abstract class Example
|
abstract class Example
|
||||||
getter context : Context
|
getter group : ExampleGroup
|
||||||
getter? finished = false
|
getter? finished = false
|
||||||
|
|
||||||
def initialize(@context)
|
def initialize(@group)
|
||||||
end
|
end
|
||||||
|
|
||||||
abstract def run : ExampleResult
|
abstract def run : ExampleResult
|
||||||
|
|
|
@ -2,9 +2,96 @@ require "./example"
|
||||||
|
|
||||||
module Spectator
|
module Spectator
|
||||||
class ExampleGroup
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,6 +9,6 @@ module Spectator
|
||||||
parent: nil,
|
parent: nil,
|
||||||
given: [] of Object
|
given: [] of Object
|
||||||
} %}
|
} %}
|
||||||
::Spectator::ContextDefinitions::MAPPING[{{@type.stringify}}] = ::Spectator::Context::ROOT
|
::Spectator::ContextDefinitions::MAPPING[{{@type.stringify}}] = ::Spectator::ExampleGroup::ROOT
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,20 +5,20 @@ module Spectator
|
||||||
|
|
||||||
def run
|
def run
|
||||||
result = ResultCapture.new
|
result = ResultCapture.new
|
||||||
context.run_before_all_hooks
|
group.run_before_all_hooks
|
||||||
context.run_before_each_hooks
|
group.run_before_each_hooks
|
||||||
begin
|
begin
|
||||||
wrapped_capture_result(result).call
|
wrapped_capture_result(result).call
|
||||||
ensure
|
ensure
|
||||||
@finished = true
|
@finished = true
|
||||||
context.run_after_each_hooks
|
group.run_after_each_hooks
|
||||||
context.run_after_all_hooks
|
group.run_after_all_hooks
|
||||||
end
|
end
|
||||||
translate_result(result)
|
translate_result(result)
|
||||||
end
|
end
|
||||||
|
|
||||||
private def wrapped_capture_result(result)
|
private def wrapped_capture_result(result)
|
||||||
context.wrap_around_each_hooks do
|
group.wrap_around_each_hooks do
|
||||||
capture_result(result)
|
capture_result(result)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,7 @@ require "./successful_example_result"
|
||||||
|
|
||||||
module Spectator
|
module Spectator
|
||||||
class Runner
|
class Runner
|
||||||
def initialize(@context : Context,
|
def initialize(@group : ExampleGroup,
|
||||||
@reporter : Reporters::Reporter = Reporters::StandardReporter.new)
|
@reporter : Reporters::Reporter = Reporters::StandardReporter.new)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ module Spectator
|
||||||
results = [] of ExampleResult
|
results = [] of ExampleResult
|
||||||
elapsed = Time.measure do
|
elapsed = Time.measure do
|
||||||
@reporter.start_suite
|
@reporter.start_suite
|
||||||
results = @context.all_examples.map do |example|
|
results = @group.all_examples.map do |example|
|
||||||
@reporter.start_example(example)
|
@reporter.start_example(example)
|
||||||
example.run.tap do |result|
|
example.run.tap do |result|
|
||||||
@reporter.end_example(result)
|
@reporter.end_example(result)
|
||||||
|
|
Loading…
Reference in a new issue