inspec-core 4.23.4 → 4.24.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +16 -33
  3. data/inspec-core.gemspec +8 -9
  4. data/lib/bundles/inspec-supermarket/api.rb +2 -2
  5. data/lib/bundles/inspec-supermarket/target.rb +1 -1
  6. data/lib/inspec/archive/tar.rb +1 -1
  7. data/lib/inspec/archive/zip.rb +3 -3
  8. data/lib/inspec/base_cli.rb +7 -1
  9. data/lib/inspec/cached_fetcher.rb +1 -1
  10. data/lib/inspec/cli.rb +5 -3
  11. data/lib/inspec/config.rb +5 -5
  12. data/lib/inspec/dependencies/cache.rb +1 -1
  13. data/lib/inspec/env_printer.rb +2 -2
  14. data/lib/inspec/fetcher/git.rb +3 -3
  15. data/lib/inspec/fetcher/local.rb +1 -1
  16. data/lib/inspec/fetcher/url.rb +4 -4
  17. data/lib/inspec/file_provider.rb +4 -4
  18. data/lib/inspec/formatters/base.rb +16 -0
  19. data/lib/inspec/globals.rb +8 -2
  20. data/lib/inspec/input.rb +3 -0
  21. data/lib/inspec/input_registry.rb +5 -3
  22. data/lib/inspec/metadata.rb +1 -1
  23. data/lib/inspec/plugin/v1/plugins.rb +2 -2
  24. data/lib/inspec/plugin/v2.rb +5 -0
  25. data/lib/inspec/plugin/v2/config_file.rb +1 -1
  26. data/lib/inspec/plugin/v2/filter.rb +2 -2
  27. data/lib/inspec/plugin/v2/installer.rb +5 -5
  28. data/lib/inspec/plugin/v2/loader.rb +6 -1
  29. data/lib/inspec/plugin/v2/registry.rb +2 -2
  30. data/lib/inspec/profile.rb +3 -3
  31. data/lib/inspec/profile_context.rb +1 -1
  32. data/lib/inspec/reporters/automate.rb +2 -2
  33. data/lib/inspec/reporters/json.rb +3 -1
  34. data/lib/inspec/reporters/json_automate.rb +1 -1
  35. data/lib/inspec/resource.rb +2 -0
  36. data/lib/inspec/resources.rb +5 -5
  37. data/lib/inspec/resources/apt.rb +6 -6
  38. data/lib/inspec/resources/auditd.rb +1 -1
  39. data/lib/inspec/resources/csv.rb +1 -1
  40. data/lib/inspec/resources/dh_params.rb +1 -1
  41. data/lib/inspec/resources/file.rb +1 -1
  42. data/lib/inspec/resources/grub_conf.rb +2 -1
  43. data/lib/inspec/resources/http.rb +1 -1
  44. data/lib/inspec/resources/iis_website.rb +1 -1
  45. data/lib/inspec/resources/interfaces.rb +1 -1
  46. data/lib/inspec/resources/json.rb +2 -2
  47. data/lib/inspec/resources/key_rsa.rb +1 -1
  48. data/lib/inspec/resources/mssql_session.rb +5 -1
  49. data/lib/inspec/resources/mysql_session.rb +1 -1
  50. data/lib/inspec/resources/nginx.rb +1 -1
  51. data/lib/inspec/resources/nginx_conf.rb +1 -1
  52. data/lib/inspec/resources/npm.rb +1 -1
  53. data/lib/inspec/resources/oracledb_session.rb +1 -1
  54. data/lib/inspec/resources/package.rb +1 -1
  55. data/lib/inspec/resources/parse_config.rb +5 -2
  56. data/lib/inspec/resources/platform.rb +11 -1
  57. data/lib/inspec/resources/port.rb +1 -1
  58. data/lib/inspec/resources/postgres_session.rb +1 -1
  59. data/lib/inspec/resources/ppa.rb +1 -1
  60. data/lib/inspec/resources/processes.rb +1 -1
  61. data/lib/inspec/resources/rabbitmq_conf.rb +1 -1
  62. data/lib/inspec/resources/registry_key.rb +1 -1
  63. data/lib/inspec/resources/sshd_config.rb +1 -1
  64. data/lib/inspec/resources/ssl.rb +2 -2
  65. data/lib/inspec/resources/toml.rb +1 -1
  66. data/lib/inspec/resources/vbscript.rb +1 -1
  67. data/lib/inspec/resources/windows_registry_key.rb +1 -1
  68. data/lib/inspec/resources/wmi.rb +16 -8
  69. data/lib/inspec/resources/x509_certificate.rb +1 -1
  70. data/lib/inspec/resources/xml.rb +1 -1
  71. data/lib/inspec/rule.rb +8 -8
  72. data/lib/inspec/run_data.rb +1 -1
  73. data/lib/inspec/run_data/result.rb +2 -0
  74. data/lib/inspec/runner.rb +2 -2
  75. data/lib/inspec/schema.rb +3 -1
  76. data/lib/inspec/schema/exec_json.rb +1 -1
  77. data/lib/inspec/schema/output_schema.rb +1 -1
  78. data/lib/inspec/schema/primitives.rb +1 -1
  79. data/lib/inspec/shell.rb +3 -3
  80. data/lib/inspec/shell_detector.rb +2 -2
  81. data/lib/inspec/utils/command_wrapper.rb +1 -1
  82. data/lib/inspec/utils/deprecation/config_file.rb +2 -2
  83. data/lib/inspec/utils/json_log.rb +1 -1
  84. data/lib/inspec/utils/telemetry/collector.rb +1 -1
  85. data/lib/inspec/utils/telemetry/data_series.rb +1 -1
  86. data/lib/inspec/version.rb +1 -1
  87. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +5 -5
  88. data/lib/plugins/inspec-compliance/README.md +1 -1
  89. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +3 -3
  90. data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +2 -2
  91. data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +2 -2
  92. data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +3 -3
  93. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +1 -1
  94. data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +1 -1
  95. data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +2 -2
  96. data/lib/plugins/inspec-init/templates/profiles/aws/README.md +1 -1
  97. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +3 -3
  98. data/lib/plugins/inspec-reporter-html2/README.md +1 -1
  99. data/lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2/reporter.rb +1 -1
  100. data/lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/reporter.rb +1 -1
  101. data/lib/plugins/inspec-reporter-junit/README.md +9 -7
  102. data/lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit.rb +10 -1
  103. data/lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit/reporter.rb +94 -12
  104. data/lib/plugins/shared/core_plugin_test_helper.rb +6 -22
  105. metadata +44 -40
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2786d0d36c3218a4d79f4578c4a814469115787d4470fa81d422b05b2025462
4
- data.tar.gz: a0d30c7b81dbb4e58e6b9e8c0447f0855ce1f94f223c1f4f5861a03dfce2ce6c
3
+ metadata.gz: bfed5976ebd618d37b1fbf0058fbd9389b243dbd5070444fda7558cf309392c3
4
+ data.tar.gz: 3b894051f2f56e249af59acf0de10c50d8a826d3af1755eaf60100a7a4934dab
5
5
  SHA512:
