inspec-core 4.24.8 → 4.26.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -14
  3. data/inspec-core.gemspec +9 -8
  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 +4 -2
  9. data/lib/inspec/cached_fetcher.rb +1 -1
  10. data/lib/inspec/cli.rb +1 -1
  11. data/lib/inspec/config.rb +19 -6
  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/input.rb +3 -0
  19. data/lib/inspec/input_registry.rb +5 -3
  20. data/lib/inspec/metadata.rb +1 -1
  21. data/lib/inspec/plugin/v1/plugins.rb +2 -2
  22. data/lib/inspec/plugin/v2.rb +5 -0
  23. data/lib/inspec/plugin/v2/config_file.rb +1 -1
  24. data/lib/inspec/plugin/v2/filter.rb +2 -2
  25. data/lib/inspec/plugin/v2/installer.rb +5 -5
  26. data/lib/inspec/plugin/v2/loader.rb +1 -1
  27. data/lib/inspec/plugin/v2/registry.rb +2 -2
  28. data/lib/inspec/profile.rb +3 -3
  29. data/lib/inspec/profile_context.rb +1 -1
  30. data/lib/inspec/reporters/automate.rb +2 -2
  31. data/lib/inspec/reporters/json.rb +1 -1
  32. data/lib/inspec/reporters/json_automate.rb +1 -1
  33. data/lib/inspec/resources.rb +5 -5
  34. data/lib/inspec/resources/apt.rb +1 -1
  35. data/lib/inspec/resources/auditd.rb +1 -1
  36. data/lib/inspec/resources/csv.rb +1 -1
  37. data/lib/inspec/resources/dh_params.rb +1 -1
  38. data/lib/inspec/resources/file.rb +1 -1
  39. data/lib/inspec/resources/http.rb +1 -1
  40. data/lib/inspec/resources/iis_website.rb +1 -1
  41. data/lib/inspec/resources/interfaces.rb +1 -1
  42. data/lib/inspec/resources/json.rb +2 -2
  43. data/lib/inspec/resources/key_rsa.rb +1 -1
  44. data/lib/inspec/resources/mssql_session.rb +5 -1
  45. data/lib/inspec/resources/mysql_session.rb +1 -1
  46. data/lib/inspec/resources/nginx.rb +1 -1
  47. data/lib/inspec/resources/nginx_conf.rb +40 -1
  48. data/lib/inspec/resources/npm.rb +1 -1
  49. data/lib/inspec/resources/oracledb_session.rb +2 -2
  50. data/lib/inspec/resources/parse_config.rb +5 -2
  51. data/lib/inspec/resources/port.rb +1 -1
  52. data/lib/inspec/resources/postgres_session.rb +1 -1
  53. data/lib/inspec/resources/ppa.rb +1 -1
  54. data/lib/inspec/resources/processes.rb +1 -1
  55. data/lib/inspec/resources/rabbitmq_conf.rb +1 -1
  56. data/lib/inspec/resources/registry_key.rb +1 -1
  57. data/lib/inspec/resources/ssh_config.rb +24 -2
  58. data/lib/inspec/resources/sshd_config.rb +1 -1
  59. data/lib/inspec/resources/ssl.rb +2 -2
  60. data/lib/inspec/resources/toml.rb +1 -1
  61. data/lib/inspec/resources/vbscript.rb +1 -1
  62. data/lib/inspec/resources/windows_registry_key.rb +1 -1
  63. data/lib/inspec/resources/wmi.rb +1 -1
  64. data/lib/inspec/resources/x509_certificate.rb +1 -1
  65. data/lib/inspec/resources/xml.rb +1 -1
  66. data/lib/inspec/runner.rb +2 -2
  67. data/lib/inspec/schema.rb +1 -1
  68. data/lib/inspec/schema/output_schema.rb +1 -1
  69. data/lib/inspec/schema/primitives.rb +1 -1
  70. data/lib/inspec/shell_detector.rb +2 -2
  71. data/lib/inspec/utils/command_wrapper.rb +1 -1
  72. data/lib/inspec/utils/deprecation/config_file.rb +2 -2
  73. data/lib/inspec/utils/json_log.rb +1 -1
  74. data/lib/inspec/utils/run_data_filters.rb +7 -5
  75. data/lib/inspec/utils/telemetry/collector.rb +1 -1
  76. data/lib/inspec/utils/telemetry/data_series.rb +1 -1
  77. data/lib/inspec/version.rb +1 -1
  78. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +5 -5
  79. data/lib/plugins/inspec-compliance/README.md +1 -1
  80. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +3 -3
  81. data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +2 -2
  82. data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +2 -2
  83. data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +3 -3
  84. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +1 -1
  85. data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +1 -1
  86. data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +2 -2
  87. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +3 -3
  88. data/lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2/reporter.rb +1 -1
  89. data/lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/reporter.rb +1 -1
  90. data/lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit/reporter.rb +1 -1
  91. data/lib/plugins/shared/core_plugin_test_helper.rb +6 -6
  92. metadata +63 -25
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40b226d810bf523c7b914a00d3e3e0556d23eb78b944f12fe7af7fac35a279f4
4
- data.tar.gz: ff6cafe82a9e7234814575a3723098ccb1238fb88754cb4891288547e9c3a47b
3
+ metadata.gz: d272d9e12d62df3c7913ac77ae8eb39afe94c53ca0bb1b6cb4e51909cfa2169d
4
+ data.tar.gz: c0f4245b7a361e2736827bf4512098640aa58c1f7ec5e02754a72d47a3e91895
5
5
  SHA512:
