inspec-core 4.20.2 → 4.22.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -1
- data/inspec-core.gemspec +1 -1
- data/lib/inspec/base_cli.rb +1 -1
- data/lib/inspec/cli.rb +6 -5
- data/lib/inspec/config.rb +0 -1
- data/lib/inspec/exceptions.rb +1 -0
- data/lib/inspec/input_registry.rb +2 -1
- data/lib/inspec/metadata.rb +6 -1
- data/lib/inspec/profile.rb +30 -9
- data/lib/inspec/reporters.rb +12 -7
- 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/interface.rb +55 -0
- data/lib/inspec/resources/interfaces.rb +119 -0
- data/lib/inspec/resources/service.rb +1 -1
- data/lib/inspec/run_data.rb +10 -3
- data/lib/inspec/run_data/profile.rb +4 -4
- 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/telemetry/run_context_probe.rb +48 -0
- data/lib/inspec/version.rb +1 -1
- data/lib/plugins/inspec-reporter-html2/README.md +53 -0
- data/lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2.rb +18 -0
- data/lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2/reporter.rb +24 -0
- data/lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2/version.rb +8 -0
- data/lib/plugins/inspec-reporter-html2/templates/body.html.erb +46 -0
- data/lib/plugins/inspec-reporter-html2/templates/control.html.erb +77 -0
- data/lib/plugins/inspec-reporter-html2/templates/default.css +107 -0
- data/lib/plugins/inspec-reporter-html2/templates/default.js +79 -0
- data/lib/plugins/inspec-reporter-html2/templates/profile.html.erb +23 -0
- data/lib/plugins/inspec-reporter-html2/templates/result.html.erb +15 -0
- data/lib/plugins/inspec-reporter-html2/templates/selector.html.erb +8 -0
- data/lib/plugins/inspec-reporter-json-min/README.md +10 -0
- data/lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min.rb +13 -0
- data/lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/reporter.rb +50 -0
- data/lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/version.rb +5 -0
- metadata +21 -5
- data/lib/inspec/reporters/json_min.rb +0 -48
@@ -0,0 +1,79 @@
|
|
1
|
+
|
2
|
+
/* CSS primitives */
|
3
|
+
function addCssClass(id, cls) {
|
4
|
+
document.getElementById(id).className += (" " + cls);
|
5
|
+
}
|
6
|
+
|
7
|
+
function removeCssClass(id, cls) {
|
8
|
+
var el = document.getElementById(id);
|
9
|
+
var classes = el.className.replace(cls,'');
|
10
|
+
el.className = classes;
|
11
|
+
}
|
12
|
+
|
13
|
+
function handleShowSource(evt) {
|
14
|
+
var control_id = evt.srcElement.id.replace("show-code-", "")
|
15
|
+
addCssClass(evt.srcElement.id, "hidden")
|
16
|
+
removeCssClass("hide-code-" + control_id, "hidden")
|
17
|
+
removeCssClass("source-code-" + control_id, "hidden")
|
18
|
+
}
|
19
|
+
|
20
|
+
function handleHideSource(evt) {
|
21
|
+
var control_id = evt.srcElement.id.replace("hide-code-", "")
|
22
|
+
addCssClass(evt.srcElement.id, "hidden")
|
23
|
+
addCssClass("source-code-" + control_id, "hidden")
|
24
|
+
removeCssClass("show-code-" + control_id, "hidden")
|
25
|
+
}
|
26
|
+
|
27
|
+
function handleSelectorChange(evt) {
|
28
|
+
var should_show = evt.srcElement.checked
|
29
|
+
var which_group = evt.srcElement.id.replace("-checkbox","")
|
30
|
+
var controls = document.getElementsByClassName("control-status-" + which_group)
|
31
|
+
var i;
|
32
|
+
if (should_show) {
|
33
|
+
for (i = 0; i < controls.length; i++) {
|
34
|
+
removeCssClass(controls[i].id, "hidden")
|
35
|
+
}
|
36
|
+
} else {
|
37
|
+
for (i = 0; i < controls.length; i++) {
|
38
|
+
addCssClass(controls[i].id, "hidden")
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
function handleChildProfileChange(evt) {
|
44
|
+
var should_show = evt.srcElement.checked
|
45
|
+
var child_profiles = document.getElementsByClassName("child-profile")
|
46
|
+
var i;
|
47
|
+
if (should_show) {
|
48
|
+
for (i = 0; i < child_profiles.length; i++) {
|
49
|
+
removeCssClass(child_profiles[i].id, "hidden")
|
50
|
+
}
|
51
|
+
} else {
|
52
|
+
for (i = 0; i < child_profiles.length; i++) {
|
53
|
+
addCssClass(child_profiles[i].id, "hidden")
|
54
|
+
}
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
/* Main entry point */
|
59
|
+
function pageLoaded() {
|
60
|
+
var i;
|
61
|
+
|
62
|
+
// wire up show source links
|
63
|
+
var show_links = document.getElementsByClassName("show-source-code");
|
64
|
+
for (i = 0; i < show_links.length; i++) {
|
65
|
+
show_links[i].onclick = handleShowSource;
|
66
|
+
}
|
67
|
+
// wire up hide source links
|
68
|
+
var hide_links = document.getElementsByClassName("hide-source-code");
|
69
|
+
for (i = 0; i < hide_links.length; i++) {
|
70
|
+
hide_links[i].onclick = handleHideSource;
|
71
|
+
}
|
72
|
+
// wire up selector checkboxes
|
73
|
+
var selectors = document.getElementsByClassName("selector-checkbox");
|
74
|
+
for (i = 0; i < selectors.length; i++) {
|
75
|
+
selectors[i].onchange = handleSelectorChange;
|
76
|
+
}
|
77
|
+
// wire up child profile checkbox
|
78
|
+
document.getElementById("child-profile-checkbox").onchange = handleChildProfileChange;
|
79
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<div class="profile <%= profile.parent_profile ? "child-profile hidden" : "" %>" id="profile-<%= profile.name %>">
|
2
|
+
<% display_name = profile.title || profile.name %>
|
3
|
+
<h2 class="profile_title">Profile <%= display_name %> (<%= profile.name %>)</h2>
|
4
|
+
|
5
|
+
<table class="profile-metadata info" id="profile-metadata-<%= profile.name %>">
|
6
|
+
<tr class="profile-version"><th>Version:</th><td><%= profile.version %></td></tr>
|
7
|
+
<% if profile.summary %>
|
8
|
+
<tr class="profile-summary"><th>Summary:</th><td><%= profile.summary %></td></tr>
|
9
|
+
<% end %>
|
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>
|
15
|
+
<% end %>
|
16
|
+
</table>
|
17
|
+
|
18
|
+
<% if profile.status == "loaded" %>
|
19
|
+
<% profile.controls.each do |control| %>
|
20
|
+
<%= ERB.new(File.read(template_path + "/control.html.erb"), nil, nil, "_ctl").result(binding) %>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<% slugged_id = result.resource_title.to_s.gsub(/\W/, "_") %>
|
2
|
+
<div class="result" id="result-<%= slugged_id %>">
|
3
|
+
<h4 class="resource-title">Resource <code><%= result.resource_title.to_s %></code></h4>
|
4
|
+
<table class="result-metadata info">
|
5
|
+
<tr class="expectation_message"><th>Test:</th><td><code><%= result.expectation_message %></code></td></tr>
|
6
|
+
<tr class="status status-<%= result.status %>"><th>Status:</th><td><div><%= result.status.capitalize %></div></td></tr>
|
7
|
+
<% if result.status == "failed" %>
|
8
|
+
<tr class="fail_message"><th>Failure Message:</th><td><code><%= result.message %></code></td></tr>
|
9
|
+
<% end %>
|
10
|
+
<% if result.status == "skipped" %>
|
11
|
+
<tr class="skip_message"><th>Skip Message:</th><td><%= result.skip_message %></td></tr>
|
12
|
+
<% end %>
|
13
|
+
<tr class="duration"><th>Duration:</th><td><%= result.run_time %> seconds</td></tr>
|
14
|
+
</table>
|
15
|
+
</div>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div class="selector-panel">
|
2
|
+
<p id="selector-instructions">Display controls that are:</p>
|
3
|
+
<input class="selector-checkbox" id="passed-checkbox" type="checkbox" checked="checked"/><label for="passed-checkbox">Passed</label>
|
4
|
+
<input class="selector-checkbox" id="skipped-checkbox" type="checkbox" checked="checked"/><label for="skipped-checkbox">Skipped</label>
|
5
|
+
<input class="selector-checkbox" id="failed-checkbox" type="checkbox" checked="checked"/><label for="failed-checkbox">Failed</label>
|
6
|
+
<p id="selector-instructions">Display profiles that are:</p>
|
7
|
+
<input class="profile-selector-checkbox" id="child-profile-checkbox" type="checkbox" /><label for="child-profile-checkbox">Dependent Profiles</label>
|
8
|
+
</div>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# JSON Minimal Reporter Plugin
|
2
|
+
|
3
|
+
## To Install This Plugin
|
4
|
+
|
5
|
+
This plugin is included with InSpec. There is no need to install it.
|
6
|
+
|
7
|
+
## What This Plugin Does
|
8
|
+
|
9
|
+
This plugin provides the `json-min` reporter, which produces test output in JSON format with less detail than the `json` reporter.
|
10
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative "inspec-reporter-json-min/version"
|
2
|
+
|
3
|
+
module InspecPlugins
|
4
|
+
module JsonMinReporter
|
5
|
+
class Plugin < ::Inspec.plugin(2)
|
6
|
+
plugin_name :"inspec-reporter-json-min"
|
7
|
+
reporter :"json-min" do
|
8
|
+
require_relative "inspec-reporter-json-min/reporter"
|
9
|
+
InspecPlugins::JsonMinReporter::Reporter
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "json"
|
2
|
+
|
3
|
+
module InspecPlugins::JsonMinReporter
|
4
|
+
class Reporter < Inspec.plugin(2, :reporter)
|
5
|
+
def self.run_data_schema_constraints
|
6
|
+
"~> 0.0"
|
7
|
+
end
|
8
|
+
|
9
|
+
def render
|
10
|
+
output(report.to_json, false)
|
11
|
+
end
|
12
|
+
|
13
|
+
def report # rubocop:disable Metrics/AbcSize
|
14
|
+
report = {
|
15
|
+
controls: [],
|
16
|
+
statistics: { duration: run_data.statistics.duration },
|
17
|
+
version: run_data.version,
|
18
|
+
}
|
19
|
+
|
20
|
+
# collect all test results and add them to the report
|
21
|
+
run_data.profiles.each do |profile|
|
22
|
+
profile_id = profile.name
|
23
|
+
|
24
|
+
profile.controls.each do |control|
|
25
|
+
control_id = control.id
|
26
|
+
|
27
|
+
control.results.each do |result|
|
28
|
+
result_for_report = {
|
29
|
+
id: control_id,
|
30
|
+
profile_id: profile_id,
|
31
|
+
profile_sha256: profile.sha256,
|
32
|
+
status: result.status,
|
33
|
+
code_desc: result.code_desc,
|
34
|
+
}
|
35
|
+
|
36
|
+
result_for_report[:skip_message] = result.skip_message if result.non_nil?(:skip_message)
|
37
|
+
result_for_report[:resource] = result.resource if result.non_nil?(:resource)
|
38
|
+
result_for_report[:message] = result.message if result.non_nil?(:message)
|
39
|
+
result_for_report[:exception] = result.exception if result.non_nil?(:exception)
|
40
|
+
result_for_report[:backtrace] = result.backtrace if result.non_nil?(:backtrace)
|
41
|
+
|
42
|
+
report[:controls] << result_for_report
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
report
|
48
|
+
end
|
49
|
+
end
|
50
|
+
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.22.0
|
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-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-telemetry
|
@@ -264,14 +264,14 @@ dependencies:
|
|
264
264
|
requirements:
|
265
265
|
- - "~>"
|
266
266
|
- !ruby/object:Gem::Version
|
267
|
-
version:
|
267
|
+
version: 1.2.0
|
268
268
|
type: :runtime
|
269
269
|
prerelease: false
|
270
270
|
version_requirements: !ruby/object:Gem::Requirement
|
271
271
|
requirements:
|
272
272
|
- - "~>"
|
273
273
|
- !ruby/object:Gem::Version
|
274
|
-
version:
|
274
|
+
version: 1.2.0
|
275
275
|
- !ruby/object:Gem::Dependency
|
276
276
|
name: addressable
|
277
277
|
requirement: !ruby/object:Gem::Requirement
|
@@ -483,7 +483,6 @@ files:
|
|
483
483
|
- lib/inspec/reporters/cli.rb
|
484
484
|
- lib/inspec/reporters/json.rb
|
485
485
|
- lib/inspec/reporters/json_automate.rb
|
486
|
-
- lib/inspec/reporters/json_min.rb
|
487
486
|
- lib/inspec/reporters/junit.rb
|
488
487
|
- lib/inspec/reporters/yaml.rb
|
489
488
|
- lib/inspec/require_loader.rb
|
@@ -537,6 +536,7 @@ files:
|
|
537
536
|
- lib/inspec/resources/inetd_conf.rb
|
538
537
|
- lib/inspec/resources/ini.rb
|
539
538
|
- lib/inspec/resources/interface.rb
|
539
|
+
- lib/inspec/resources/interfaces.rb
|
540
540
|
- lib/inspec/resources/ip6tables.rb
|
541
541
|
- lib/inspec/resources/iptables.rb
|
542
542
|
- lib/inspec/resources/json.rb
|
@@ -667,6 +667,7 @@ files:
|
|
667
667
|
- lib/inspec/utils/telemetry/collector.rb
|
668
668
|
- lib/inspec/utils/telemetry/data_series.rb
|
669
669
|
- lib/inspec/utils/telemetry/global_methods.rb
|
670
|
+
- lib/inspec/utils/telemetry/run_context_probe.rb
|
670
671
|
- lib/inspec/version.rb
|
671
672
|
- lib/matchers/matchers.rb
|
672
673
|
- lib/plugins/README.md
|
@@ -724,6 +725,21 @@ files:
|
|
724
725
|
- lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb
|
725
726
|
- lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb
|
726
727
|
- lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb
|
728
|
+
- lib/plugins/inspec-reporter-html2/README.md
|
729
|
+
- lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2.rb
|
730
|
+
- lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2/reporter.rb
|
731
|
+
- lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2/version.rb
|
732
|
+
- lib/plugins/inspec-reporter-html2/templates/body.html.erb
|
733
|
+
- lib/plugins/inspec-reporter-html2/templates/control.html.erb
|
734
|
+
- lib/plugins/inspec-reporter-html2/templates/default.css
|
735
|
+
- lib/plugins/inspec-reporter-html2/templates/default.js
|
736
|
+
- lib/plugins/inspec-reporter-html2/templates/profile.html.erb
|
737
|
+
- lib/plugins/inspec-reporter-html2/templates/result.html.erb
|
738
|
+
- lib/plugins/inspec-reporter-html2/templates/selector.html.erb
|
739
|
+
- lib/plugins/inspec-reporter-json-min/README.md
|
740
|
+
- lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min.rb
|
741
|
+
- lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/reporter.rb
|
742
|
+
- lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/version.rb
|
727
743
|
- lib/plugins/shared/core_plugin_test_helper.rb
|
728
744
|
- lib/plugins/things-for-train-integration.rb
|
729
745
|
- lib/source_readers/flat.rb
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require "json"
|
2
|
-
|
3
|
-
module Inspec::Reporters
|
4
|
-
class JsonMin < Base
|
5
|
-
def render
|
6
|
-
output(report.to_json, false)
|
7
|
-
end
|
8
|
-
|
9
|
-
def report # rubocop:disable Metrics/AbcSize
|
10
|
-
report = {
|
11
|
-
controls: [],
|
12
|
-
statistics: { duration: run_data[:statistics][:duration] },
|
13
|
-
version: run_data[:version],
|
14
|
-
}
|
15
|
-
|
16
|
-
# collect all test results and add them to the report
|
17
|
-
run_data[:profiles].each do |profile|
|
18
|
-
profile_id = profile[:name]
|
19
|
-
next unless profile[:controls]
|
20
|
-
|
21
|
-
profile[:controls].each do |control|
|
22
|
-
control_id = control[:id]
|
23
|
-
next unless control[:results]
|
24
|
-
|
25
|
-
control[:results].each do |result|
|
26
|
-
result_for_report = {
|
27
|
-
id: control_id,
|
28
|
-
profile_id: profile_id,
|
29
|
-
profile_sha256: profile[:sha256],
|
30
|
-
status: result[:status],
|
31
|
-
code_desc: result[:code_desc],
|
32
|
-
}
|
33
|
-
|
34
|
-
result_for_report[:skip_message] = result[:skip_message] if result.key?(:skip_message)
|
35
|
-
result_for_report[:resource] = result[:resource] if result.key?(:resource)
|
36
|
-
result_for_report[:message] = result[:message] if result.key?(:message)
|
37
|
-
result_for_report[:exception] = result[:exception] if result.key?(:exception)
|
38
|
-
result_for_report[:backtrace] = result[:backtrace] if result.key?(:backtrace)
|
39
|
-
|
40
|
-
report[:controls] << result_for_report
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
report
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|