6
- metadata.gz: 915bbf9f4302c5fe2e8a41bc131b935bc42861cd4f76d0163ef1aeddc231cdbaf1f653ffd621bb79e5a531baa941e59852b34550d114bf30d95d4eb2ff5aa876
7
- data.tar.gz: d7b5f80f550bf092aaa0faaf660225f99e3e4d6b600d9a89a45c0648b752a00cac5e30aaaf74fdb940bb135b2ae2ae02112f9617adbe6c25abc46c10d9492c5d
6
+ metadata.gz: c1d9b3598a4bc81085d95b5a4b254ac57001aa301e4371394b8b8b307b54ed26644784ccf9dafd2e52d4e2553e5c1ff77ae821691ef738e542f13d892f692f81
7
+ data.tar.gz: 54f9be8adc1870127be3e825e809499270717d395fa26d11408f186a66fdb61ca7db0ac78fd73143652893bd482acf2d1009c3343609e8b34bcd3ff3eb0aaa0c
data/Gemfile CHANGED
@@ -11,6 +11,11 @@ gem "inspec-bin", path: "./inspec-bin"
11
11
 
12
12
  gem "ffi", ">= 1.9.14", "!= 1.13.0"
13
13
 
14
+ if Gem.ruby_version.to_s.start_with?("2.5")
15
+ # 16.7.23 required ruby 2.6+
16
+ gem "chef-utils", "< 16.7.23" # TODO: remove when we drop ruby 2.5
17
+ end
18
+
14
19
  group :omnibus do
15
20
  gem "rb-readline"
16
21
  gem "appbundler"
@@ -19,45 +24,23 @@ group :omnibus do
19
24
  end
20
25
 
21
26
  group :test do
