From c1006516805ceaa2060eb4df6d6f51dfb01bf47e Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Thu, 30 Aug 2018 21:15:20 -0600 Subject: [PATCH] Handle errored and failing specs separately An errored example is one that throws an exception that is not from an expectation failing. --- src/spectator/errored_example_result.cr | 14 ++++++++++++++ src/spectator/runner.cr | 6 ++++-- 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 src/spectator/errored_example_result.cr diff --git a/src/spectator/errored_example_result.cr b/src/spectator/errored_example_result.cr new file mode 100644 index 0000000..caf2073 --- /dev/null +++ b/src/spectator/errored_example_result.cr @@ -0,0 +1,14 @@ +require "./failed_example_result" + +module Spectator + class ErroredExampleResult < FailedExampleResult + getter error : Exception + + def errored? : Bool + true + end + + def initialize(@example, @error) + end + end +end diff --git a/src/spectator/runner.cr b/src/spectator/runner.cr index 91fb46f..6b2584f 100644 --- a/src/spectator/runner.cr +++ b/src/spectator/runner.cr @@ -19,8 +19,10 @@ module Spectator private def run_example(example) example.run SuccessfulExampleResult.new(example) - rescue ex : Exception - FailedExampleResult.new(example, ex) + rescue failure : ExpectationFailedError + FailedExampleResult.new(example, failure) + rescue ex + ErroredExampleResult.new(example, ex) end end end