Class: Puppet::Pops::Validation::SeverityProducer

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/pops/validation.rb

Overview

Decides on the severity of a given issue. The produced severity is one of `:error`, `:warning`, or `:ignore`. By default, a severity of `:error` is produced for all issues. To configure the severity of an issue call `#severity=(issue, level)`.

Constant Summary collapse

SEVERITIES =
{ ignore: true, warning: true, error: true, deprecation: true }.freeze

Instance Method Summary collapse

Constructor Details

#initialize(default_severity = :error) ⇒ SeverityProducer

Creates a new instance where all issues are diagnosed as :error unless overridden.


100
101
102
103
# File 'lib/puppet/pops/validation.rb', line 100

def initialize(default_severity = :error)
  # If diagnose is not set, the default is returned by the block
  @severities = Hash.new default_severity
end

Instance Method Details

#[](issue) ⇒ Object

See Also:

  • Puppet::Pops::Validation::SeverityProducer.{{#severity}

117
118
119
# File 'lib/puppet/pops/validation.rb', line 117

def [] issue
  severity issue
end

#[]=(issue, level) ⇒ Object

Override a default severity with the given severity level.


127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/puppet/pops/validation.rb', line 127

def []=(issue, level)
  unless issue.is_a? Issues::Issue
    raise Puppet::DevError.new(_("Attempt to set validation severity for something that is not an Issue. (Got %{issue})") % { issue: issue.class })
  end
  unless SEVERITIES[level]
    raise Puppet::DevError.new(_("Illegal severity level: %{level} for '%{issue_code}'") % { issue_code: issue.issue_code, level: level })
  end
  unless issue.demotable? || level == :error
    raise Puppet::DevError.new(_("Attempt to demote the hard issue '%{issue_code}' to %{level}") % { issue_code: issue.issue_code, level: level })
  end
  @severities[issue] = level
end

#assert_issue(issue) ⇒ Object

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.

Checks if the given issue is valid.


153
154
155
156
157
# File 'lib/puppet/pops/validation.rb', line 153

def assert_issue issue
  unless issue.is_a? Issues::Issue
    raise Puppet::DevError.new(_("Attempt to get validation severity for something that is not an Issue. (Got %{issue})") % { issue: issue.class })
  end
end

#severity(issue) ⇒ Symbol

Returns the severity of the given issue.


109
110
111
112
# File 'lib/puppet/pops/validation.rb', line 109

def severity(issue)
  assert_issue(issue)
  @severities[issue]
end

#should_report?(issue) ⇒ Boolean

Returns `true` if the issue should be reported or not.


145
146
147
148
# File 'lib/puppet/pops/validation.rb', line 145

def should_report? issue
  diagnose = @severities[issue]
  diagnose == :error || diagnose == :warning || diagnose == :deprecation
end