Class: Mutant::WarningFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/mutant/warning_filter.rb

Overview

Stream filter for warnings

Constant Summary collapse

WARNING_PATTERN =
/\A(?:.+):(?:\d+): warning: (?:.+)\n\z/

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(target) ⇒ undefined

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Initialize object



16
17
18
19
# File 'lib/mutant/warning_filter.rb', line 16

def initialize(target)
  @target   = target
  @warnings = []
end

Instance Attribute Details

#warningsArray<String> (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return filtered warnings



27
28
29
# File 'lib/mutant/warning_filter.rb', line 27

def warnings
  @warnings
end

Class Method Details

.useArray<String>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Use warning filter during block execution



64
65
66
67
68
69
70
71
# File 'lib/mutant/warning_filter.rb', line 64

def self.use
  original = $stderr
  $stderr = filter = new(original)
  yield
  filter.warnings
ensure
  $stderr = original
end

Instance Method Details

#write(message) ⇒ self

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Write message to target filtering warnings



48
49
50
51
52
53
54
55
56
# File 'lib/mutant/warning_filter.rb', line 48

def write(message)
  if WARNING_PATTERN =~ message
    warnings << message
  else
    target.write(message)
  end

  self
end