Sha256: a419f76a4acddd87914ea14196c1a2966974321254ff4ff6489354a72ee2df27

Contents?: true

Size: 1.24 KB

Versions: 29

Compression:

Stored size: 1.24 KB

Contents

require 'stringio'

module RSpec
  module Support
    class StdErrSplitter
      def initialize(original)
        @orig_stderr    = original
        @output_tracker = ::StringIO.new
      end

      respond_to_name = (::RUBY_VERSION.to_f < 1.9) ? :respond_to? : :respond_to_missing?
      define_method respond_to_name do |*args|
        @orig_stderr.respond_to?(*args) || super
      end

      def method_missing(name, *args, &block)
        @output_tracker.__send__(name, *args, &block)
        @orig_stderr.__send__(name, *args, &block)
      end

      def ==(other)
        @orig_stderr == other
      end

      # To work around JRuby error:
      # TypeError: $stderr must have write method, RSpec::StdErrSplitter given
      def write(line)
        return if line =~ %r{^\S+/gems/\S+:\d+: warning:} # http://rubular.com/r/kqeUIZOfPG

        @orig_stderr.write(line)
        @output_tracker.write(line)
      end

      def has_output?
        !output.empty?
      end

      def reset!
        @output_tracker = ::StringIO.new
      end

      def verify_example!(example)
        example.send(:fail, "Warnings were generated: #{output}") if has_output?
        reset!
      end

      def output
        @output_tracker.string
      end
    end
  end
end

Version data entries

29 entries across 26 versions & 8 rubygems

Version Path
opal-rspec-0.8.0 rspec-support/upstream/lib/rspec/support/spec/stderr_splitter.rb
opal-rspec-0.8.0.alpha3 rspec-support/upstream/lib/rspec/support/spec/stderr_splitter.rb
opal-rspec-0.8.0.alpha2 rspec-support/upstream/lib/rspec/support/spec/stderr_splitter.rb
opal-rspec-0.8.0.alpha1 rspec-support/upstream/lib/rspec/support/spec/stderr_splitter.rb
opal-rspec-0.7.1 rspec-support/upstream/lib/rspec/support/spec/stderr_splitter.rb
opal-rspec-0.7.0 rspec-support/upstream/lib/rspec/support/spec/stderr_splitter.rb
opal-rspec-0.6.2 rspec-support/lib/rspec/support/spec/stderr_splitter.rb
opal-rspec-0.7.0.rc.2 rspec-support/upstream/lib/rspec/support/spec/stderr_splitter.rb
opal-rspec-0.6.1 rspec-support/lib/rspec/support/spec/stderr_splitter.rb
opal-rspec-0.6.0 rspec-support/lib/rspec/support/spec/stderr_splitter.rb
opal-rspec-0.6.0.beta1 rspec-support/lib/rspec/support/spec/stderr_splitter.rb
opal-connect-rspec-0.5.0 rspec-support/lib/rspec/support/spec/stderr_splitter.rb
able-neo4j-1.0.0 vendor/bundle/jruby/1.9/gems/rspec-support-3.1.2/lib/rspec/support/spec/stderr_splitter.rb
honeybadger-2.4.0 vendor/gems/ruby/2.1.0/gems/rspec-support-3.1.0/lib/rspec/support/spec/stderr_splitter.rb
honeybadger-2.4.0 vendor/gems/ruby/1.9.1/gems/rspec-support-3.1.0/lib/rspec/support/spec/stderr_splitter.rb
honeybadger-2.4.0 vendor/gems/ruby/2.2.0/gems/rspec-support-3.1.0/lib/rspec/support/spec/stderr_splitter.rb
opal-rspec-0.5.0 rspec-support/lib/rspec/support/spec/stderr_splitter.rb
logstash-input-beats-2.0.2 vendor/jruby/1.9/gems/rspec-support-3.1.2/lib/rspec/support/spec/stderr_splitter.rb
logstash-input-beats-2.0.2 vendor/jruby/1.9/gems/logstash-codec-json-2.0.3/vendor/gems/rspec-support-3.1.2/lib/rspec/support/spec/stderr_splitter.rb
logstash-codec-json-2.0.3 vendor/gems/rspec-support-3.1.2/lib/rspec/support/spec/stderr_splitter.rb