inspec 4.18.39 → 4.18.51

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 398cfa1582305a817199e0bae6b3642d0c1aebcf5e1853f10d8e5213a467c7ad
4
- data.tar.gz: 26be7c80d1a1065b44b479b221dcb3a1e17a136525fed65e7010961a469dda3c
3
+ metadata.gz: 7a86b0035c773f317e5a501e1b4dffb4390406dacf3de932232da5f2d8da9ad3
4
+ data.tar.gz: 01b2996b318a7726059588f7fc58575e47321e814e74632bf7ae9d02c6093bbd
5
5
  SHA512:
6
- metadata.gz: af1cc64f102f9ea93526c163fac5f5e241a08cb18572fceee8bbe7f792f4e796fd9757a30e1815ba578bd8094f7c78fe3747d7f07e80a6743f967562a2465533
7
- data.tar.gz: ebbbee6e19498cecebc033ed8531d1fc3ff5ea98f9f6e315b4c1c3fc48e85faee54ee434bb783941130729cc3053d16392f79db06597f278f599ef2cc3c336d6
6
+ metadata.gz: 8097d17a8ba6acd4e3a9a10f3cfa00ead7ca11ff63883150db7cd00a761b6ef750dd4c1ccbe25fd581092b5c4821b31ffb84094bf20c202508ea1fe93d39912e
7
+ data.tar.gz: ff1f33e691ba4334eea1cb4642a83e36795f984ba45fe13a4eddc6a8f363ed28a2fec5b374778619cdfe589e1dd862979d46c088deac5af7429313c28ee12bd2
data/Gemfile CHANGED
@@ -20,7 +20,6 @@ end
20
20
 
21
21
  group :test do
22
22
  gem "chefstyle", "~> 0.13.0"
23
- gem "coveralls", require: false
24
23
  gem "minitest", "~> 5.5"
25
24
  gem "minitest-sprint", "~> 1.0"
26
25
  gem "rake", ">= 10"
data/inspec.gemspec CHANGED
@@ -23,19 +23,20 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.required_ruby_version = ">= 2.4"
25
25
 
26
- spec.add_dependency "train", "~> 3.0" # Inspec 4 must have train 2+; 3+ if we include train-winrm
26
+ spec.add_dependency "train", "~> 3.0"
27
27
  # Train plugins we ship with InSpec
28
28
  spec.add_dependency "train-habitat", "~> 0.1"
29
29
  spec.add_dependency "train-aws", "~> 0.1"
30
- spec.add_dependency "train-winrm", "~> 0.2" # Requires train 3+
30
+ spec.add_dependency "train-winrm", "~> 0.2"
31
31
 
32
32
  # Implementation dependencies
33
+ spec.add_dependency "chef-telemetry", "~> 1.0"
33
34
  spec.add_dependency "license-acceptance", ">= 0.2.13", "< 2.0"
34
35
  spec.add_dependency "thor", "~> 0.20"
35
36
  spec.add_dependency "json-schema", "~> 2.8"
36
37
  spec.add_dependency "method_source", "~> 0.8"
37
38
  spec.add_dependency "rubyzip", "~> 1.2", ">= 1.2.2"
38
- spec.add_dependency "rspec", ["~> 3.0", "< 3.9"] # TODO: Loosen - See https://github.com/inspec/inspec/issues/4575
39
+ spec.add_dependency "rspec", "~> 3.9"
39
40
  spec.add_dependency "rspec-its", "~> 1.2"
40
41
  spec.add_dependency "pry", "~> 0"
41
42
  spec.add_dependency "hashie", "~> 3.4"
@@ -46,7 +47,7 @@ Gem::Specification.new do |spec|
46
47
  spec.add_dependency "tty-table", "~> 0.10"
47
48
  spec.add_dependency "tty-prompt", "~> 0.17"
48
49
  # Used for Azure profile until integrated into train
49
- spec.add_dependency "faraday_middleware", "~> 0.12.2"
50
+ spec.add_dependency "faraday_middleware", "~> 0.12"
50
51
  spec.add_dependency "tomlrb", "~> 1.2"
51
52
  spec.add_dependency "addressable", "~> 2.4"
52
53
  spec.add_dependency "parslet", "~> 1.5"
@@ -1,6 +1,6 @@
1
1
  require "uri"
2
2
  require "inspec/fetcher"
