inspec-core 4.21.3 → 4.23.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/inspec-core.gemspec +3 -5
- data/lib/bundles/inspec-supermarket/cli.rb +1 -1
- data/lib/inspec/base_cli.rb +5 -1
- data/lib/inspec/config.rb +19 -1
- data/lib/inspec/exceptions.rb +1 -0
- data/lib/inspec/input.rb +4 -3
- data/lib/inspec/input_registry.rb +9 -2
- data/lib/inspec/metadata.rb +6 -1
- data/lib/inspec/plugin/v2/plugin_types/reporter.rb +4 -25
- data/lib/inspec/profile.rb +30 -9
- data/lib/inspec/reporters.rb +0 -3
- data/lib/inspec/reporters/automate.rb +3 -3
- data/lib/inspec/reporters/base.rb +7 -23
- data/lib/inspec/reporters/cli.rb +1 -0
- data/lib/inspec/reporters/json.rb +9 -4
- data/lib/inspec/resources/apt.rb +2 -0
- data/lib/inspec/resources/bridge.rb +1 -1
- data/lib/inspec/resources/host.rb +1 -1
- data/lib/inspec/resources/mount.rb +1 -1
- data/lib/inspec/resources/mysql_session.rb +31 -8
- data/lib/inspec/resources/postgres.rb +1 -1
- data/lib/inspec/resources/postgres_session.rb +6 -4
- data/lib/inspec/resources/processes.rb +1 -1
- data/lib/inspec/resources/service.rb +2 -2
- data/lib/inspec/resources/users.rb +1 -1
- data/lib/inspec/resources/windows_firewall.rb +110 -0
- data/lib/inspec/resources/windows_firewall_rule.rb +137 -0
- data/lib/inspec/run_data.rb +1 -1
- data/lib/inspec/run_data/profile.rb +7 -6
- data/lib/inspec/runner.rb +8 -2
- data/lib/inspec/runner_rspec.rb +4 -1
- data/lib/inspec/schema.rb +2 -0
- data/lib/inspec/schema/exec_json.rb +4 -3
- data/lib/inspec/schema/primitives.rb +1 -1
- data/lib/inspec/utils/parser.rb +1 -1
- data/lib/inspec/utils/run_data_filters.rb +104 -0
- data/lib/inspec/version.rb +1 -1
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +4 -4
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +1 -1
- data/lib/plugins/inspec-reporter-html2/templates/profile.html.erb +5 -2
- data/lib/plugins/inspec-reporter-junit/README.md +15 -0
- data/lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit.rb +12 -0
- data/lib/{inspec/reporters/junit.rb → plugins/inspec-reporter-junit/lib/inspec-reporter-junit/reporter.rb} +22 -26
- data/lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit/version.rb +5 -0
- metadata +19 -36
- data/README.md +0 -474
data/lib/inspec/run_data.rb
CHANGED
@@ -47,7 +47,7 @@ module Inspec
|
|
47
47
|
# core reporters have been migrated to plugins. It is probable that new data elements
|
48
48
|
# and new Hash compatibility behavior will be added during the core reporter plugin
|
49
49
|
# conversion process.
|
50
|
-
SCHEMA_VERSION = "0.
|
50
|
+
SCHEMA_VERSION = "0.2.0".freeze
|
51
51
|
|
52
52
|
def self.compatible_schema?(constraints)
|
53
53
|
reqs = Gem::Requirement.create(constraints)
|
@@ -15,7 +15,7 @@ module Inspec
|
|
15
15
|
:summary,
|
16
16
|
:supports, # complex local
|
17
17
|
:parent_profile,
|
18
|
-
:
|
18
|
+
:status_message,
|
19
19
|
:waiver_data, # Undocumented but used in JSON reporter - should not be?
|
20
20
|
:title,
|
21
21
|
:version
|
@@ -40,7 +40,7 @@ module Inspec
|
|
40
40
|
title
|
41
41
|
version
|
42
42
|
parent_profile
|
43
|
-
|
43
|
+
status_message
|
44
44
|
waiver_data
|
45
45
|
}.each do |field|
|
46
46
|
self[field] = raw_prof_data[field]
|
@@ -51,11 +51,11 @@ module Inspec
|
|
51
51
|
class Profile
|
52
52
|
# Good candidate for keyword_init, but that is not in 2.4
|
53
53
|
Dependency = Struct.new(
|
54
|
-
:name, :path, :status, :
|
54
|
+
:name, :path, :status, :status_message, :git, :url, :compliance, :supermarket, :branch, :tag, :commit, :version, :relative_path
|
55
55
|
) do
|
56
56
|
include HashLikeStruct
|
57
57
|
def initialize(raw_dep_data)
|
58
|
-
%i{name path status
|
58
|
+
%i{name path status status_message git url supermarket compliance branch tag commit version relative_path}.each { |f| self[f] = raw_dep_data[f] }
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -96,11 +96,12 @@ module Inspec
|
|
96
96
|
# There are probably others
|
97
97
|
:value,
|
98
98
|
:type,
|
99
|
-
:required
|
99
|
+
:required,
|
100
|
+
:sensitive
|
100
101
|
) do
|
101
102
|
include HashLikeStruct
|
102
103
|
def initialize(raw_opts_data)
|
103
|
-
%i{value type required}.each { |f| self[f] = raw_opts_data[f] }
|
104
|
+
%i{value type required sensitive}.each { |f| self[f] = raw_opts_data[f] }
|
104
105
|
end
|
105
106
|
end
|
106
107
|
end
|
data/lib/inspec/runner.rb
CHANGED
@@ -115,8 +115,14 @@ module Inspec
|
|
115
115
|
@test_collector.add_profile(requirement.profile)
|
116
116
|
end
|
117
117
|
|
118
|
-
|
119
|
-
|
118
|
+
begin
|
119
|
+
tests = profile.collect_tests
|
120
|
+
all_controls += tests unless tests.nil?
|
121
|
+
rescue Inspec::Exceptions::ProfileLoadFailed => e
|
122
|
+
Inspec::Log.error "Failed to load profile #{profile.name}: #{e}"
|
123
|
+
profile.set_status_message e.to_s
|
124
|
+
next
|
125
|
+
end
|
120
126
|
end
|
121
127
|
|
122
128
|
all_controls.each do |rule|
|
data/lib/inspec/runner_rspec.rb
CHANGED
@@ -90,9 +90,12 @@ module Inspec
|
|
90
90
|
return @rspec_exit_code if @formatter.results.empty?
|
91
91
|
|
92
92
|
stats = @formatter.results[:statistics][:controls]
|
93
|
+
load_failures = @formatter.results[:profiles]&.select { |p| p[:status] == "failed" }&.any?
|
93
94
|
skipped = @formatter.results.dig(:profiles, 0, :status) == "skipped"
|
94
|
-
if stats[:failed][:total] == 0 && stats[:skipped][:total] == 0 && !skipped
|
95
|
+
if stats[:failed][:total] == 0 && stats[:skipped][:total] == 0 && !skipped && !load_failures
|
95
96
|
0
|
97
|
+
elsif load_failures
|
98
|
+
@conf["distinct_exit"] ? 102 : 1
|
96
99
|
elsif stats[:failed][:total] > 0
|
97
100
|
@conf["distinct_exit"] ? 100 : 1
|
98
101
|
elsif stats[:skipped][:total] > 0 || skipped
|
data/lib/inspec/schema.rb
CHANGED
@@ -147,6 +147,8 @@ module Inspec
|
|
147
147
|
"license" => { "type" => "string", "optional" => true },
|
148
148
|
"summary" => { "type" => "string", "optional" => true },
|
149
149
|
"status" => { "type" => "string", "optional" => false },
|
150
|
+
"status_message" => { "type" => "string", "optional" => true },
|
151
|
+
# skip_message is deprecated, status_message should be used to store the reason for skipping
|
150
152
|
"skip_message" => { "type" => "string", "optional" => true },
|
151
153
|
|
152
154
|
"supports" => {
|
@@ -83,7 +83,7 @@ module Inspec
|
|
83
83
|
"required" => %w{name sha256 supports attributes groups controls},
|
84
84
|
# Name is mandatory in inspec.yml.
|
85
85
|
# supports, controls, groups, and attributes are always present, even if empty
|
86
|
-
# sha256, status,
|
86
|
+
# sha256, status, status_message
|
87
87
|
"properties" => {
|
88
88
|
# These are provided in inspec.yml
|
89
89
|
"name" => Primitives::STRING,
|
@@ -100,10 +100,11 @@ module Inspec
|
|
100
100
|
"description" => Primitives::STRING,
|
101
101
|
"inspec_version" => Primitives::STRING,
|
102
102
|
|
103
|
-
# These are generated at runtime, and all except skip_message are guaranteed
|
103
|
+
# These are generated at runtime, and all except status_message and skip_message are guaranteed
|
104
104
|
"sha256" => Primitives::STRING,
|
105
105
|
"status" => Primitives::STRING,
|
106
|
-
"
|
106
|
+
"status_message" => Primitives::STRING, # If skipped or failed to load, why
|
107
|
+
"skip_message" => Primitives::STRING, # Deprecated field storing reason for skipping. status_message should be used instead.
|
107
108
|
"controls" => Primitives.array(CONTROL.ref),
|
108
109
|
"groups" => Primitives.array(Primitives::CONTROL_GROUP.ref),
|
109
110
|
"attributes" => Primitives.array(Primitives::INPUT),
|
data/lib/inspec/utils/parser.rb
CHANGED
@@ -0,0 +1,104 @@
|
|
1
|
+
module Inspec
|
2
|
+
module Utils
|
3
|
+
# RunDataFilters is a mixin for core Reporters and plugin reporters.
|
4
|
+
# The methods operate on the run_data Hash (prior to any conversion to a
|
5
|
+
# full RunData object).
|
6
|
+
# All methods here operate using the run_data accessor and modify
|
7
|
+
# its contents in place (if needed).
|
8
|
+
module RunDataFilters
|
9
|
+
|
10
|
+
# Long name, but we want to be clear this operates on the Hash
|
11
|
+
# This is the only method that client libraries need to call; any future
|
12
|
+
# feature growth should be handled internally here.
|
13
|
+
def apply_run_data_filters_to_hash
|
14
|
+
@config[:runtime_config] = Inspec::Config.cached || {}
|
15
|
+
apply_report_resize_options
|
16
|
+
redact_sensitive_inputs
|
17
|
+
suppress_diff_output
|
18
|
+
sort_controls
|
19
|
+
end
|
20
|
+
|
21
|
+
# Apply options such as message truncation and removal of backtraces
|
22
|
+
def apply_report_resize_options
|
23
|
+
runtime_config = @config[:runtime_config]
|
24
|
+
|
25
|
+
message_truncation = runtime_config[:reporter_message_truncation] || "ALL"
|
26
|
+
@trunc = message_truncation == "ALL" ? -1 : message_truncation.to_i
|
27
|
+
include_backtrace = runtime_config[:reporter_backtrace_inclusion].nil? ? true : runtime_config[:reporter_backtrace_inclusion]
|
28
|
+
|
29
|
+
@run_data[:profiles]&.each do |p|
|
30
|
+
p[:controls].each do |c|
|
31
|
+
c[:results]&.map! do |r|
|
32
|
+
r.delete(:backtrace) unless include_backtrace
|
33
|
+
process_message_truncation(r)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Find any inputs with :sensitive = true and replace their values with "***"
|
40
|
+
def redact_sensitive_inputs
|
41
|
+
@run_data[:profiles]&.each do |p|
|
42
|
+
p[:inputs]&.each do |i|
|
43
|
+
next unless i[:options][:sensitive]
|
44
|
+
|
45
|
+
i[:options][:value] = "***"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Optionally suppress diff output in the message field
|
51
|
+
def suppress_diff_output
|
52
|
+
return if @config[:runtime_config][:diff]
|
53
|
+
|
54
|
+
@run_data[:profiles]&.each do |p|
|
55
|
+
p[:controls]&.each do |c|
|
56
|
+
c[:results]&.each do |r|
|
57
|
+
next unless r[:message] # :message only set on failure
|
58
|
+
|
59
|
+
pos = r[:message].index("\n\nDiff:")
|
60
|
+
next unless pos # Only textual tests get Diffs
|
61
|
+
|
62
|
+
r[:message] = r[:message].slice(0, pos)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Optionally sort controls within each profile in report
|
69
|
+
def sort_controls
|
70
|
+
sort_type = @config[:runtime_config][:sort_results_by]
|
71
|
+
return unless sort_type
|
72
|
+
return if sort_type == "none"
|
73
|
+
|
74
|
+
@run_data[:profiles]&.each do |p|
|
75
|
+
p[:controls] ||= []
|
76
|
+
p[:groups] ||= []
|
77
|
+
|
78
|
+
case sort_type
|
79
|
+
when "control"
|
80
|
+
p[:controls].sort_by! { |c| c[:id] }
|
81
|
+
when "random"
|
82
|
+
p[:controls].shuffle!
|
83
|
+
when "file"
|
84
|
+
# Sort the controls by file, but preserve order within the file.
|
85
|
+
# Files are called "groups" in the run_data, and the filename is in the id.
|
86
|
+
sorted_control_ids = p[:groups].sort_by { |g| g[:id] }.map { |g| g[:controls] }.flatten
|
87
|
+
controls_by_id = {}
|
88
|
+
p[:controls].each { |c| controls_by_id[c[:id]] = c }
|
89
|
+
p[:controls] = sorted_control_ids.map { |cid| controls_by_id[cid] }
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
private
|
95
|
+
|
96
|
+
def process_message_truncation(result)
|
97
|
+
if result.key?(:message) && result[:message] != "" && @trunc > -1 && result[:message].length > @trunc
|
98
|
+
result[:message] = result[:message][0...@trunc] + "[Truncated to #{@trunc} characters]"
|
99
|
+
end
|
100
|
+
result
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
data/lib/inspec/version.rb
CHANGED
@@ -22,7 +22,7 @@ module InspecPlugins
|
|
22
22
|
# return all compliance profiles available for the user
|
23
23
|
# the user is either specified in the options hash or by default
|
24
24
|
# the username of the account is used that is logged in
|
25
|
-
def self.profiles(config, profile_filter = nil) # rubocop:disable PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength
|
25
|
+
def self.profiles(config, profile_filter = nil) # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength
|
26
26
|
owner = config["owner"] || config["user"]
|
27
27
|
|
28
28
|
# Chef Compliance
|
@@ -81,13 +81,13 @@ module InspecPlugins
|
|
81
81
|
mapped_profiles.select! do |p|
|
82
82
|
(!ver || p["version"] == ver) && (!id || p["name"] == id)
|
83
83
|
end
|
84
|
-
|
84
|
+
[msg, mapped_profiles]
|
85
85
|
when "401"
|
86
86
|
msg = "401 Unauthorized. Please check your token."
|
87
|
-
|
87
|
+
[msg, []]
|
88
88
|
else
|
89
89
|
msg = "An unexpected error occurred (HTTP #{response_code}): #{response.message}"
|
90
|
-
|
90
|
+
[msg, []]
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
@@ -126,7 +126,7 @@ module InspecPlugins
|
|
126
126
|
desc: "Overwrite existing profile on Server."
|
127
127
|
option :owner, type: :string, required: false,
|
128
128
|
desc: "Owner that should own the profile"
|
129
|
-
def upload(path) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, PerceivedComplexity, Metrics/CyclomaticComplexity
|
129
|
+
def upload(path) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity
|
130
130
|
config = InspecPlugins::Compliance::Configuration.new
|
131
131
|
return unless loggedin(config)
|
132
132
|
|
@@ -7,8 +7,11 @@
|
|
7
7
|
<% if profile.summary %>
|
8
8
|
<tr class="profile-summary"><th>Summary:</th><td><%= profile.summary %></td></tr>
|
9
9
|
<% end %>
|
10
|
-
<% if profile.
|
11
|
-
<tr class="profile-
|
10
|
+
<% if profile.status != "loaded" %>
|
11
|
+
<tr class="profile-status"><th>Status:</th><td><%= profile.status %></td></tr>
|
12
|
+
<% end %>
|
13
|
+
<% if profile.status_message && !profile.status_message.empty? %>
|
14
|
+
<tr class="profile-status-message"><th>Status Message:</th><td><%= profile.status_message %></td></tr>
|
12
15
|
<% end %>
|
13
16
|
</table>
|
14
17
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# junit reporter
|
2
|
+
|
3
|
+
This is the implementation of the junit XML reporter.
|
4
|
+
|
5
|
+
## To Install This Plugin
|
6
|
+
|
7
|
+
This plugin is included with inspec. There is no need to install it separately.
|
8
|
+
|
9
|
+
## What This Plugin Does
|
10
|
+
|
11
|
+
This reporter generates an XML report in Apache Ant JUnit format.
|
12
|
+
|
13
|
+
## Implementation Note
|
14
|
+
|
15
|
+
This reporter uses the REXML XML generator, but may use more advanced XML systems for testing. This is to keep packaging requirements for CHef InSpec lightweight and free of compiled dependencies.
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require_relative "inspec-reporter-junit/version"
|
2
|
+
module InspecPlugins
|
3
|
+
module JUnitReporter
|
4
|
+
class Plugin < ::Inspec.plugin(2)
|
5
|
+
plugin_name :'inspec-reporter-junit'
|
6
|
+
reporter :junit do
|
7
|
+
require_relative "inspec-reporter-junit/reporter"
|
8
|
+
InspecPlugins::JUnitReporter::Reporter
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -1,5 +1,9 @@
|
|
1
|
-
module
|
2
|
-
class
|
1
|
+
module InspecPlugins::JUnitReporter
|
2
|
+
class Reporter < Inspec.plugin(2, :reporter)
|
3
|
+
def self.run_data_schema_constraints
|
4
|
+
"~> 0.0"
|
5
|
+
end
|
6
|
+
|
3
7
|
def render
|
4
8
|
require "rexml/document"
|
5
9
|
xml_output = REXML::Document.new
|
@@ -8,7 +12,7 @@ module Inspec::Reporters
|
|
8
12
|
testsuites = REXML::Element.new("testsuites")
|
9
13
|
xml_output.add(testsuites)
|
10
14
|
|
11
|
-
run_data
|
15
|
+
run_data.profiles.each do |profile|
|
12
16
|
testsuites.add(build_profile_xml(profile))
|
13
17
|
end
|
14
18
|
|
@@ -18,20 +22,16 @@ module Inspec::Reporters
|
|
18
22
|
output(formatter.write(xml_output.root, ""))
|
19
23
|
end
|
20
24
|
|
21
|
-
private
|
22
|
-
|
23
25
|
def build_profile_xml(profile)
|
24
26
|
profile_xml = REXML::Element.new("testsuite")
|
25
|
-
profile_xml.add_attribute("name", profile
|
27
|
+
profile_xml.add_attribute("name", profile.name)
|
26
28
|
profile_xml.add_attribute("tests", count_profile_tests(profile))
|
27
29
|
profile_xml.add_attribute("failed", count_profile_failed_tests(profile))
|
28
30
|
profile_xml.add_attribute("failures", count_profile_failed_tests(profile))
|
29
31
|
|
30
|
-
profile
|
31
|
-
|
32
|
-
|
33
|
-
control[:results].each do |result|
|
34
|
-
profile_xml.add(build_result_xml(profile[:name], control, result))
|
32
|
+
profile.controls.each do |control|
|
33
|
+
control.results.each do |result|
|
34
|
+
profile_xml.add(build_result_xml(profile.name, control, result))
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -40,16 +40,16 @@ module Inspec::Reporters
|
|
40
40
|
|
41
41
|
def build_result_xml(profile_name, control, result)
|
42
42
|
result_xml = REXML::Element.new("testcase")
|
43
|
-
result_xml.add_attribute("name", result
|
44
|
-
result_xml.add_attribute("classname", control
|
45
|
-
result_xml.add_attribute("target", run_data
|
46
|
-
result_xml.add_attribute("time", result
|
43
|
+
result_xml.add_attribute("name", result.code_desc)
|
44
|
+
result_xml.add_attribute("classname", control.title.nil? ? "#{profile_name}.Anonymous" : "#{profile_name}.#{control.id}")
|
45
|
+
result_xml.add_attribute("target", run_data.platform.target.nil? ? "" : run_data.platform.target.to_s)
|
46
|
+
result_xml.add_attribute("time", result.run_time)
|
47
47
|
|
48
|
-
if result
|
48
|
+
if result.status == "failed"
|
49
49
|
failure_element = REXML::Element.new("failure")
|
50
50
|
failure_element.add_attribute("message", result[:message])
|
51
51
|
result_xml.add(failure_element)
|
52
|
-
elsif result
|
52
|
+
elsif result.status == "skipped"
|
53
53
|
result_xml.add_element("skipped")
|
54
54
|
end
|
55
55
|
|
@@ -57,19 +57,15 @@ module Inspec::Reporters
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def count_profile_tests(profile)
|
60
|
-
profile
|
61
|
-
acc +
|
60
|
+
profile.controls.reduce(0) do |acc, elem|
|
61
|
+
acc + elem.results.count
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
65
|
def count_profile_failed_tests(profile)
|
66
|
-
profile
|
67
|
-
|
68
|
-
|
69
|
-
else
|
70
|
-
acc + elem[:results].reduce(0) do |fail_test_total, test_case|
|
71
|
-
test_case[:status] == "failed" ? fail_test_total + 1 : fail_test_total
|
72
|
-
end
|
66
|
+
profile.controls.reduce(0) do |acc, elem|
|
67
|
+
acc + elem.results.reduce(0) do |fail_test_total, test_case|
|
68
|
+
test_case.status == "failed" ? fail_test_total + 1 : fail_test_total
|
73
69
|
end
|
74
70
|
end
|
75
71
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inspec-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.23.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chef InSpec Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-telemetry
|
@@ -33,7 +33,7 @@ dependencies:
|
|
33
33
|
version: 0.2.13
|
34
34
|
- - "<"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: '
|
36
|
+
version: '3.0'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: 0.2.13
|
44
44
|
- - "<"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '3.0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: thor
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,16 +68,22 @@ dependencies:
|
|
68
68
|
name: json_schemer
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
70
70
|
requirements:
|
71
|
-
- - "
|
71
|
+
- - ">="
|
72
72
|
- !ruby/object:Gem::Version
|
73
73
|
version: 0.2.1
|
74
|
+
- - "<"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.2.12
|
74
77
|
type: :runtime
|
75
78
|
prerelease: false
|
76
79
|
version_requirements: !ruby/object:Gem::Requirement
|
77
80
|
requirements:
|
78
|
-
- - "
|
81
|
+
- - ">="
|
79
82
|
- !ruby/object:Gem::Version
|
80
83
|
version: 0.2.1
|
84
|
+
- - "<"
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 0.2.12
|
81
87
|
- !ruby/object:Gem::Dependency
|
82
88
|
name: method_source
|
83
89
|
requirement: !ruby/object:Gem::Requirement
|
@@ -314,20 +320,6 @@ dependencies:
|
|
314
320
|
- - "~>"
|
315
321
|
- !ruby/object:Gem::Version
|
316
322
|
version: '3.0'
|
317
|
-
- !ruby/object:Gem::Dependency
|
318
|
-
name: htmlentities
|
319
|
-
requirement: !ruby/object:Gem::Requirement
|
320
|
-
requirements:
|
321
|
-
- - "~>"
|
322
|
-
- !ruby/object:Gem::Version
|
323
|
-
version: '4.3'
|
324
|
-
type: :runtime
|
325
|
-
prerelease: false
|
326
|
-
version_requirements: !ruby/object:Gem::Requirement
|
327
|
-
requirements:
|
328
|
-
- - "~>"
|
329
|
-
- !ruby/object:Gem::Version
|
330
|
-
version: '4.3'
|
331
323
|
- !ruby/object:Gem::Dependency
|
332
324
|
name: multipart-post
|
333
325
|
requirement: !ruby/object:Gem::Requirement
|
@@ -342,20 +334,6 @@ dependencies:
|
|
342
334
|
- - "~>"
|
343
335
|
- !ruby/object:Gem::Version
|
344
336
|
version: '2.0'
|
345
|
-
- !ruby/object:Gem::Dependency
|
346
|
-
name: term-ansicolor
|
347
|
-
requirement: !ruby/object:Gem::Requirement
|
348
|
-
requirements:
|
349
|
-
- - "~>"
|
350
|
-
- !ruby/object:Gem::Version
|
351
|
-
version: '1.7'
|
352
|
-
type: :runtime
|
353
|
-
prerelease: false
|
354
|
-
version_requirements: !ruby/object:Gem::Requirement
|
355
|
-
requirements:
|
356
|
-
- - "~>"
|
357
|
-
- !ruby/object:Gem::Version
|
358
|
-
version: '1.7'
|
359
337
|
- !ruby/object:Gem::Dependency
|
360
338
|
name: train-core
|
361
339
|
requirement: !ruby/object:Gem::Requirement
|
@@ -383,7 +361,6 @@ extra_rdoc_files: []
|
|
383
361
|
files:
|
384
362
|
- Gemfile
|
385
363
|
- LICENSE
|
386
|
-
- README.md
|
387
364
|
- etc/deprecations.json
|
388
365
|
- etc/plugin_filters.json
|
389
366
|
- inspec-core.gemspec
|
@@ -483,7 +460,6 @@ files:
|
|
483
460
|
- lib/inspec/reporters/cli.rb
|
484
461
|
- lib/inspec/reporters/json.rb
|
485
462
|
- lib/inspec/reporters/json_automate.rb
|
486
|
-
- lib/inspec/reporters/junit.rb
|
487
463
|
- lib/inspec/reporters/yaml.rb
|
488
464
|
- lib/inspec/require_loader.rb
|
489
465
|
- lib/inspec/resource.rb
|
@@ -601,6 +577,8 @@ files:
|
|
601
577
|
- lib/inspec/resources/vbscript.rb
|
602
578
|
- lib/inspec/resources/virtualization.rb
|
603
579
|
- lib/inspec/resources/windows_feature.rb
|
580
|
+
- lib/inspec/resources/windows_firewall.rb
|
581
|
+
- lib/inspec/resources/windows_firewall_rule.rb
|
604
582
|
- lib/inspec/resources/windows_hotfix.rb
|
605
583
|
- lib/inspec/resources/windows_registry_key.rb
|
606
584
|
- lib/inspec/resources/windows_task.rb
|
@@ -660,6 +638,7 @@ files:
|
|
660
638
|
- lib/inspec/utils/object_traversal.rb
|
661
639
|
- lib/inspec/utils/parser.rb
|
662
640
|
- lib/inspec/utils/pkey_reader.rb
|
641
|
+
- lib/inspec/utils/run_data_filters.rb
|
663
642
|
- lib/inspec/utils/simpleconfig.rb
|
664
643
|
- lib/inspec/utils/spdx.rb
|
665
644
|
- lib/inspec/utils/spdx.txt
|
@@ -740,6 +719,10 @@ files:
|
|
740
719
|
- lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min.rb
|
741
720
|
- lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/reporter.rb
|
742
721
|
- lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/version.rb
|
722
|
+
- lib/plugins/inspec-reporter-junit/README.md
|
723
|
+
- lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit.rb
|
724
|
+
- lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit/reporter.rb
|
725
|
+
- lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit/version.rb
|
743
726
|
- lib/plugins/shared/core_plugin_test_helper.rb
|
744
727
|
- lib/plugins/things-for-train-integration.rb
|
745
728
|
- lib/source_readers/flat.rb
|