From 4890cafefa27f3a663789a76214039a84de9f319 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Sat, 23 Mar 2019 14:44:00 -0600 Subject: [PATCH] Ability to enumerate each result in report --- spec/report_spec.cr | 9 +++++++++ src/spectator/report.cr | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/spec/report_spec.cr b/spec/report_spec.cr index 478e965..5566674 100644 --- a/spec/report_spec.cr +++ b/spec/report_spec.cr @@ -44,6 +44,15 @@ describe Spectator::Report do end end + describe "#each" do + it "yields all results" do + results = new_results + report = Spectator::Report.new(results) + # The `#each` method is tested through `Enumerable#to_a`. + report.to_a.should eq(results) + end + end + describe "#runtime" do it "is the expected value" do span = Time::Span.new(10, 10, 10) diff --git a/src/spectator/report.cr b/src/spectator/report.cr index 5d9bf16..e72124d 100644 --- a/src/spectator/report.cr +++ b/src/spectator/report.cr @@ -1,6 +1,10 @@ +require "./result" + module Spectator # Outcome of all tests in a suite. class Report + include Enumerable(Result) + # Total length of time it took to execute the test suite. # This includes examples, hooks, and framework processes. getter runtime : Time::Span @@ -51,6 +55,13 @@ module Spectator initialize(results, runtime) end + # Yields each result in turn. + def each + @results.each do |result| + yield result + end + end + # Number of examples. def example_count @results.size