3
- require "fetchers/url"
3
+ require "inspec/fetcher/url"
4
4
 
5
5
  # InSpec Target Helper for Supermarket
6
6
  module Supermarket
@@ -8,6 +8,8 @@ require "inspec/utils/deprecation/global_method"
8
8
  # Allow end of options during array type parsing
9
9
  # https://github.com/erikhuda/thor/issues/631
10
10
  class Thor::Arguments
11
+ alias old_parse_array parse_array
12
+
11
13
  def parse_array(_name)
12
14
  return shift if peek.is_a?(Array)
13
15
 
@@ -8,7 +8,7 @@ module Inspec
8
8
  attr_reader :cache, :target, :fetcher
9
9
  def initialize(target, cache)
10
10
  @target = target
11
- @fetcher = Inspec::Fetcher.resolve(target)
11
+ @fetcher = Inspec::Fetcher::Registry.resolve(target)
12
12
 
13
13
  if @fetcher.nil?
14
14
  raise("Could not fetch inspec profile in #{target.inspect}.")
data/lib/inspec/cli.rb CHANGED
@@ -298,7 +298,11 @@ class Inspec::InspecCLI < Inspec::BaseCLI
298
298
  def detect
299
299
  o = config
300
300
  o[:command] = "platform.params"
301
+
302
+ configure_logger(o)
303
+
301
304
  (_, res) = run_command(o)
305
+
302
306
  if o["format"] == "json"
303
307
  puts res.to_json
304
308
  else
data/lib/inspec/config.rb CHANGED
@@ -6,7 +6,6 @@ require "stringio"
6
6
  require "forwardable"
7
7
  require "thor"
8
8
  require "base64"
9
- require "inspec/base_cli"
10
9
  require "inspec/plugin/v2/filter"
11
10
 
12
11
  module Inspec
@@ -422,6 +421,7 @@ module Inspec
422
421
 
423
422
  def finalize_set_top_level_command(options)
424
423
  options[:type] = @command_name
424
+ require "inspec/base_cli"
425
425
  Inspec::BaseCLI.inspec_cli_command = @command_name # TODO: move to a more relevant location
426
426
  end
427
427
 
@@ -26,7 +26,9 @@ module Inspec
26
26
  end
27
27
  end
28
28
 
29
- Fetcher = FetcherRegistry.new
29
+ module Fetcher
30
+ Registry = FetcherRegistry.new
31
+ end
30
32
 
31
33
  def self.fetcher(version)
32
34
  if version != 1
@@ -38,9 +40,9 @@ module Inspec
38
40
  end
39
41
 
40
42
  # TODO: remove. require up, not down.
41
- require "fetchers/local"
42
- require "fetchers/url"
43
- require "fetchers/git"
43
+ require "inspec/fetcher/local"
44
+ require "inspec/fetcher/url"
45
+ require "inspec/fetcher/git"
44
46
 
45
47
  # TODO: Remove in 4.0 when Compliance fetcher plugin is created
46
48
  require "plugins/inspec-compliance/lib/inspec-compliance/api"
@@ -3,7 +3,7 @@ require "fileutils"
3
3
  require "mixlib/shellout"
4
4
  require "inspec/log"
5
5
 
6
- module Fetchers
6
+ module Inspec::Fetcher
7
7
  #
8
8
  # The git fetcher uses the git binary to fetch remote git sources.
9
9
  # Git-based sources should be specified with the `git:` key in the
@@ -90,8 +90,8 @@ module Fetchers
90
90
  # vendoring to something more complex, don't bother.
91
91
  FileUtils.rmdir(destination_path) if Dir.empty?(destination_path)
92
92
 
93
- raise ArgumentError, "Cannot find relative path '#{@relative_path}' " \
94
- "within profile in git repo specified by '#{@remote_url}'"
93
+ raise Inspec::FetcherFailure, "Cannot find relative path '#{@relative_path}' " \
94
+ "within profile in git repo specified by '#{@remote_url}'"
95
95
  end
96
96
  FileUtils.cp_r("#{working_dir}/#{@relative_path}", destination_path)
97
97
  end
@@ -129,11 +129,11 @@ module Fetchers
129
129
  def resolve_ref(ref_name)
130
130
  command_string = "git ls-remote \"#{@remote_url}\" \"#{ref_name}*\""
131
131
  cmd = shellout(command_string)
