mirror of
https://github.com/inspec/inspec
synced 2024-11-26 06:30:26 +00:00
feature: add rules with IDs
Signed-off-by: Dominik Richter <dominik.richter@gmail.com>
This commit is contained in:
parent
483c12edc7
commit
64d90c326f
5 changed files with 80 additions and 0 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
# copyright: 2015, Dominik Richter
|
||||||
|
# license: All rights reserved
|
||||||
|
|
||||||
require 'json'
|
require 'json'
|
||||||
|
|
||||||
# Group Policy
|
# Group Policy
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
# copyright: 2015, Dominik Richter
|
||||||
|
# license: All rights reserved
|
||||||
|
|
||||||
require 'json'
|
require 'json'
|
||||||
|
|
||||||
# Registry Key Helper
|
# Registry Key Helper
|
||||||
|
|
|
@ -14,6 +14,8 @@ require 'resources/processes'
|
||||||
require 'resources/registry_key'
|
require 'resources/registry_key'
|
||||||
require 'resources/security_policy'
|
require 'resources/security_policy'
|
||||||
require 'resources/ssh_conf'
|
require 'resources/ssh_conf'
|
||||||
|
require 'vulcano/rule'
|
||||||
|
require 'vulcano/rspec_json_formatter'
|
||||||
|
|
||||||
# Dummy module for handling additional attributes
|
# Dummy module for handling additional attributes
|
||||||
# which may be injected by the user. This covers data
|
# which may be injected by the user. This covers data
|
||||||
|
|
22
lib/vulcano/rspec_json_formatter.rb
Normal file
22
lib/vulcano/rspec_json_formatter.rb
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
require 'rspec/core'
|
||||||
|
|
||||||
|
# Extend the basic RSpec JSON Formatter
|
||||||
|
# to give us an ID in its output
|
||||||
|
# TODO: remove once RSpec has IDs in stable (probably v3.3/v4.0)
|
||||||
|
module RSpec::Core::Formatters
|
||||||
|
class JsonFormatter
|
||||||
|
private
|
||||||
|
def format_example(example)
|
||||||
|
{
|
||||||
|
:description => example.description,
|
||||||
|
:full_description => example.full_description,
|
||||||
|
:status => example.execution_result.status.to_s,
|
||||||
|
:file_path => example.metadata[:file_path],
|
||||||
|
:line_number => example.metadata[:line_number],
|
||||||
|
:run_time => example.execution_result.run_time,
|
||||||
|
:pending_message => example.execution_result.pending_message,
|
||||||
|
:id => example.metadata[:id]
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
48
lib/vulcano/rule.rb
Normal file
48
lib/vulcano/rule.rb
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
# copyright: 2015, Dominik Richter
|
||||||
|
# license: All rights reserved
|
||||||
|
|
||||||
|
class VulcanoRule
|
||||||
|
include Serverspec::Helper::Type
|
||||||
|
extend Serverspec::Helper::Type
|
||||||
|
include RSpec::Core::DSL
|
||||||
|
|
||||||
|
def initialize(id, &block)
|
||||||
|
@id = id
|
||||||
|
@impact = 1.0
|
||||||
|
@title = id
|
||||||
|
@desc = ""
|
||||||
|
|
||||||
|
self.instance_eval(&block)
|
||||||
|
end
|
||||||
|
|
||||||
|
def impact(v = nil)
|
||||||
|
@impact = v unless v.nil?
|
||||||
|
@impact
|
||||||
|
end
|
||||||
|
|
||||||
|
def title(v = nil)
|
||||||
|
@title = v unless v.nil?
|
||||||
|
@title
|
||||||
|
end
|
||||||
|
|
||||||
|
def desc(v = nil)
|
||||||
|
@desc = v unless v.nil?
|
||||||
|
@desc
|
||||||
|
end
|
||||||
|
|
||||||
|
def describe(sth, &block)
|
||||||
|
r = VulcanoRule.describe(sth, &block)
|
||||||
|
r.examples.each {|ex|
|
||||||
|
ex.metadata[:id] = @id
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def method_missing(m, *a, &b)
|
||||||
|
VulcanoRule.__send__(m, *a, &b)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def rule id, &block
|
||||||
|
VulcanoRule.new(id, &block)
|
||||||
|
end
|
Loading…
Reference in a new issue