From d8f7f652d58c7bd0ea0ab1400c5e0967f5232d69 Mon Sep 17 00:00:00 2001 From: markokajzer Date: Sun, 11 Feb 2024 12:51:36 +0100 Subject: [PATCH] chore: suppress whirly output during specs --- lib/code_review_leaderboard/spinner.rb | 22 +++++++++++++++++++- spec/code_review_leaderboard/spinner_spec.rb | 4 +++- spec/spec_helper.rb | 2 ++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/code_review_leaderboard/spinner.rb b/lib/code_review_leaderboard/spinner.rb index 6d7c397..82e1fce 100644 --- a/lib/code_review_leaderboard/spinner.rb +++ b/lib/code_review_leaderboard/spinner.rb @@ -9,11 +9,31 @@ module Spinner def start result = nil - Whirly.start(spinner: "dots", stop: "✔") do + Whirly.start(spinner: "dots", stop: "✔", **options) do result = yield end result end + + private + + # NOTE: For testing only + # Even when using rspec `expect {...}.to output`, output is not suppressed + def options + { + stream:, + non_tty: (ENV["RUBY_ENV"] == "test") + } + end + + def stream + if ENV["RUBY_ENV"] == "test" + require "stringio" + StringIO.new + else + $stdout + end + end end end diff --git a/spec/code_review_leaderboard/spinner_spec.rb b/spec/code_review_leaderboard/spinner_spec.rb index 3f55eb4..c62b8a7 100644 --- a/spec/code_review_leaderboard/spinner_spec.rb +++ b/spec/code_review_leaderboard/spinner_spec.rb @@ -8,7 +8,9 @@ it "shows the spinner" do described_class.start { "result" } - expect(Whirly).to have_received(:start).with(spinner: "dots", stop: "✔") + expect(Whirly).to have_received(:start).with( + hash_including(spinner: "dots", stop: "✔") + ) end it "returns the result of the block" do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 02e9c3d..c83d609 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,5 @@ +ENV["RUBY_ENV"] = "test" + require "simplecov" SimpleCov.start do add_filter "spec/"