class OutputMatcher

Public Class Methods

new(stdout, stderr) click to toggle source
# File lib/mspec/matchers/output.rb, line 4
def initialize(stdout, stderr)
  @out = stdout
  @err = stderr
end

Public Instance Methods

failure_message() click to toggle source
# File lib/mspec/matchers/output.rb, line 41
def failure_message
  expected_out = "\n"
  actual_out = "\n"
  unless @out.nil?
    expected_out << "  $stdout: #{@out.inspect}\n"
    actual_out << "  $stdout: #{@stdout.chomp.inspect}\n"
  end
  unless @err.nil?
    expected_out << "  $stderr: #{@err.inspect}\n"
    actual_out << "  $stderr: #{@stderr.chomp.inspect}\n"
  end
  ["Expected:#{expected_out}", "     got:#{actual_out}"]
end
matches?(proc) click to toggle source
# File lib/mspec/matchers/output.rb, line 9
def matches?(proc)
  @saved_out = $stdout
  @saved_err = $stderr
  @stdout = $stdout = IOStub.new
  @stderr = $stderr = IOStub.new

  proc.call

  unless @out.nil?
    case @out
    when Regexp
      return false unless $stdout =~ @out
    else
      return false unless $stdout == @out
    end
  end

  unless @err.nil?
    case @err
    when Regexp
      return false unless $stderr =~ @err
    else
      return false unless $stderr == @err
    end
  end

  return true
ensure
  $stdout = @saved_out
  $stderr = @saved_err
end
negative_failure_message() click to toggle source
# File lib/mspec/matchers/output.rb, line 55
def negative_failure_message
  out = ""
  out << "  $stdout: #{@stdout.chomp.dump}\n" unless @out.nil?
  out << "  $stderr: #{@stderr.chomp.dump}\n" unless @err.nil?
  ["Expected output not to be:\n", out]
end