132
- raise "Error running '#{command_string}': #{cmd.stderr}" unless cmd.exitstatus == 0
132
+ raise(Inspec::FetcherFailure, "Profile git dependency failed for #{@remote_url} - error running '#{command_string}': #{cmd.stderr}") unless cmd.exitstatus == 0
133
133
 
134
134
  ref = parse_ls_remote(cmd.stdout, ref_name)
135
135
  unless ref
136
- raise "Unable to resolve #{ref_name} to a specific git commit for #{@remote_url}"
136
+ raise Inspec::FetcherFailure, "Profile git dependency failed - unable to resolve #{ref_name} to a specific git commit for #{@remote_url}"
137
137
  end
138
138
 
139
139
  ref
@@ -191,7 +191,7 @@ module Fetchers
191
191
  cmd.error!
192
192
  cmd.status
193
193
  rescue Errno::ENOENT
194
- raise "To use git sources, you must have git installed."
194
+ raise Inspec::FetcherFailure, "Profile git dependency failed for #{@remote_url} - to use git sources, you must have git installed."
195
195
  end
196
196
 
197
197
  def shellout(cmd, opts = {})
@@ -1,6 +1,6 @@
1
1
  require "openssl"
2
2
 
3
- module Fetchers
3
+ module Inspec::Fetcher
4
4
  class Local < Inspec.fetcher(1)
5
5
  name "local"
6
6
  priority 0
@@ -101,7 +101,10 @@ module Fetchers
101
101
  end
102
102
 
103
103
  def perform_shasum(target)
104
- @archive_shasum ||= OpenSSL::Digest::SHA256.digest(File.read(target)).unpack("H*")[0]
104
+ return @archive_shasum if @archive_shasum
105
+ raise(Inspec::FetcherFailure, "Profile dependency local path '#{target}' does not exist") unless File.exist?(target)
106
+
107
+ @archive_shasum = OpenSSL::Digest::SHA256.digest(File.read(target)).unpack("H*")[0]
105
108
  end
106
109
 
107
110
  def resolved_source
@@ -1,6 +1,6 @@
1
1
  require "inspec/fetcher"
2
2
 
3
- module Fetchers
3
+ module Inspec::Fetcher
4
4
  class Mock < Inspec.fetcher(1)
5
5
  name "mock"
6
6
  priority 0
@@ -3,7 +3,7 @@ require "openssl"
3
3
  require "tempfile"
4
4
  require "open-uri"
5
5
 
6
- module Fetchers
6
+ module Inspec::Fetcher
7
7
  class Url < Inspec.fetcher(1)