6
- metadata.gz: c663121d4e9dba5764ba321d391b4779f3b9236b827fc7dca58aa2a6a3b9d76a5749205635c38ca6a28f614364f19fef1c7c790321067fef2ae1e1eb9a1dbd74
7
- data.tar.gz: da255c1b0637e48aa1f83ea42607829767450bd03fd5f970e527afa81898ba215b7ac4ec66c508d23ef2de74ebb9e3dc26893427c76ab4176e67ffaf5df42c54
6
+ metadata.gz: d62a4be7c3c74b09d0fa7d99bb7af2e26b45fcafd9e14d51bd5719d0c1a1c816cf5e133458c07ed3354a3966b6a571cf24a5147a887713671aa8ecca1ac7328d
7
+ data.tar.gz: '006889d328e75a0d339f082e4c17b57474660fd5b3855bbe3100a7b67ae0a0e98f06cef3ec914ff0232779cf76c01e11fa63797451221afe33d3b00624a6b3a6'
data/Gemfile CHANGED
@@ -9,13 +9,17 @@ gem "inspec", path: "."
9
9
  # in it in order to package the executable. Hence the odd backwards dependency.
10
10
  gem "inspec-bin", path: "./inspec-bin"
11
11
 
12
- gem "ffi", ">= 1.9.14", "!= 1.13.0"
12
+ gem "ffi", ">= 1.9.14", "!= 1.13.0", "!= 1.14.2"
13
13
 
14
14
  if Gem.ruby_version.to_s.start_with?("2.5")
15
15
  # 16.7.23 required ruby 2.6+
16
16
  gem "chef-utils", "< 16.7.23" # TODO: remove when we drop ruby 2.5
17
17
  end
18
18
 
19
+ # inspec tests depend text output that changed in the 3.10 release
20
+ # but our runtime dep is still 3.9+
21
+ gem "rspec", ">= 3.10"
22
+
19
23
  group :omnibus do
20
24
  gem "rb-readline"
21
25
  gem "appbundler"
@@ -24,10 +28,10 @@ group :omnibus do
24
28
  end
25
29
 
26
30
  group :test do
27
- gem "chefstyle", "~> 1.2.1"
31
+ gem "chefstyle", "~> 1.5.7"
28
32
  gem "concurrent-ruby", "~> 1.0"
29
33
  gem "html-proofer", platforms: :ruby # do not attempt to run proofer on windows
30
- gem "json_schemer", ">= 0.2.1", "< 0.2.12"
34
+ gem "json_schemer", ">= 0.2.1", "< 0.2.18"
31
35
  gem "m"
