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)`.

Returns:

  • (Symbol)

    a symbol representing the severity ‘:error`, `:warning`, or `:ignore`

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.

Parameters:

  • specifies (Symbol)

    default severity if :error is not wanted as the default



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.

Parameters:

  • issue (Issues::Issue)

    the issue for which to set severity

  • level (Symbol)

    the severity level (:error, :warning, or :ignore).



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

def []=(issue, level)
  unless issue.is_a? Issues::Issue
    raise Puppet::DevError, _("Attempt to set validation severity for something that is not an Issue. (Got %{issue})") % { issue: issue.class }
  end
  unless SEVERITIES[level]
    raise Puppet::DevError, _("Illegal severity level: %{level} for '%{issue_code}'") % { issue_code: issue.issue_code, level: level }
  end
  unless issue.demotable? || level == :error
    raise Puppet::DevError, _("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.



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

def assert_issue issue
  unless issue.is_a? Issues::Issue
    raise Puppet::DevError, _("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.

Returns:

  • (Symbol)

    severity level :error, :warning, or :ignore



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.

Returns:

  • (Boolean)

    this implementation returns true for errors and warnings



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

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