Method: Inspec::Rule#initialize
- Defined in:
- lib/inspec/rule.rb
#initialize(id, profile_id, opts, &block) ⇒ Rule
Returns a new instance of Rule.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/inspec/rule.rb', line 34 def initialize(id, profile_id, opts, &block) @impact = nil @title = nil @descriptions = {} @refs = [] @tags = {} # not changeable by the user: @__code = nil @__block = block @__source_location = __get_block_source_location(&block) @__rule_id = id @__profile_id = profile_id @__checks = [] @__skip_rule = {} # { result: true, message: "Why", type: [:only_if, :waiver] } @__merge_count = 0 @__merge_changes = [] @__skip_only_if_eval = opts[:skip_only_if_eval] # evaluate the given definition return unless block_given? begin instance_eval(&block) # By applying waivers *after* the instance eval, we assure that # waivers have higher precedence than only_if. __apply_waivers rescue StandardError => e # We've encountered an exception while trying to eval the code inside the # control block. We need to prevent the exception from bubbling up, and # fail the control. Controls are failed by having a failed resource within # them; but since our control block is unsafe (and opaque) to us, let's # make a dummy and fail that. location = block.source_location.compact.join(":") describe "Control Source Code Error" do # Rubocop thinks we are raising an exception - we're actually calling RSpec's fail() its(location) { fail e. } # rubocop: disable Style/SignalException end end end |