32
36
  gem "minitest-sprint", "~> 1.0"
33
37
  gem "minitest", "~> 5.5"
@@ -37,19 +41,10 @@ group :test do
37
41
  gem "pry", "~> 0.10"
38
42
  gem "rake", ">= 10"
39
43
  gem "ruby-progressbar", "~> 1.8"
40
- gem "simplecov", ["~> 0.10", "<=0.18.2"]
44
+ gem "simplecov", "~> 0.18"
41
45
  gem "webmock", "~> 3.0"
42
46
  end
43
47
 
44
- group :integration do
45
- gem "berkshelf"
46
- gem "test-kitchen", ">= 2.8"
47
- gem "kitchen-vagrant", ">= 1.7"
48
- gem "kitchen-inspec", ">= 2.0"
49
- gem "kitchen-dokken", ">= 2.11"
50
- gem "git"
51
- end
52
-
53
48
  group :deploy do
54
49
  gem "inquirer"
55
- end
50
+ end
@@ -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 =
@@ -27,20 +27,21 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency "license-acceptance", ">= 0.2.13", "< 3.0"
28
28
  spec.add_dependency "thor", ">= 0.20", "< 2.0"
29
29
  spec.add_dependency "method_source", ">= 0.8", "< 2.0"
30
- spec.add_dependency "rubyzip", "~> 1.2", ">= 1.2.2"
31
- spec.add_dependency "rspec", "~> 3.9.0"
30
+ spec.add_dependency "rubyzip", ">= 1.2.2", "< 3.0"
31
+ spec.add_dependency "rspec", ">= 3.9", "< 3.11"
32
32
  spec.add_dependency "rspec-its", "~> 1.2"
33
33
  spec.add_dependency "pry", "~> 0.13"
34
- spec.add_dependency "hashie", "~> 3.4"
34
+ spec.add_dependency "hashie", ">= 3.4", "< 5.0"
35
35
  spec.add_dependency "mixlib-log", "~> 3.0"
36
36
  spec.add_dependency "sslshake", "~> 1.2"
37
37
  spec.add_dependency "parallel", "~> 1.9"
38
- spec.add_dependency "faraday", ">= 0.9.0", "< 1.1"
38
+ spec.add_dependency "faraday", ">= 0.9.0", "< 1.4"
39
+ spec.add_dependency "faraday_middleware", "~> 1.0"
39
40
  spec.add_dependency "tty-table", "~> 0.10"
40
41
  spec.add_dependency "tty-prompt", "~> 0.17"
41
- spec.add_dependency "tomlrb", "~> 1.2.0"
42
+ spec.add_dependency "tomlrb", ">= 1.2", "< 2.1"
42
43
  spec.add_dependency "addressable", "~> 2.4"
43
- spec.add_dependency "parslet", "~> 1.5"
44
+ spec.add_dependency "parslet", ">= 1.5", "< 2.0" # Pinned < 2.0, see #5389
44
45
  spec.add_dependency "semverse", "~> 3.0"
45
46
  spec.add_dependency "multipart-post", "~> 2.0"
46
47
 
@@ -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" # rubocop:disable Chef/Ruby/UnlessDefinedRequire
2
2
  require "inspec/log"
3
3
  require "inspec/ui"
4
4
  require "inspec/config"
@@ -118,6 +118,8 @@ module Inspec
118
118
  desc: "Disable SSL verification on select targets"
119
119
  option :target_id, type: :string,
120
120
  desc: "Provide a ID which will be included on reports"
121
+ option :winrm_shell_type, type: :string, default: "powershell",
122
+ desc: "Specify a shell type for winrm (eg. 'elevated' or 'powershell')"
121
123
  end
122
124
 
123
125
  def self.profile_options
@@ -136,7 +138,7 @@ module Inspec
136
138
  banner: "one two:/output/file/path",
137
139
  desc: "Enable one or more output reporters: cli, documentation, html, progress, json, json-min, json-rspec, junit, yaml"
138
140
  option :reporter_message_truncation, type: :string,
