inspec 1.13.0 → 1.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -2
  3. data/Gemfile +1 -1
  4. data/examples/meta-profile/inspec.lock +18 -0
  5. data/examples/meta-profile/vendor/3d473e72d8b70018386a53e0a105e92ccbb4115dc268cadc16ff53d550d2898e.tar.gz +0 -0
  6. data/examples/meta-profile/vendor/793adcbb91cfc2da0044bb9cbf0863773ae2cf89ce9b8343b4295b137f70897b.tar.gz +0 -0
  7. data/examples/meta-profile/vendor/e25d521fb1093b4c23b31a7dc8f41b5540236f4a433960b151bc427523662ab6.tar.gz +0 -0
  8. data/lib/bundles/inspec-artifact/cli.rb +6 -6
  9. data/lib/bundles/inspec-compliance/http.rb +11 -3
  10. data/lib/bundles/inspec-compliance/target.rb +2 -2
  11. data/lib/bundles/inspec-supermarket/cli.rb +1 -1
  12. data/lib/fetchers/git.rb +1 -1
  13. data/lib/inspec/backend.rb +2 -2
  14. data/lib/inspec/base_cli.rb +1 -1
  15. data/lib/inspec/cached_fetcher.rb +2 -2
  16. data/lib/inspec/cli.rb +1 -0
  17. data/lib/inspec/control_eval_context.rb +0 -2
  18. data/lib/inspec/dependencies/lockfile.rb +6 -4
  19. data/lib/inspec/dependencies/requirement.rb +1 -1
  20. data/lib/inspec/dependencies/resolver.rb +4 -4
  21. data/lib/inspec/dsl.rb +2 -2
  22. data/lib/inspec/fetcher.rb +1 -1
  23. data/lib/inspec/file_provider.rb +4 -4
  24. data/lib/inspec/library_eval_context.rb +1 -1
  25. data/lib/inspec/objects/list.rb +1 -1
  26. data/lib/inspec/plugins.rb +1 -1
  27. data/lib/inspec/plugins/fetcher.rb +4 -4
  28. data/lib/inspec/plugins/resource.rb +0 -1
  29. data/lib/inspec/plugins/source_reader.rb +3 -3
  30. data/lib/inspec/profile.rb +4 -4
  31. data/lib/inspec/profile_context.rb +1 -1
  32. data/lib/inspec/resource.rb +2 -2
  33. data/lib/inspec/runner.rb +4 -4
  34. data/lib/inspec/secrets.rb +1 -1
  35. data/lib/inspec/shell.rb +1 -1
  36. data/lib/inspec/source_reader.rb +1 -1
  37. data/lib/inspec/version.rb +1 -1
  38. data/lib/matchers/matchers.rb +7 -7
  39. data/lib/resources/apache_conf.rb +1 -1
  40. data/lib/resources/auditd_conf.rb +1 -1
  41. data/lib/resources/auditd_rules.rb +1 -1
  42. data/lib/resources/bridge.rb +1 -1
  43. data/lib/resources/etc_group.rb +2 -2
  44. data/lib/resources/file.rb +6 -6
  45. data/lib/resources/groups.rb +4 -4
  46. data/lib/resources/grub_conf.rb +3 -3
  47. data/lib/resources/host.rb +1 -1
  48. data/lib/resources/inetd_conf.rb +1 -1
  49. data/lib/resources/interface.rb +1 -1
  50. data/lib/resources/json.rb +1 -1
  51. data/lib/resources/limits_conf.rb +1 -1
  52. data/lib/resources/login_def.rb +1 -1
  53. data/lib/resources/mysql_conf.rb +1 -1
  54. data/lib/resources/ntp_conf.rb +1 -1
  55. data/lib/resources/packages.rb +2 -2
  56. data/lib/resources/parse_config.rb +1 -1
  57. data/lib/resources/port.rb +2 -2
  58. data/lib/resources/postgres_conf.rb +1 -1
  59. data/lib/resources/security_policy.rb +1 -1
  60. data/lib/resources/ssh_conf.rb +1 -1
  61. data/lib/resources/ssl.rb +1 -1
  62. data/lib/resources/users.rb +5 -5
  63. data/lib/resources/xinetd.rb +1 -1
  64. data/lib/utils/command_wrapper.rb +3 -3
  65. data/lib/utils/filter.rb +1 -1
  66. data/lib/utils/plugin_registry.rb +3 -3
  67. data/lib/utils/simpleconfig.rb +1 -1
  68. metadata +6 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d2e2aeebe40a757983d190ca0921c507e1158c33
