From e38fddb12a1295719f0dd60fdb242db540734bee Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Thu, 30 Aug 2018 22:21:10 -0600 Subject: [PATCH] Initial code for reporters --- src/spectator.cr | 3 +- src/spectator/reporters.cr | 6 ++++ src/spectator/reporters/reporter.cr | 10 +++++++ src/spectator/reporters/standard_reporter.cr | 29 ++++++++++++++++++++ src/spectator/runner.cr | 9 ++++-- 5 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 src/spectator/reporters.cr create mode 100644 src/spectator/reporters/reporter.cr create mode 100644 src/spectator/reporters/standard_reporter.cr diff --git a/src/spectator.cr b/src/spectator.cr index 3f49b84..da07d87 100644 --- a/src/spectator.cr +++ b/src/spectator.cr @@ -12,10 +12,9 @@ module Spectator DSL.describe({{what}}) {{block}} end end - {% debug %} end at_exit do - Runner.new(ALL_EXAMPLES, DefinedRunOrder.new).run + Runner.new(ALL_EXAMPLES).run end end diff --git a/src/spectator/reporters.cr b/src/spectator/reporters.cr new file mode 100644 index 0000000..4c1437b --- /dev/null +++ b/src/spectator/reporters.cr @@ -0,0 +1,6 @@ +require "./reporters/*" + +module Spectator + module Reporters + end +end diff --git a/src/spectator/reporters/reporter.cr b/src/spectator/reporters/reporter.cr new file mode 100644 index 0000000..e274cac --- /dev/null +++ b/src/spectator/reporters/reporter.cr @@ -0,0 +1,10 @@ +module Spectator + module Reporters + abstract class Reporter + abstract def start_suite + abstract def end_suite + abstract def start_example(example : Example) + abstract def end_example(result : ExampleResult) + end + end +end diff --git a/src/spectator/reporters/standard_reporter.cr b/src/spectator/reporters/standard_reporter.cr new file mode 100644 index 0000000..221cc63 --- /dev/null +++ b/src/spectator/reporters/standard_reporter.cr @@ -0,0 +1,29 @@ +require "./reporter" +require "colorize" + +module Spectator + module Reporters + class StandardReporter < Reporter + def start_suite + end + + def end_suite + puts + end + + def start_example(example : Example) + end + + def end_example(result : ExampleResult) + print case result + when SuccessfulExampleResult + ".".colorize.green + when ErroredExampleResult + "E".colorize.magenta + when FailedExampleResult + "F".colorize.red + end + end + end + end +end diff --git a/src/spectator/runner.cr b/src/spectator/runner.cr index a334b2a..2274949 100644 --- a/src/spectator/runner.cr +++ b/src/spectator/runner.cr @@ -3,14 +3,19 @@ require "./successful_example_result" module Spectator class Runner - def initialize(@examples : Enumerable(Example), @run_order : RunOrder) + def initialize(@examples : Enumerable(Example), + @run_order : RunOrder = DefinedRunOrder.new, + @reporter : Reporters::Reporter = Reporters::StandardReporter.new) end def run : Nil + @reporter.start_suite sorted_examples.each do |example| + @reporter.start_example(example) result = run_example(example) - pp result + @reporter.end_example(result) end + @reporter.end_suite end private def sorted_examples