22
- gem "chefstyle", "~> 1.2.1"
23
- gem "minitest", "~> 5.5"
24
- gem "minitest-sprint", "~> 1.0"
25
- gem "rake", ">= 10"
26
- gem "simplecov", ["~> 0.10", "<=0.18.2"]
27
+ gem "chefstyle", "~> 1.5.7"
27
28
  gem "concurrent-ruby", "~> 1.0"
29
+ gem "html-proofer", platforms: :ruby # do not attempt to run proofer on windows
30
+ gem "json_schemer", ">= 0.2.1", "< 0.2.12"
31
+ gem "m"
32
+ gem "minitest-sprint", "~> 1.0"
33
+ gem "minitest", "~> 5.5"
28
34
  gem "mocha", "~> 1.1"
35
+ gem "nokogiri", "~> 1.9"
36
+ gem "pry-byebug"
37
+ gem "pry", "~> 0.10"
38
+ gem "rake", ">= 10"
29
39
  gem "ruby-progressbar", "~> 1.8"
40
+ gem "simplecov", "~> 0.18"
30
41
  gem "webmock", "~> 3.0"
31
- gem "m"
32
- gem "pry", "~> 0.10"
33
- gem "pry-byebug"
34
- gem "html-proofer", platforms: :ruby # do not attempt to run proofer on windows
35
- end
36
-
37
- group :integration do
38
- gem "berkshelf"
39
- gem "test-kitchen"
40
- gem "kitchen-vagrant"
41
- gem "chef", "< 15"
42
- gem "chef-zero", "< 15"
43
- gem "kitchen-inspec"
44
- gem "kitchen-ec2"
45
- gem "kitchen-dokken"
46
- gem "git"
47
- end
48
-
49
- # gems for Maintainers.md generation
50
- group :maintenance do
51
- gem "tomlrb"
52
-
53
- # To sync maintainers with github
54
- gem "octokit"
55
- gem "netrc"
56
42
  end
57
43
 
58
44
  group :deploy do
59
45
  gem "inquirer"
60
46
  end
