From b1a5dcc23a4a9cb02a6a1560c63861d102530cd9 Mon Sep 17 00:00:00 2001 From: Nick Merwin Date: Wed, 18 Sep 2013 10:24:46 -0700 Subject: [PATCH] Coveralls::Output.no_color = true to completely disable output coloring [Fixes #36] --- lib/coveralls/output.rb | 22 ++++++++++++++++------ spec/coveralls/output_spec.rb | 11 +++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/lib/coveralls/output.rb b/lib/coveralls/output.rb index ab7b0a99..1706f28b 100644 --- a/lib/coveralls/output.rb +++ b/lib/coveralls/output.rb @@ -26,10 +26,13 @@ module Coveralls # or set this environment variable: # # COVERALLS_SILENT + # + # To disable color completely: + # + # Coveralls::Output.no_color = true module Output - require 'term/ansicolor' - attr_accessor :silent + attr_accessor :silent, :no_color attr_writer :output extend self @@ -37,6 +40,10 @@ def output (defined?(@output) && @output) || $stdout end + def no_color? + (defined?(@no_color)) && @no_color + end + # Public: Formats the given string with the specified color # through Term::ANSIColor # @@ -52,10 +59,13 @@ def output # # Returns the formatted string. def format(string, options = {}) - if options[:color] - options[:color].split(/\s/).reverse_each do |color| - if Term::ANSIColor.respond_to?(color.to_sym) - string = Term::ANSIColor.send(color.to_sym, string) + unless no_color? + require 'term/ansicolor' + if options[:color] + options[:color].split(/\s/).reverse_each do |color| + if Term::ANSIColor.respond_to?(color.to_sym) + string = Term::ANSIColor.send(color.to_sym, string) + end end end end diff --git a/spec/coveralls/output_spec.rb b/spec/coveralls/output_spec.rb index f8c4ce20..c61772fc 100644 --- a/spec/coveralls/output_spec.rb +++ b/spec/coveralls/output_spec.rb @@ -57,6 +57,7 @@ describe '.format' do it "accepts a color argument" do + require 'term/ansicolor' string = 'Hello' ansi_color_string = Term::ANSIColor.red(string) Coveralls::Output.format(string, :color => 'red').should eq(ansi_color_string) @@ -77,5 +78,15 @@ multi_formatted_string = Term::ANSIColor.red{ Term::ANSIColor.underline(string) } Coveralls::Output.format(string, :color => 'red underline').should eq(multi_formatted_string) end + + context "no color" do + before { Coveralls::Output.no_color = true } + + it "does not add color to string" do + unformatted_string = "Hi Doggie!" + Coveralls::Output.format(unformatted_string, :color => 'red'). + should eq(unformatted_string) + end + end end end