8
8
  MIME_TYPES = {
9
9
  "application/x-zip-compressed" => ".zip",
@@ -205,15 +205,24 @@ module Fetchers
205
205
  @temp_archive_path = archive.path
206
206
  end
207
207
 
208
+ def open(target, opts) # overridden so we can control who we're talking to
209
+ URI.open(target, opts)
210
+ rescue NoMethodError # TODO: remove when we drop ruby 2.4
211
+ super(target, opts) # Kernel#open
212
+ end
213
+
208
214
  def open_via_uri(target)
209
215
  opts = http_opts
210
216
 
211
- if opts[:http_basic_authentication]
212
- # OpenURI does not support userinfo so we need to remove it
213
- open(target.sub("#{@target_uri.userinfo}@", ""), opts)
214
- else
215
- open(target, opts)
216
- end
217
+ # OpenURI does not support userinfo so we need to remove it
218
+ # https://ruby-doc.org/stdlib-2.5.0/libdoc/open-uri/rdoc/OpenURI/OpenRead.html#method-i-open
219
+ target = target.sub("#{@target_uri.userinfo}@", "") if
220
+ opts[:http_basic_authentication]
221
+
222
+ open(target, opts)
223
+
224
+ rescue SocketError, Errno::ECONNREFUSED, OpenURI::HTTPError => e
225
+ raise Inspec::FetcherFailure, "Profile URL dependency #{target} could not be fetched: #{e.message}"
217
226
  end
218
227
 
219
228
  def download_archive(path)
@@ -264,7 +273,7 @@ module Fetchers
264
273
  end
265
274
  end
266
275
  unless keys_missing_values.empty?
267
- raise "Unable to fetch profile - the following HTTP headers have no value: " \
276
+ raise Inspec::FetcherFailure, "Unable to fetch profile - the following HTTP headers have no value: " \
268
277
  "#{keys_missing_values.join(", ")}"
269
278
  end
270
279
  end
@@ -17,7 +17,7 @@ module Inspec
17
17
  #
18
18
  class Fetcher < PluginRegistry::Plugin
19
19
  def self.plugin_registry
20
- Inspec::Fetcher
20
+ Inspec::Fetcher::Registry
21
21
  end
22
22
 
23
23
  attr_accessor :target
@@ -431,7 +431,13 @@ module Inspec::Plugin::V2
431
431
  end
432
432
 
433
433
  # find all gem specification directories
434
- directories = [Gem::Specification.default_specifications_dir]
434
+
435
+ spec_dir = if Gem.respond_to? :default_specifications_dir
436
+ Gem.default_specifications_dir
437
+ else
438
+ Gem::Specification.default_specifications_dir
439
+ end
440
+ directories = [spec_dir]
435
441
  unless defined?(::Bundler)
436
442
  # add in any others that do not start with the user directory
437
443
  directories += Gem::Specification.dirs.find_all do |path|
@@ -1,4 +1,5 @@
1
- require "inspec/resources/command"
1
+ # circular: require "inspec/resource"
2
+ # but... already being included by inspec/resource.rb
2
3
 
3
4
  module Inspec::Resources
4
5
  class GemPackage < Inspec.resource(1)
@@ -38,6 +39,8 @@ module Inspec::Resources
38
39
  def info
39
40
  return @info if defined?(@info)
40
41
 
42
+ require "inspec/resources/command"
43
+
41
44
  cmd = inspec.command("#{@gem_binary} list --local -a -q \^#{@package_name}\$")
42
45
  return {} unless cmd.exit_status == 0
43
46
 
@@ -96,7 +96,7 @@ module Inspec::Resources
96
96
 
97
97
  def parse_csv_result(cmd)
98
98
  require "csv"
99
- table = CSV.parse(cmd.stdout, { headers: true })
99
+ table = CSV.parse(cmd.stdout, headers: true)
100
100
 
101
101
  # remove first row, since it will be a seperator line
102
102
  table.delete(0)
@@ -52,12 +52,6 @@ module Inspec::Resources
52
52
  .register_column(:inactive_days, field: "inactive_days")
53
53
  .register_column(:expiry_dates, field: "expiry_date")
54
54
  .register_column(:reserved, field: "reserved")
55
- # These are deprecated, but we need to "alias" them
56
- filtertable
57
- .register_custom_property(:user) { |table, value| table.resource.user(value) }
58
- .register_custom_property(:password) { |table, value| table.resource.password(value) }
59
- .register_custom_property(:last_change) { |table, value| table.resource.last_change(value) }
60
- .register_custom_property(:expiry_date) { |table, value| table.resource.expiry_date(value) }
61
55
 
62
56
  filtertable.register_custom_property(:content) do |t, _|
63
57
  t.entries.map do |e|
@@ -223,6 +223,10 @@ module Inspec::Resources
223
223
  meta_info[:userflags] unless meta_info.nil?
224
224
  end
225
225
 
226
+ def lastlogin
227
+ meta_info[:lastlogin] unless meta_info.nil?
228
+ end
229
+
226
230
  # returns the minimum days between password changes
227
231
  def mindays
228
232
  credentials[:mindays] unless credentials.nil?
@@ -632,6 +636,7 @@ module Inspec::Resources
632
636
  shell: res[:shell],
633
637
  domain: res[:domain],
634
638
  userflags: res[:userflags],
639
+ lastlogin: res[:lastlogin],
635
640
  }
636
641
  end
637
642
 
@@ -715,6 +720,7 @@ module Inspec::Resources
715
720
  home = $_.HomeDirectory[0]
716
721
  shell = $null
717
722
  domain = $Computername
723
+ lastlogin = if($_.lastlogin.getType().Tostring() -eq "System.Management.Automation.PSMethod" ){ $null }else{[String]$_.lastlogin}
718
724
  }
719
725
  } | ConvertTo-Json
720
726
  EOH
@@ -11,14 +11,13 @@ module Inspec
11
11
  module DescribeDslLazyLoader
12
12
  # Support for Describe DSL plugins
13
13
  def method_missing(method_name, *arguments, &block)