61
-
62
- # add these additional dependencies into Gemfile.local
63
- eval_gemfile(__FILE__ + ".local") if File.exist?(__FILE__ + ".local")
@@ -1,4 +1,4 @@
1
- lib = File.expand_path("../lib", __FILE__)
1
+ lib = File.expand_path("lib", __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require "inspec/version"
4
4
 
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.license = "Apache-2.0"
14
14
  spec.require_paths = ["lib"]
15
15
 
16
- spec.required_ruby_version = "~> 2.4"
16
+ spec.required_ruby_version = ">= 2.5"
17
17
 
18
18
  # the gemfile and gemspec are necessary for appbundler so don't remove it
19
19
  spec.files =
@@ -26,22 +26,21 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency "chef-telemetry", "~> 1.0"
27
27
  spec.add_dependency "license-acceptance", ">= 0.2.13", "< 3.0"
28
28
  spec.add_dependency "thor", ">= 0.20", "< 2.0"
29
- spec.add_dependency "json_schemer", ">= 0.2.1", "< 0.2.12"
30
29
  spec.add_dependency "method_source", ">= 0.8", "< 2.0"
31
- spec.add_dependency "rubyzip", "~> 1.2", ">= 1.2.2"
32
- spec.add_dependency "rspec", "~> 3.9"
30
+ spec.add_dependency "rubyzip", ">= 1.2.2", "< 3.0"
31
+ spec.add_dependency "rspec", "~> 3.10"
33
32
  spec.add_dependency "rspec-its", "~> 1.2"
34
33
  spec.add_dependency "pry", "~> 0.13"
35
- spec.add_dependency "hashie", "~> 3.4"
34
+ spec.add_dependency "hashie", ">= 3.4", "< 5.0"
36
35
  spec.add_dependency "mixlib-log", "~> 3.0"
37
36
  spec.add_dependency "sslshake", "~> 1.2"
38
37
  spec.add_dependency "parallel", "~> 1.9"
39
- spec.add_dependency "faraday", ">= 0.9.0"
38
+ spec.add_dependency "faraday", ">= 0.9.0", "< 1.2"
40
39
  spec.add_dependency "tty-table", "~> 0.10"
41
40
  spec.add_dependency "tty-prompt", "~> 0.17"
42
- spec.add_dependency "tomlrb", "~> 1.2.0"
41
+ spec.add_dependency "tomlrb", ">= 1.2", "< 2.1"
43
42
  spec.add_dependency "addressable", "~> 2.4"
44
- spec.add_dependency "parslet", "~> 1.5"
43
+ spec.add_dependency "parslet", ">= 1.5", "< 3.0"
45
44
  spec.add_dependency "semverse", "~> 3.0"
46
45
  spec.add_dependency "multipart-post", "~> 2.0"
47
46
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "net/http"
4
- require "addressable/uri"
3
+ require "net/http" unless defined?(Net::HTTP)
4
+ require "addressable/uri" unless defined?(Addressable::URI)
5
5
 
6
6
  module Supermarket
7
7
  class API
@@ -1,4 +1,4 @@
1
- require "uri"
1
+ require "uri" unless defined?(URI)
2
2
  require "inspec/fetcher"
3
3
  require "inspec/fetcher/url"
4
4
 
@@ -1,4 +1,4 @@
1
- require "rubygems/package"
1
+ require "rubygems/package" unless defined?(Gem::Package)
2
2
 
3
3
  module Inspec::Archive
4
4
  class TarArchiveGenerator
@@ -1,6 +1,6 @@
1
- require "rubygems"
2
- require "zip"
3
- require "pathname"
1
+ require "rubygems" unless defined?(Gem)
2
+ require "zip" unless defined?(Zip)
3
+ require "pathname" unless defined?(Pathname)
4
4
 
5
5
  module Inspec::Archive
6
6
  class ZipArchiveGenerator
@@ -1,4 +1,4 @@
1
- require "thor"
1
+ require "thor" unless defined?(Thor)
2
2
  require "inspec/log"
3
3
  require "inspec/ui"
4
4
  require "inspec/config"
@@ -164,6 +164,12 @@ module Inspec
164
164
  desc: "After normal execution order, results are sorted by control ID, or by file (default), or randomly. None uses legacy unsorted mode."
165
165
  end
166
166
 
167
+ def self.help(*args)
168
+ super(*args)
169
+ puts "\nAbout #{Inspec::Dist::PRODUCT_NAME}:"
170
+ puts " Patents: chef.io/patents\n\n"
171
+ end
172
+
167
173
  def self.format_platform_info(params: {}, indent: 0, color: 39)
168
174
  str = ""
169
175
  params.each do |item, info|
@@ -1,5 +1,5 @@
1
1
  require "inspec/fetcher"
2
- require "forwardable"
2
+ require "forwardable" unless defined?(Forwardable)
3
3
 
4
4
  module Inspec
5
5
  class CachedFetcher
@@ -48,7 +48,8 @@ class Inspec::InspecCLI < Inspec::BaseCLI
48
48
  desc: "Allow or disable user interaction"
49
49
 
50
50
  class_option :disable_core_plugins, type: :string, banner: "", # Actually a boolean, but this suppresses the creation of a --no-disable...
51
- desc: "Disable loading all plugins that are shipped in the lib/plugins directory of InSpec. Useful in development."
51
+ desc: "Disable loading all plugins that are shipped in the lib/plugins directory of InSpec. Useful in development.",
52
+ hide: true
52
53
 
53
54
  class_option :disable_user_plugins, type: :string, banner: "",
54
55
  desc: "Disable loading all plugins that the user installed."
@@ -66,7 +67,7 @@ class Inspec::InspecCLI < Inspec::BaseCLI
66
67
  desc: "A list of controls to include. Ignore all other tests."
67
68
  profile_options
68
69
  def json(target)
69
- require "json"
70
+ require "json" unless defined?(JSON)
70
71
 
71
72
  o = config
72
73
  diagnose(o)
@@ -194,7 +195,8 @@ class Inspec::InspecCLI < Inspec::BaseCLI
194
195
  pretty_handle_exception(e)
195
196
  end
196
197
 
197
- desc "exec LOCATIONS", <<~EOT
198
+ desc "exec LOCATIONS", "Run all tests at LOCATIONS."
199
+ long_desc <<~EOT
198
200
  Run all test files at the specified LOCATIONS.
199
201
 
200
202
  Loads the given profile(s) and fetches their dependencies if needed. Then
@@ -1,11 +1,11 @@
1
1
  # Represents InSpec configuration. Merges defaults, config file options,
2
2
  # and CLI arguments.
3
3
 
4
- require "pp"
5
- require "stringio"
6
- require "forwardable"
7
- require "thor"
8
- require "base64"
4
+ require "pp" unless defined?(PP)
5
+ require "stringio" unless defined?(StringIO)
6
+ require "forwardable" unless defined?(Forwardable)
7
+ require "thor" unless defined?(Thor)
8
+ require "base64" unless defined?(Base64)
9
9
  require "inspec/plugin/v2/filter"
10
10
 
11
11
  module Inspec
@@ -1,4 +1,4 @@
1
- require "fileutils"
1
+ require "fileutils" unless defined?(FileUtils)
2
2
 
3
3
  module Inspec
4
4
  #
@@ -1,6 +1,6 @@
1
1
  require "inspec/shell_detector"
2
- require "erb"
3
- require "shellwords"
2
+ require "erb" unless defined?(Erb)
3
+ require "shellwords" unless defined?(Shellwords)
4
4
 
5
5
  module Inspec
6
6
  class EnvPrinter
@@ -1,6 +1,6 @@
1
- require "tmpdir"
2
- require "fileutils"
3
- require "mixlib/shellout"
1
+ require "tmpdir" unless defined?(Dir.mktmpdir)
2
+ require "fileutils" unless defined?(FileUtils)
3
+ require "mixlib/shellout" unless defined?(Mixlib::ShellOut)
4
4
  require "inspec/log"
5
5
 
6
6
  module Inspec::Fetcher
@@ -1,4 +1,4 @@
1
- require "openssl"
1
+ require "openssl" unless defined?(OpenSSL)
2
2
 
3
3
  module Inspec::Fetcher
4
4
  class Local < Inspec.fetcher(1)
@@ -1,7 +1,7 @@
1
- require "uri"
2
- require "openssl"
3
- require "tempfile"
4
- require "open-uri"
1
+ require "uri" unless defined?(URI)
2
+ require "openssl" unless defined?(OpenSSL)
3
+ require "tempfile" unless defined?(Tempfile)
4
+ require "open-uri" unless defined?(OpenURI)
5
5
 
6
6
  module Inspec::Fetcher
7
7
  class Url < Inspec.fetcher(1)
@@ -1,7 +1,7 @@
1
- require "rubygems/package"
2
- require "pathname"
3
- require "zlib"
4
- require "zip"
1
+ require "rubygems/package" unless defined?(Gem::Package)
2
+ require "pathname" unless defined?(Pathname)
3
+ require "zlib" unless defined?(Zlib)
4
+ require "zip" unless defined?(Zip)
5
5
 
6
6
  module Inspec
7
7
  class FileProvider
@@ -159,6 +159,14 @@ module Inspec::Formatters
159
159
  resource_title: example.metadata[:described_class] || example.metadata[:example_group][:description],
160
160
  expectation_message: format_expectation_message(example),
161
161
  waiver_data: example.metadata[:waiver_data],
162
+ # This enforces the resource name as expected based off of the class
163
+ # name. However, if we wanted the `name` attribute against the class
164
+ # to be canonical for this case (consider edge cases!) we would use
165
+ # example.metadata[:described_class].instance_variable_get(:@__resource_name__)&.to_s
166
+ resource_class: example.metadata[:described_class].class.superclass.name,
167
+ # This is a raw grep of the text passed to the resource in any format,
168
+ # and is used to enforce near-uniqueness against the resource.
169
+ resource_params: find_resource_params(example.metadata[:described_class]),
162
170
  }
