Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I configure rspec to show output with spork?

Tags:

rspec

spork

I have spork running to speed up my tests but there is no output when I run them. Is there a configuration that I need to modify?

like image 352
user341493 Avatar asked Mar 07 '14 00:03

user341493


1 Answers

Just ran into this as well, running on spork 1.0.0rc4 and rspec 2.14.1 / rspec-core 2.14.8 . As far as I could figure it out, the problem lies in the following:

  1. Spork configures the $stdout to point to localhost:port (drb client) so that all reporter output is sent to the drb client. This now happens after the Spork.prefork is ran.
  2. In my Spork.prefork block I was (naturally) doing RSpec.configure do |config|, and one of the config calls there (in particular config.mock_with :rr), was causing a sequence of calls that eventually caused the reporter/formatters in RSpec.configuration to be initialized - but without the incorrect stdout.
  3. RSpec.configuration has a reset method (marked as @private but alas), which flushes the initialized reporter/formatters, to be lazily reinitialized.
  4. Also, somehow RSpec.configuration.output_stream is never set. Bottom line, adding this code to Spork.each_run appears to fix the problem:

    if Spork.using_spork?
        RSpec.configure do |config|
            config.reset
            config.output_stream = $stdout
        end
    end
    

If anyone knows of a more elegant way to solve this, please tell!

like image 115
astgtciv Avatar answered Oct 23 '22 03:10

astgtciv