4
- data.tar.gz: 99aad400d64fd3da51392aaa752cbbb2a2647a6b
3
+ metadata.gz: fb888c0cb724974ef7d939097b4f2b035653d6d7
4
+ data.tar.gz: 9e7eb4ff65ea768f8fe1782ce998a1c0ed825896
5
5
  SHA512:
6
- metadata.gz: 538a625e9eb9019e46b72095139215548f2f5aa96bb4cfba9e54ac0c4ad64375a4be36f0d15d099b9dde0cb0c8e34f6bc2894dff712adbdffe68d5ffb57c5e7b
7
- data.tar.gz: 75fa86184262907ea53bff79ba9c708671970c7825ee33e966b88feb2739c7ed0c38b189a13394edd1e6e2a70060853f3e8e2ced4488f0d888cf011ccce0aa7e
6
+ metadata.gz: cd794bbc14da92dc306a9c7b8faa71a2d4fecd272c95918de9de5e59ac5669e8d93b880684f2263b751a10ff20bc9eb843b06692c00673abba3af22707dba85e
7
+ data.tar.gz: a6e46c9012ad7d3a368d90f3f0912c02ab7ca62a90619af69d204f2864b641e22448f32b3679337f231665ca2fda820d490ddcfb7fea2bb71b93c82bd5a51192
@@ -1,7 +1,25 @@
1
1
  # Change Log
2
2
 