163
171
 
164
172
  unless (pid = example.metadata[:profile_id]).nil?
@@ -174,6 +182,14 @@ module Inspec::Formatters
174
182
  res
175
183
  end
176
184
 
185
+ def find_resource_params(example)
186
+ if example.class.ancestors.include?(Inspec::Resource)
187
+ example.instance_variable_get(:@resource_params)
188
+ else
189
+ []
190
+ end
191
+ end
192
+
177
193
  def format_expectation_message(example)
178
194
  if (example.metadata[:example_group][:description_args].first == example.metadata[:example_group][:described_class]) ||
179
195
  example.metadata[:example_group][:described_class].nil?
@@ -1,15 +1,21 @@
1
1
  require_relative "utils/install_context"
2
2
 
3
3
  module Inspec
4
-
5
4
  extend Inspec::InstallContextHelpers
6
5
 
7
6
  def self.config_dir
8
- ENV["INSPEC_CONFIG_DIR"] ? ENV["INSPEC_CONFIG_DIR"] : File.join(Dir.home, ".inspec")
7
+ ENV["INSPEC_CONFIG_DIR"] || File.join(home_path, ".inspec")
9
8
  end
10
9
 
11
10
  def self.src_root
12
11
  @src_root ||= File.expand_path(File.join(__FILE__, "../../.."))
