rspecspork

How can I configure rspec to show output with 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?


Solution

  • 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!