14
- # TODO: need a backend available at the describe level... class method somewhere?
15
- # # see if it is a resource first
16
- # begin
17
- # resource = Inspec::DSL.method_missing_resource(:where_is_backend?, method_name, *arguments)
18
- # return resource if resource
19
- # rescue LoadError
20
- # # pass through
21
- # end
14
+ begin
15
+ backend = metadata[:backend] # populated via Inspec::Runner#add_resource
16
+ resource = Inspec::DSL.method_missing_resource(backend, method_name, *arguments)
17
+ return resource if resource
18
+ rescue LoadError
19
+ # pass through
20
+ end
22
21
 
23
22
  # Check to see if there is a describe_dsl plugin activator hook with the method name
24
23
  registry = Inspec::Plugin::V2::Registry.instance
data/lib/inspec/runner.rb CHANGED
@@ -228,7 +228,7 @@ module Inspec
228
228
  end
229
229
 
230
230
  def eval_with_virtual_profile(command)
231
- require "fetchers/mock"
231
+ require "inspec/fetcher/mock"
232
232
  add_target({ "inspec.yml" => "name: inspec-shell" })
233
233
  our_profile = @target_profiles.first
234
234
  ctx = our_profile.runner_context
@@ -307,6 +307,8 @@ module Inspec
307
307
  def add_resource(method_name, arg, opts, block)
308
308
  case method_name
309
309
  when "describe"
310
+ opts = { backend: @test_collector.backend }.merge opts
311
+
310
312
  @test_collector.example_group(*arg, opts, &block)
311
313
  when "expect"
312
314
  block.example_group
@@ -10,6 +10,8 @@ require "inspec/rspec_extensions"
10
10
 
11
11
  module Inspec
12
12
  class RunnerRspec
13
+ attr_accessor :formatter
14
+
13
15
  def initialize(conf)
14
16
  @conf = conf
15
17
  @formatter = nil
@@ -22,19 +24,26 @@ module Inspec
22
24
  # @param [Type] &block the block associated with this example group
23
25
  # @return [RSpecExampleGroup]
24
26
  def example_group(*args, &block)
27
+ # NOTE: this RUNS immediately
25
28
  RSpec::Core::ExampleGroup.describe(*args, &block)
26
29
  end
27
30
 
31
+ def formatters
32
+ RSpec.configuration.formatters.grep(Inspec::Formatters::Base)
33
+ end
34
+
28
35
  # Add a full profile to the runner. Only pulls in metadata
29
36
  #
30
37
  # @param [Inspec::Profile] profile
31
38
  # @return [nil]
32
39
  def add_profile(profile)
33
- RSpec.configuration.formatters
34
- .find_all { |c| c.is_a?(Inspec::Formatters::Base) }
35
- .each do |fmt|
36
- fmt.add_profile(profile)
37
- end
40
+ formatters.each do |fmt|
41
+ fmt.add_profile(profile)
42
+ end
43
+ end
44
+
45
+ def backend
46
+ formatters.first.backend
38
47
  end
39
48
 
40
49
  # Configure the backend of the runner.
@@ -42,11 +51,9 @@ module Inspec
42
51
  # @param [Inspec::Backend] backend
43
52
  # @return [nil]
44
53
  def backend=(backend)
45
- RSpec.configuration.formatters
46
- .find_all { |c| c.is_a?(Inspec::Formatters::Base) }
47
- .each do |fmt|
48
- fmt.backend = backend
49
- end
54
+ formatters.each do |fmt|
55
+ fmt.backend = backend
56
+ end
50
57
  end
51
58
 
52
59
  # Add an example group to the list of registered tests.
@@ -227,6 +227,8 @@ module XinetdParser
227
227
  def parse_xinetd(raw) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
228
228
  return {} if raw.nil?
229
229
 
230
+ require "inspec/utils/simpleconfig"
231
+
230
232
  res = {}
231
233
  cur_group = nil
232
234
  simple_conf = []
@@ -273,5 +275,3 @@ module XinetdParser
273
275
  res
274
276
  end
275
277
  end
276
-
277
- require "inspec/utils/simpleconfig"
@@ -1,3 +1,3 @@
1
1
  module Inspec
2
- VERSION = "4.18.39".freeze
2
+ VERSION = "4.18.51".freeze
3
3
  end
@@ -254,7 +254,7 @@ RSpec::Matchers.define :cmp do |first_expected| # rubocop:disable Metrics/BlockL
254
254
  return actual.send(op, expected.to_i)