13
12
  end
14
13
 
14
+ def self.home_path
15
+ Dir.home
16
+ rescue ArgumentError, NoMethodError
17
+ # If ENV['HOME'] is not set, Dir.home will fail due to expanding the ~. Fallback to Etc.
18
+ require "etc" unless defined?(Etc)
19
+ Etc.getpwuid.dir
20
+ end
15
21
  end
@@ -14,14 +14,17 @@ module Inspec
14
14
  class Input
15
15
 
16
16
  class Error < Inspec::Error; end
17
+
17
18
  class ValidationError < Error
18
19
  attr_accessor :input_name
19
20
  attr_accessor :input_value
20
21
  attr_accessor :input_type
21
22
  end
23
+
22
24
  class TypeError < Error
23
25
  attr_accessor :input_type
24
26
  end
27
+
25
28
  class RequiredError < Error
26
29
  attr_accessor :input_name
27
30
  end
@@ -1,5 +1,5 @@
1
- require "forwardable"
2
- require "singleton"
1
+ require "forwardable" unless defined?(Forwardable)
2
+ require "singleton" unless defined?(Singleton)
3
3
  require "inspec/input"
4
4
  require "inspec/secrets"
5
5
  require "inspec/exceptions"
@@ -14,9 +14,11 @@ module Inspec
14
14
  extend Forwardable
15
15
 
16
16
  class Error < Inspec::Error; end
17
+
17
18
  class ProfileLookupError < Error
18
19
  attr_accessor :profile_name
19
20
  end
21
+
20
22
  class InputLookupError < Error
21
23
  attr_accessor :profile_name
22
24
  attr_accessor :input_name
@@ -199,7 +201,7 @@ module Inspec
199
201
  value = YAML.load(value)
200
202
  rescue Psych::SyntaxError => yaml_error
201
203
  # It could be that we just tried to run JSON through the YAML parser.
202
- require "json"
204
+ require "json" unless defined?(JSON)
203
205
  begin
204
206
  value = JSON.parse(value)
205
207
  rescue JSON::ParserError => json_error
@@ -216,7 +216,7 @@ module Inspec
216
216
  end
217
217
 
218
218
  def self.from_yaml(ref, content, profile_id, logger = nil)
219
- require "erb"
219
+ require "erb" unless defined?(Erb)
220
220
  res = Metadata.new(ref, logger)
221
221
  res.params = YAML.load(ERB.new(content).result)
222
222
  res.content = content
@@ -1,4 +1,4 @@
1
- require "forwardable"
1
+ require "forwardable" unless defined?(Forwardable)
2
2
 
3
3
  module Inspec
4
4
  # Resource Plugins
@@ -36,7 +36,7 @@ module Inspec
36
36
  .flatten
37
37
 
38
38
  # load bundled plugins
39
- bundled_dir = File.expand_path(File.dirname(__FILE__))
39
+ bundled_dir = __dir__
40
40
  @paths += Dir[File.join(bundled_dir, "..", "bundles", "inspec-*.rb")].flatten
41
41
 
42
42
  # map paths to names
@@ -6,17 +6,22 @@ module Inspec
6
6
  class Exception < Inspec::Error; end
7
7
  class ConfigError < Inspec::Plugin::V2::Exception; end
8
8
  class LoadError < Inspec::Plugin::V2::Exception; end
9
+
9
10
  class GemActionError < Inspec::Plugin::V2::Exception
10
11
  attr_accessor :plugin_name
11
12
  attr_accessor :version
12
13
  end
14
+
13
15
  class InstallError < Inspec::Plugin::V2::GemActionError; end
16
+
14
17
  class PluginExcludedError < Inspec::Plugin::V2::InstallError
15
18
  attr_accessor :details
16
19
  end
20
+
17
21
  class UpdateError < Inspec::Plugin::V2::GemActionError
18
22
  attr_accessor :from_version, :to_version
19
23
  end
24
+
20
25
  class UnInstallError < Inspec::Plugin::V2::GemActionError; end
21
26
  class SearchError < Inspec::Plugin::V2::GemActionError; end
22
27
  end
@@ -1,4 +1,4 @@
1
- require "json"
1
+ require "json" unless defined?(JSON)
2
2
 
3
3
  module Inspec::Plugin::V2
4
4
  # Represents the plugin config file on disk.