3
- ## [1.13.0](https://github.com/chef/inspec/tree/1.13.0) (2017-02-07)
4
- [Full Changelog](https://github.com/chef/inspec/compare/v1.12.0...1.13.0)
3
+ ## [1.14.0](https://github.com/chef/inspec/tree/1.14.0) (2017-02-09)
4
+ [Full Changelog](https://github.com/chef/inspec/compare/v1.13.0...1.14.0)
5
+
6
+ **Fixed bugs:**
7
+
8
+ - map url to https for compliance plugin [\#1471](https://github.com/chef/inspec/pull/1471) ([arlimus](https://github.com/arlimus))
9
+
10
+ **Closed issues:**
11
+
12
+ - Display meaningful error message when uploading profiles to a server with self-signed certs [\#1469](https://github.com/chef/inspec/issues/1469)
13
+
14
+ **Merged pull requests:**
15
+
16
+ - Use RuboCop 0.39.0 \(same as chefstyle\) [\#1478](https://github.com/chef/inspec/pull/1478) ([tduffield](https://github.com/tduffield))
17
+ - bugfix: warn users about insecure login requirements [\#1472](https://github.com/chef/inspec/pull/1472) ([arlimus](https://github.com/arlimus))
18
+ - Add support for "inspec -v" showing the version [\#1470](https://github.com/chef/inspec/pull/1470) ([adamleff](https://github.com/adamleff))
19
+ - Replace slack invite form on Community, fix surprise code example [\#1468](https://github.com/chef/inspec/pull/1468) ([adamleff](https://github.com/adamleff))
20
+
21
+ ## [v1.13.0](https://github.com/chef/inspec/tree/v1.13.0) (2017-02-07)
22
+ [Full Changelog](https://github.com/chef/inspec/compare/v1.12.0...v1.13.0)
5
23
 
6
24
  **Implemented enhancements:**
7
25
 
data/Gemfile CHANGED
@@ -14,7 +14,7 @@ group :test do
14
14
  gem 'bundler', '~> 1.5'
15
15
  gem 'minitest', '~> 5.5'
16
16
  gem 'rake', '~> 10'
17
- gem 'rubocop', '~> 0.36.0'
17
+ gem 'rubocop', '= 0.39.0'
18
18
  gem 'simplecov', '~> 0.10'
19
19
  gem 'concurrent-ruby', '~> 0.9'
20
20
  gem 'mocha', '~> 1.1'
@@ -0,0 +1,18 @@
1
+ ---
2
+ lockfile_version: 1
3
+ depends:
4
+ - name: dev-sec/ssh-baseline
5
+ resolved_source:
6
+ url: https://github.com/dev-sec/ssh-baseline/archive/master.tar.gz
7
+ sha256: e25d521fb1093b4c23b31a7dc8f41b5540236f4a433960b151bc427523662ab6
8
+ version_constraints: ">= 0"
9
+ - name: ssl-benchmark
10
+ resolved_source:
11
+ url: https://github.com/dev-sec/ssl-benchmark/archive/master.tar.gz
12
+ sha256: 793adcbb91cfc2da0044bb9cbf0863773ae2cf89ce9b8343b4295b137f70897b
13
+ version_constraints: ">= 0"
14
+ - name: windows-patch-benchmark
15
+ resolved_source:
16
+ url: https://github.com/chris-rock/windows-patch-benchmark/archive/master.tar.gz
17
+ sha256: 3d473e72d8b70018386a53e0a105e92ccbb4115dc268cadc16ff53d550d2898e
18
+ version_constraints: ">= 0"
@@ -154,17 +154,17 @@ module Artifact
154
154
  p = Pathname.new(path_to_profile)
155
155
  p = p.join('inspec.yml')
156
156
  if not p.exist?
157
- fail "#{path_to_profile} doesn't appear to be a valid Inspec profile"
157
+ raise "#{path_to_profile} doesn't appear to be a valid Inspec profile"
158
158
  end
159
159
  yaml = YAML.load_file(p.to_s)
160
160
  yaml = yaml.to_hash
161
161
 
162
162
  if not yaml.key? 'name'
163
- fail 'Profile is invalid, name is not defined'
163
+ raise 'Profile is invalid, name is not defined'
164
164
  end
165
165
 
166
166
  if not yaml.key? 'version'
167
- fail 'Profile is invalid, version is not defined'
167
+ raise 'Profile is invalid, version is not defined'
168
168
  end
169
169
  rescue => e
170
170
  # rewrap it and pass it up to the CLI
@@ -212,15 +212,15 @@ module Artifact
212
212
  public_keyfile = "#{file_keyname}.pem.pub"
213
213
  puts "Looking for #{public_keyfile} to verify artifact"
214
214
  if not File.exist? public_keyfile
215
- fail "Can't find #{public_keyfile}"
215
+ raise "Can't find #{public_keyfile}"
216
216
  end
217
217
 
218
218
  if not VALID_PROFILE_DIGESTS.member? file_alg
219
- fail 'Invalid artifact digest algorithm detected'
219
+ raise 'Invalid artifact digest algorithm detected'
220
220
  end
221
221
 
222
222
  if not VALID_PROFILE_VERSIONS.member? file_version
223
- fail 'Invalid artifact version detected'
223
+ raise 'Invalid artifact version detected'
224
224
  end
225
225
  end
226
226
 
@@ -10,6 +10,7 @@ module Compliance
10
10
  class HTTP
11
11
  # generic get requires
12
12
  def self.get(url, headers = nil, insecure)
13
+ url = "https://#{url}" if URI.parse(url).scheme.nil?
13
14
  uri = URI.parse(url)
14
15
  req = Net::HTTP::Get.new(uri.path)
15
16
  if !headers.nil?
@@ -38,7 +39,7 @@ module Compliance
38
39
  # post a file
39
40
  def self.post_file(url, headers, file_path, insecure)
40
41
  uri = URI.parse(url)
41
- fail "Unable to parse URL: #{url}" if uri.nil? || uri.host.nil?
42
+ raise "Unable to parse URL: #{url}" if uri.nil? || uri.host.nil?
42
43
  http = Net::HTTP.new(uri.host, uri.port)
43
44
 
44
45
  # set connection flags
@@ -67,11 +68,18 @@ module Compliance
67
68
  }
68
69
  opts[:verify_mode] = OpenSSL::SSL::VERIFY_NONE if insecure
69
70
 
70
- fail "Unable to parse URI: #{uri}" if uri.nil? || uri.host.nil?
71
- res = Net::HTTP.start(uri.host, uri.port, opts) {|http|
71
+ raise "Unable to parse URI: #{uri}" if uri.nil? || uri.host.nil?
72
+ res = Net::HTTP.start(uri.host, uri.port, opts) { |http|
72
73
  http.request(req)
73
74
  }
74
75
  res
76
+
77
+ rescue OpenSSL::SSL::SSLError => e
78
+ raise e unless e.message.include? 'certificate verify failed'
79
+
80
+ puts "Error: Failed to connect to #{uri}."
81
+ puts 'If the server uses a self-signed certificate, please re-run the login command with the --insecure option.'
82
+ exit 1
75
83
  end
76
84
  end
77
85
  end
@@ -37,7 +37,7 @@ module Compliance
37
37
  server = 'compliance'
38
38
  msg = "inspec compliance login https://your_compliance_server --user admin --insecure --token 'PASTE TOKEN HERE' "
39
39
  end
40
- fail Inspec::FetcherFailure, <<EOF
40
+ raise Inspec::FetcherFailure, <<EOF
41
41
 
42
42
  Cannot fetch #{uri} because your #{server} token has not been
43
43
  configured.
@@ -51,7 +51,7 @@ EOF
51
51
  # verifies that the target e.g base/ssh exists
52
52
  profile = uri.host + uri.path
53
53
  if !Compliance::API.exist?(config, profile)
54
- fail Inspec::FetcherFailure, "The compliance profile #{profile} was not found on the configured compliance server"
54
+ raise Inspec::FetcherFailure, "The compliance profile #{profile} was not found on the configured compliance server"
55
55
  end
56
56
  profile_fetch_url = Compliance::API.target_url(config, profile)
57
57
  end
@@ -45,7 +45,7 @@ module Supermarket
45
45
  "#{p['tool_owner']}/#{p['slug']}" == profile
46
46
  }
47
47
 
48
- if found.length == 0
48
+ if found.empty?
49
49
  puts "#{mark_text(profile)} is not available on Supermarket"
50
50
  return
51
51
  end
@@ -86,7 +86,7 @@ module Fetchers
86
86
  cmd = shellout("git ls-remote \"#{@remote_url}\" \"#{ref_name}*\"")
87
87
  ref = parse_ls_remote(cmd.stdout, ref_name)
88
88
  if !ref
89
- fail "Unable to resolve #{ref_name} to a specific git commit for #{@remote_url}"
89
+ raise "Unable to resolve #{ref_name} to a specific git commit for #{@remote_url}"
90
90
  end
91
91
  ref
92
92
  end
@@ -17,12 +17,12 @@ module Inspec
17
17
  name = Train.validate_backend(conf)
18
18
  transport = Train.create(name, conf)
19
19
  if transport.nil?
20
- fail "Can't find transport backend '#{name}'."
20
+ raise "Can't find transport backend '#{name}'."
21
21
  end
22
22
 
23
23
  connection = transport.connection
24
24
  if connection.nil?
25
- fail "Can't connect to transport backend '#{name}'."
25
+ raise "Can't connect to transport backend '#{name}'."
26
26
  end
27
27
 
28
28
  cls = Class.new do
@@ -142,7 +142,7 @@ module Inspec
142
142
  $stderr.puts exception.message
143
143
  exit(1)
144
144
  else
145
- raise exception # rubocop:disable Style/SignalException
145
+ raise exception
146
146
  end
147
147
  end
148
148
 
@@ -12,7 +12,7 @@ module Inspec
12
12
  @fetcher = Inspec::Fetcher.resolve(target)
13
13
 
14
14
  if @fetcher.nil?
15
- fail("Could not fetch inspec profile in #{target.inspect}.")
15
+ raise("Could not fetch inspec profile in #{target.inspect}.")
16
16
  end
17
17
 
18
18
  @cache = cache
@@ -50,7 +50,7 @@ module Inspec
50
50
  def assert_cache_sanity!
51
51
  if target.respond_to?(:key?) && target.key?(:sha256)
52
52
  if fetcher.resolved_source[:sha256] != target[:sha256]
53
- fail <<EOF
53
+ raise <<EOF
54
54
  The remote source #{fetcher} no longer has the requested content:
55
55
 
56
56
  Request Content Hash: #{target[:sha256]}
@@ -230,6 +230,7 @@ class Inspec::InspecCLI < Inspec::BaseCLI # rubocop:disable Metrics/ClassLength
230
230
  puts "\nYour version of InSpec is out of date! The latest version is #{latest}."
231
231
  end
232
232
  end
233
+ map %w{-v --version} => :version
233
234
 
234
235
  private
235
236
 
@@ -35,8 +35,6 @@ module Inspec
35
35
  # @param profile_context [Inspec::ProfileContext]
36
36
  # @param outer_dsl [OuterDSLClass]
37
37
  # @return [ProfileContextClass]
38
- #
39
- # rubocop:disable Lint/NestedMethodDefinition
40
38
  def self.create(profile_context, resources_dsl) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
41
39
  rule_class = rule_context(resources_dsl)
42
40
  profile_context_owner = profile_context
@@ -18,7 +18,7 @@ module Inspec
18
18
  def self.from_content(content)
19
19
  parsed_content = YAML.load(content)
20
20
  version = parsed_content['lockfile_version']
21
- fail "No lockfile_version set in #{path}!" if version.nil?
21
+ raise "No lockfile_version set in #{path}!" if version.nil?
22
22
  validate_lockfile_version!(version.to_i)
23
23
  new(parsed_content)
24
24
  end
@@ -28,9 +28,10 @@ module Inspec
28
28
  from_content(content)
29
29
  end
30
30
 
31
+ # rubocop:disable Style/GuardClause
31
32
  def self.validate_lockfile_version!(version)
32
33
  if version < MINIMUM_SUPPORTED_VERSION
33
- fail <<EOF
34
+ raise <<EOF
34
35
  This lockfile specifies a lockfile_version of #{version} which is
35
36
  lower than the minimum supported version #{MINIMUM_SUPPORTED_VERSION}.
36
37
 
@@ -39,7 +40,7 @@ Please create a new lockfile for this project by running:
39
40
  inspec vendor
40
41
  EOF
41
42
  elsif version > CURRENT_LOCKFILE_VERSION
42
- fail <<EOF
43
+ raise <<EOF
43
44
  This lockfile claims to be version #{version} which is greater than
44
45
  the most recent lockfile version(#{CURRENT_LOCKFILE_VERSION}).
45
46
 
@@ -48,6 +49,7 @@ used to create the lockfile.
48
49
  EOF
49
50
  end
50
51
  end
52
+ # rubocop:enable Style/GuardClause
51
53
 
52
54
  attr_reader :version, :deps
53
55
  def initialize(lockfile_content_hash)
@@ -80,7 +82,7 @@ EOF
80
82
  else
81
83
  # If we've gotten here, there is likely a mistake in the
82
84
  # lockfile version validation in the constructor.
83
- fail "No lockfile parser for version #{version}"
85
+ raise "No lockfile parser for version #{version}"
84
86
  end
85
87
  end
86
88
 
@@ -10,7 +10,7 @@ module Inspec
10
10
  #
11
11
  class Requirement
12
12
  def self.from_metadata(dep, cache, opts)
13
- fail 'Cannot load empty dependency.' if dep.nil? || dep.empty?
13
+ raise 'Cannot load empty dependency.' if dep.nil? || dep.empty?
14
14
  new(dep[:name], dep[:version], cache, opts[:cwd], opts.merge(dep))
15
15
  end
16
16
 
@@ -26,7 +26,7 @@ module Inspec
26
26
  def self.resolve(dependencies, cache, working_dir, backend)
27
27
  reqs = dependencies.map do |dep|
28
28
  req = Inspec::Requirement.from_metadata(dep, cache, cwd: working_dir, backend: backend)
29
- req || fail("Cannot initialize dependency: #{req}")
29
+ req || raise("Cannot initialize dependency: #{req}")
30
30
  end
31
31
  new.resolve(reqs)
32
32
  end
@@ -40,7 +40,7 @@ module Inspec
40
40
  else
41
41
  "the dependency information for #{path_string.split(' ').last}"
42
42
  end
43
- fail Inspec::DuplicateDep, "The dependency #{dep.name} is listed twice in #{problem_cookbook}"
43
+ raise Inspec::DuplicateDep, "The dependency #{dep.name} is listed twice in #{problem_cookbook}"
44
44
  else
45
45
  seen_items_local << dep.name
46
46
  end
@@ -65,13 +65,13 @@ module Inspec
65
65
  end
66
66
 
67
67
  if new_seen_items.key?(dep.resolved_source)
68
- fail Inspec::CyclicDependencyError, "Dependency #{dep} would cause a dependency cycle (#{new_path_string})"
68
+ raise Inspec::CyclicDependencyError, "Dependency #{dep} would cause a dependency cycle (#{new_path_string})"
69
69
  else
70
70
  new_seen_items[dep.resolved_source] = true
71
71
  end
72
72
 
73
73
  if !dep.source_satisfies_spec?
74
- fail Inspec::UnsatisfiedVersionSpecification, "The profile #{dep.name} from #{dep.resolved_source} has a version #{dep.source_version} which doesn't match #{dep.required_version}"
74
+ raise Inspec::UnsatisfiedVersionSpecification, "The profile #{dep.name} from #{dep.resolved_source} has a version #{dep.source_version} which doesn't match #{dep.required_version}"
75
75
  end
76
76
 
77
77
  Inspec::Log.debug("Adding dependency #{dep.name} (#{dep.resolved_source})")
@@ -19,7 +19,7 @@ module Inspec::DSL
19
19
  alias include_rules include_controls
20
20
 
21
21
  def require_resource(options = {})
22
- fail 'You must specify a specific resource name when calling require_resource()' if options[:resource].nil?
22
+ raise 'You must specify a specific resource name when calling require_resource()' if options[:resource].nil?
23
23
 
24
24
  from_profile = options[:profile] || profile_name
25
25
  target_name = options[:as] || options[:resource]
@@ -33,7 +33,7 @@ module Inspec::DSL
33
33
 
34
34
  dep_entry = dependencies.list[profile_id]
35
35
  if dep_entry.nil?
36
- fail <<EOF
36
+ raise <<EOF
37
37
  Cannot load #{profile_id} since it is not listed as a dependency
38
38
  of #{bind_context.profile_name}.
39
39
 
@@ -34,7 +34,7 @@ module Inspec
34
34
 
35
35
  def self.fetcher(version)
36
36
  if version != 1
37
- fail 'Only fetcher version 1 is supported!'
37
+ raise 'Only fetcher version 1 is supported!'
38
38
  end
39
39
  Inspec::Plugins::Fetcher
40
40
  end
@@ -17,7 +17,7 @@ module Inspec
17
17
  elsif File.exist?(path)
18
18
  DirProvider.new(path)
19
19
  else
20
- fail "No file provider for the provided path: #{path}"
20
+ raise "No file provider for the provided path: #{path}"
21
21
  end
22
22
  end
23
23
 
@@ -25,11 +25,11 @@ module Inspec
25
25
  end
26
26
 
27
27
  def read(_file)
28
- fail "#{self} does not implement `read(...)`. This is required."
28
+ raise "#{self} does not implement `read(...)`. This is required."
29
29
  end
30
30
 
31
31
  def files
32
- fail "Fetcher #{self} does not implement `files()`. This is required."
32
+ raise "Fetcher #{self} does not implement `files()`. This is required."
33
33
  end
34
34
 
35
35
  def relative_provider
@@ -148,7 +148,7 @@ module Inspec
148
148
  @parent = parent_provider
149
149
  @prefix = get_prefix(parent.files)
150
150
  if @prefix.nil?
151
- fail "Could not determine path prefix for #{parent}"
151
+ raise "Could not determine path prefix for #{parent}"
152
152
  end
153
153
  @files = parent.files.find_all { |x| x.start_with?(prefix) && x != prefix }
154
154
  .map { |x| x[prefix.length..-1] }
@@ -35,7 +35,7 @@ module Inspec
35
35
 
36
36
  c3 = Class.new do
37
37
  include Inspec::DSL::RequireOverride
38
- def initialize(require_loader) # rubocop:disable Lint/NestedMethodDefinition
38
+ def initialize(require_loader)
39
39
  @require_loader = require_loader
40
40
  end
41
41
  end
@@ -3,7 +3,7 @@
3
3
  module Inspec
4
4
  class List < Value
5
5
  def map
6
- fail 'Inspec::List.map needs to be called with a block' unless block_given?
6
+ raise 'Inspec::List.map needs to be called with a block' unless block_given?
7
7
  t = List.new
8
8
  t.qualifier = [['x']]
9
9
  yield(t)
@@ -51,7 +51,7 @@ module Inspec
51
51
  def load(name)
52
52
  path = @registry[name]
53
53
  if path.nil?
54
- fail "Couldn't find plugin #{name}. Searching in #{@home}"
54
+ raise "Couldn't find plugin #{name}. Searching in #{@home}"
55
55
  end
56
56
  # puts "Loading plugin #{name} from #{path}"
57
57
  require path
@@ -36,7 +36,7 @@ module Inspec
36
36
  # profile.
37
37
  #
38
38
  def archive_path
39
- fail "Fetcher #{self} does not implement `archive_path()`. This is required."
39
+ raise "Fetcher #{self} does not implement `archive_path()`. This is required."
40
40
  end
41
41
 
42
42
  #
@@ -49,7 +49,7 @@ module Inspec
49
49
  # /foo/bar/baz.zip
50
50
  #
51
51
  def fetch(_path)
52
- fail "Fetcher #{self} does not implement `fetch()`. This is required."
52
+ raise "Fetcher #{self} does not implement `fetch()`. This is required."
53
53
  end
54
54
 
55
55
  #
@@ -59,14 +59,14 @@ module Inspec
59
59
  # tag will be resolved to an exact revision.
60
60
  #
61
61
  def resolved_source
62
- fail "Fetcher #{self} does not implement `resolved_source()`. This is required for terminal fetchers."
62
+ raise "Fetcher #{self} does not implement `resolved_source()`. This is required for terminal fetchers."
63
63
  end
64
64
 
65
65
  #
66
66
  # The unique key based on the content of the remote archive.
67
67
  #
68
68
  def cache_key
69
- fail "Fetcher #{self} does not implement `cache_key()`. This is required for terminal fetchers."
69
+ raise "Fetcher #{self} does not implement `cache_key()`. This is required for terminal fetchers."
70
70
  end
71
71
 
72
72
  #