139
- desc: "Number of characters to truncate failure messages in report data to (default: no truncation)"
141
+ desc: "Number of characters to truncate failure messages and code_desc in report data to (default: no truncation)"
140
142
  option :reporter_backtrace_inclusion, type: :boolean,
141
143
  desc: "Include a code backtrace in report data (default: true)"
142
144
  option :input, type: :array, banner: "name1=value1 name2=value2",
@@ -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
@@ -67,7 +67,7 @@ class Inspec::InspecCLI < Inspec::BaseCLI
67
67
  desc: "A list of controls to include. Ignore all other tests."
68
68
  profile_options
69
69
  def json(target)
70
- require "json"
70
+ require "json" unless defined?(JSON)
71
71
 
72
72
  o = config
73
73
  diagnose(o)
@@ -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
@@ -128,12 +128,25 @@ module Inspec
128
128
  end
129
129
 
130
130
  #-----------------------------------------------------------------------#
131
- # Fetching Plugin Data
131
+ # Handling Plugin Data
132
132
  #-----------------------------------------------------------------------#
133
133
  def fetch_plugin_config(plugin_name)
134
134
  Thor::CoreExt::HashWithIndifferentAccess.new(@plugin_cfg[plugin_name] || {})
135
135
  end
136
136
 
137
+ def set_plugin_config(plugin_name, plugin_config)
138
+ plugin_name = plugin_name.to_s unless plugin_name.is_a? String
139
+
140
+ @plugin_cfg[plugin_name] = plugin_config
141
+ end
142
+
143
+ def merge_plugin_config(plugin_name, additional_plugin_config)
144
+ plugin_name = plugin_name.to_s unless plugin_name.is_a? String
145
+
146
+ @plugin_cfg[plugin_name] = {} if @plugin_cfg[plugin_name].nil?
147
+ @plugin_cfg[plugin_name].merge!(additional_plugin_config)
148
+ end
149
+
137
150
  # clear the cached config
138
151
  def self.__reset
139
152
  @cached_config = nil
@@ -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
@@ -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.
@@ -1,5 +1,5 @@
1
- require "singleton"
2
- require "json"
1
+ require "singleton" unless defined?(Singleton)
2
+ require "json" unless defined?(JSON)
3
3
  require "inspec/globals"
4
4
 
5
5
  module Inspec::Plugin; end
@@ -1,12 +1,12 @@
1
1
  # This file is not required by default.
2
2
 
3
- require "singleton"
4
- require "forwardable"
5
- require "fileutils"
6
- require "uri"
3
+ require "singleton" unless defined?(Singleton)
4
+ require "forwardable" unless defined?(Forwardable)
5
+ require "fileutils" unless defined?(FileUtils)
6
+ require "uri" unless defined?(URI)
7
7
 
8
8
  # Gem extensions for doing unusual things - not loaded by Gem default
9
- require "rubygems/package"
9
+ require "rubygems/package" unless defined?(Gem::Package)
10
10
  require "rubygems/name_tuple"
11
11
  require "rubygems/uninstaller"
12
12
  require "rubygems/remote_fetcher"
@@ -130,7 +130,7 @@ module Inspec::Plugin::V2
130
130
  end
131
131
 
132
132
  def self.plugin_gem_path
133
- require "rbconfig"
133
+ require "rbconfig" unless defined?(RbConfig)
134
134
  ruby_abi_version = RbConfig::CONFIG["ruby_version"]
135
135
  # TODO: why are we installing under the api directory for plugins?
136
136
  base_dir = Inspec.config_dir
@@ -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 "train"
4
4
 
5
5
  require_relative "status"
@@ -1,8 +1,8 @@
1
1
  # Copyright 2015 Dominik Richter
2
2
 
3
- require "forwardable"
4
- require "openssl"
5
- require "pathname"
3
+ require "forwardable" unless defined?(Forwardable)
4
+ require "openssl" unless defined?(OpenSSL)
5
+ require "pathname" unless defined?(Pathname)
6
6
  require "inspec/input_registry"
7
7
  require "inspec/cached_fetcher" # TODO: split or rename
8
8
  require "inspec/source_reader"