Michael Johnston
2006-Dec-21 11:04 UTC
[rspec-users] heres how to get color output in rspec_autotest with rspec 0.7.5
In case anyone else is trying to make this work, here is what I did (Before 0.7.4 I had patched the regex in zentest redgreen, but that is not used any more) To use directly, it is very simple. In rspec_autotest/lib/ rspec_autotest.rb, add a -c to the spec_command in the initializer function: @spec_command = "spec -c --diff unified" This won''t help however if you want to use rails_spec_server. To do that I patched rspec_0.7.5 to add an option to force the adding of colour codes (I did it this way because I assumed the check for output==Kernel was important for some other situation and I didn''t want to just throw it away): diff -upr rspec-0.7.5/lib/spec/runner/formatter/ base_text_formatter.rb rspec-0.7.5_with_colour_patch/lib/spec/runner/ formatter/base_text_formatter.rb --- rspec-0.7.5/lib/spec/runner/formatter/base_text_formatter.rb 2006-12-21 01:42:44.000000000 -0800 +++ rspec-0.7.5_with_colour_patch/lib/spec/runner/formatter/ base_text_formatter.rb 2006-12-21 01:47:16.000000000 -0800 @@ -5,10 +5,11 @@ module Spec # non-text based ones too - just ignore the +output+ constructor # argument. class BaseTextFormatter - def initialize(output, dry_run=false, colour=false) + def initialize(output, dry_run=false, colour=false, force_colour=false) @output = output @dry_run = dry_run - @colour = colour + @colour = colour || force_colour + @force_colour = force_colour begin ; require ''Win32/Console/ANSI'' if @colour && PLATFORM =~ /win32/ ; rescue LoadError ; raise "You must gem install win32console to use colour on Windows" ; end end @@ -96,7 +97,7 @@ module Spec end def colour(text, colour_code) - return text unless @colour && @output == Kernel + return text unless @force_colour || (@colour && @output == Kernel) "#{colour_code}#{text}\e[0m" end diff -upr rspec-0.7.5/lib/spec/runner/option_parser.rb rspec-0.7.5_with_colour_patch/lib/spec/runner/option_parser.rb --- rspec-0.7.5/lib/spec/runner/option_parser.rb 2006-12-21 01:42:44.000000000 -0800 +++ rspec-0.7.5_with_colour_patch/lib/spec/runner/option_parser.rb 2006-12-21 01:38:15.000000000 -0800 @@ -11,8 +11,7 @@ module Spec def create_context_runner(args, err, out, warn_if_no_files) options = parse(args, err, out, warn_if_no_files) - - formatter = options.formatter_type.new(options.out, options.dry_run, options.colour) + formatter = options.formatter_type.new(options.out, options.dry_run, options.colour, options.force_colour) options.reporter = Reporter.new(formatter, options.backtrace_tweaker) # this doesn''t really belong here. @@ -71,6 +70,10 @@ module Spec options.colour = true end + opts.on("-C", "--force-colour", "--force-color", "force adding color codes regardless of output method") do + options.force_colour = true + end + opts.on("-s", "--spec SPECIFICATION_NAME", "Execute context or specification with matching name") do |spec_name| options.spec_name = spec_name end then you can set the spec_command in rspec_autotest/lib/ rspec_autotest.rb to: @spec_command = "script/rails_spec -C --diff unified" Cheers, Michael
aslak hellesoy
2006-Dec-21 17:14 UTC
[rspec-users] heres how to get color output in rspec_autotest with rspec 0.7.5
Thanks, I saw the patch in the tracker. On 12/21/06, Michael Johnston <lastobelus at mac.com> wrote:> In case anyone else is trying to make this work, here is what I did > (Before 0.7.4 I had patched the regex in zentest redgreen, but that > is not used any more) > > To use directly, it is very simple. In rspec_autotest/lib/ > rspec_autotest.rb, add a -c to the spec_command in the initializer > function: > > @spec_command = "spec -c --diff unified" > > This won''t help however if you want to use rails_spec_server. To do > that I patched rspec_0.7.5 to add an option to force the adding of > colour codes (I did it this way because I assumed the check for > output==Kernel was important for some other situation and I didn''t > want to just throw it away): > > diff -upr rspec-0.7.5/lib/spec/runner/formatter/ > base_text_formatter.rb rspec-0.7.5_with_colour_patch/lib/spec/runner/ > formatter/base_text_formatter.rb > --- rspec-0.7.5/lib/spec/runner/formatter/base_text_formatter.rb > 2006-12-21 01:42:44.000000000 -0800 > +++ rspec-0.7.5_with_colour_patch/lib/spec/runner/formatter/ > base_text_formatter.rb 2006-12-21 01:47:16.000000000 -0800 > @@ -5,10 +5,11 @@ module Spec > # non-text based ones too - just ignore the +output+ constructor > # argument. > class BaseTextFormatter > - def initialize(output, dry_run=false, colour=false) > + def initialize(output, dry_run=false, colour=false, > force_colour=false) > @output = output > @dry_run = dry_run > - @colour = colour > + @colour = colour || force_colour > + @force_colour = force_colour > begin ; require ''Win32/Console/ANSI'' if @colour && > PLATFORM =~ /win32/ ; rescue LoadError ; raise "You must gem install > win32console to use colour on Windows" ; end > end > @@ -96,7 +97,7 @@ module Spec > end > def colour(text, colour_code) > - return text unless @colour && @output == Kernel > + return text unless @force_colour || (@colour && @output => Kernel) > "#{colour_code}#{text}\e[0m" > end > > diff -upr rspec-0.7.5/lib/spec/runner/option_parser.rb > rspec-0.7.5_with_colour_patch/lib/spec/runner/option_parser.rb > --- rspec-0.7.5/lib/spec/runner/option_parser.rb 2006-12-21 > 01:42:44.000000000 -0800 > +++ rspec-0.7.5_with_colour_patch/lib/spec/runner/option_parser.rb > 2006-12-21 01:38:15.000000000 -0800 > @@ -11,8 +11,7 @@ module Spec > def create_context_runner(args, err, out, warn_if_no_files) > options = parse(args, err, out, warn_if_no_files) > - > - formatter = options.formatter_type.new(options.out, > options.dry_run, options.colour) > + formatter = options.formatter_type.new(options.out, > options.dry_run, options.colour, options.force_colour) > options.reporter = Reporter.new(formatter, > options.backtrace_tweaker) > # this doesn''t really belong here. > @@ -71,6 +70,10 @@ module Spec > options.colour = true > end > > + opts.on("-C", "--force-colour", "--force-color", "force > adding color codes regardless of output method") do > + options.force_colour = true > + end > + > opts.on("-s", "--spec SPECIFICATION_NAME", "Execute > context or specification with matching name") do |spec_name| > options.spec_name = spec_name > end > > > > > > > then you can set the spec_command in rspec_autotest/lib/ > rspec_autotest.rb to: > > @spec_command = "script/rails_spec -C --diff unified" > > > > Cheers, > Michael > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >