RSpec: "--color" not working in spec.opts when combined with "--drb"

Windows XP SP 2 ruby 1.8.5

gems: rails 1.2.3 rake 0.7.3 win32console 1.0.8

plugins: rspec 1.0.8 rspec_rails 1.0.8

spec.opts: --colour --format progress --loadby mtime --reverse --drb

When I run "rake spec" or "ruby script/spec spec --color" this is the output:

D:\dev\project>rake spec (in D:/dev/project) ←[32m.←[0m←[32m.←[0m←[32m.←[0m←[32m.←[0m←[32m.←[0m←[32m.←[0m←[32m.←[0m←[32m.←[0m ←[32m.←[0m←[32m.←[0m←[32m.←[0m

Finished in 0.172 seconds

←[32m11 examples, 0 failures←[0m

If I remove "--drb" from the spec.opts file it runs fine (but slower).

I'm having the same problem. Also, "rake spec" doesn't connect to my running spec_server, but "ruby script/spec spec/models --drb" does. Do you have that this problem too?

I'm running: Vista ruby 1.8.6 rails 1.2.3 rake 0.7.3 win32console 1.0.8 rspec 1.0.8. same spec.opts

I'm not having an issue with "rake spec" not connecting to spec_sever.

Could it be an issue with Vista?

Ok disregard the rake spec not connecting to spec_server thing - I wasn't using it properly.

I found a workaround to get colour and drb working together:

Add "require 'Win32/Console/ANSI'" before the last line in your spec file and change the STDOUT parameter in the last line to $stdout.

So <project>/script/spec should look like this:

#!/usr/bin/env ruby $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../ vendor/plugins/rspec/lib")) require 'spec' require 'Win32/Console/ANSI' ::Spec::runner::CommandLine.run(ARGV, STDERR, $stdout, true, true)

It's not perfect. The first run will print the output to the console that spec_server is running in. All subsequent runs will print to the correct console though. I couldn't figure out why it was doing this but the way it works is good enough for me.

It worked perfectly! Thank you Rich.

I did notice that this fix will suppress any output when using autotest.

I haven't tried autotest yet but I'd like to - it sounds awesome. I'll try it tonight and see if I get any output. I also posted that workaround as a comment to the bug in rspec's tracker. Hopefully they'll fix it properly soon.