255
255
  elsif expected.is_a?(String) && boolean?(expected) && [true, false].include?(actual)
256
256
  return actual.send(op, to_boolean(expected))
257
- elsif expected.is_a?(Integer) && integer?(actual)
257
+ elsif expected.is_a?(Integer) && actual.is_a?(String) && integer?(actual)
258
258
  return actual.to_i.send(op, expected)
259
259
  elsif expected.is_a?(Float) && float?(actual)
260
260
  return actual.to_f.send(op, expected)
@@ -8,7 +8,7 @@ require "inspec/dist"
8
8
  # similar to `inspec exec http://localhost:2134/owners/%base%/compliance/%ssh%/tar --user %token%`
9
9
  module InspecPlugins
10
10
  module Compliance
11
- class Fetcher < Fetchers::Url
11
+ class Fetcher < Inspec::Fetcher::Url
12
12
  include Inspec::Dist
13
13
 
14
14
  name "compliance"
@@ -1,8 +1,6 @@
1
1
  pkg_name=<%= "inspec-profile-#{profile.name}" %>
2
2
  pkg_version=<%= profile.version %>
3
3
  pkg_origin=<%= habitat_origin %>
4
- pkg_deps=(chef/inspec)
5
- pkg_build_deps=(chef/inspec core/jq-static)
6
4
  pkg_svc_user=root
7
5
  <%= "pkg_license='#{profile.metadata.params[:license]}'" if profile.metadata.params[:license]%>
8
6
  pkg_scaffolding="chef/scaffolding-chef-inspec"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.18.39
4
+ version: 4.18.51
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: 2019-11-14 00:00:00.000000000 Z
11
+ date: 2019-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: train
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: chef-telemetry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: license-acceptance
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -153,9 +167,6 @@ dependencies:
153
167
  requirement: !ruby/object:Gem::Requirement
154
168
  requirements:
155
169
  - - "~>"
156
- - !ruby/object:Gem::Version
157
- version: '3.0'
158
- - - "<"
159
170
  - !ruby/object:Gem::Version
160
171
  version: '3.9'
161
172
  type: :runtime
@@ -163,9 +174,6 @@ dependencies:
163
174
  version_requirements: !ruby/object:Gem::Requirement
164
175
  requirements:
165
176
  - - "~>"
166
- - !ruby/object:Gem::Version
167
- version: '3.0'
168
- - - "<"
169
177
  - !ruby/object:Gem::Version
170
178
  version: '3.9'
171
179
  - !ruby/object:Gem::Dependency
@@ -300,14 +308,14 @@ dependencies:
300
308
  requirements:
301
309
  - - "~>"
302
310
  - !ruby/object:Gem::Version
303
- version: 0.12.2
311
+ version: '0.12'
304
312
  type: :runtime
305
313
  prerelease: false
306
314
  version_requirements: !ruby/object:Gem::Requirement
307
315
  requirements:
308
316
  - - "~>"
309
317
  - !ruby/object:Gem::Version
310
- version: 0.12.2
318
+ version: '0.12'
311
319
  - !ruby/object:Gem::Dependency
312
320
  name: tomlrb
313
321
  requirement: !ruby/object:Gem::Requirement
@@ -433,10 +441,6 @@ files:
433
441
  - lib/bundles/inspec-supermarket/api.rb
434
442
  - lib/bundles/inspec-supermarket/cli.rb
435
443
  - lib/bundles/inspec-supermarket/target.rb
436
- - lib/fetchers/git.rb
437
- - lib/fetchers/local.rb
438
- - lib/fetchers/mock.rb
439
- - lib/fetchers/url.rb
440
444
  - lib/inspec.rb
441
445
  - lib/inspec/archive/tar.rb
442
446
  - lib/inspec/archive/zip.rb
@@ -463,6 +467,10 @@ files:
463
467
  - lib/inspec/exceptions.rb
464
468
  - lib/inspec/expect.rb
465
469
  - lib/inspec/fetcher.rb
470
+ - lib/inspec/fetcher/git.rb
471
+ - lib/inspec/fetcher/local.rb
472
+ - lib/inspec/fetcher/mock.rb
473
+ - lib/inspec/fetcher/url.rb
466
474
  - lib/inspec/file_provider.rb
467
475
  - lib/inspec/formatters.rb
468
476
  - lib/inspec/formatters/base.rb