chefspec 8.0.0 → 9.2.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 888dff160c4e09262e47271fc25e19e24dfa5415f9c17566d5fab2c3b07d3f38
4
- data.tar.gz: a79eacde94a5abdad1ab8e4530ed95d46255323927fbfe9706873aa7d6d99545
3
+ metadata.gz: d5591af3861eae4ba3b5d9c37d274f38fa0279c9a5d91e2668d923251d1885ae
4
+ data.tar.gz: 36be14ae6da887efee4516070e3b6884e43950a8b9fddbbc28660d1ea7f6c841
5
5
  SHA512:
6
- metadata.gz: 76b576b0e8fd51f067bda1eaca73ebb3bd5f49f0ce366ac4c59d84942b2d1437cead58afc7fd1b0c96e7051e656342e2b2ac9e1d2d3c183953ed8fefba15b79f
7
- data.tar.gz: f5ba63555cde2fb189c53ceedfffd46491744605ea50f8927f85502c8ba480455a69ba397cdc27d1ace387509e95b8c5442b10b411ea50b3d18aaf075c0a5b3d
6
+ metadata.gz: 24e86fab969faea333b44ab9db94663efe783383c37760ce581bd0a088e1f3dc96927dc8bab7624da966d5e60440cf6c97e31a2b56b3c72a89135b0805d17ebc
7
+ data.tar.gz: d6b244cc4207077b59a6f53f343b632fe2550549b4e3778bdbfca9848a510861d7fdbe885bc26556c38ba5d74dbb5d619e1073521a2d0a4da3f7d1bd3b94576d
@@ -25,6 +25,6 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.add_dependency 'chef', '>= 14'
27
27
  s.add_dependency 'chef-cli'
28
- s.add_dependency 'fauxhai', '>= 6.11'
28
+ s.add_dependency 'fauxhai-ng', '>= 7.5'
29
29
  s.add_dependency 'rspec', '~> 3.0'
30
30
  end
@@ -3,6 +3,7 @@ module ChefSpec
3
3
  autoload :Core, 'chefspec/api/core'
4
4
  autoload :Described, 'chefspec/api/described'
5
5
  autoload :DoNothing, 'chefspec/api/do_nothing'
6
+ autoload :IncludeAnyRecipe, 'chefspec/api/include_any_recipe'
6
7
  autoload :IncludeRecipe, 'chefspec/api/include_recipe'
7
8
  autoload :Link, 'chefspec/api/link'
8
9
  autoload :Notifications, 'chefspec/api/notifications'
@@ -19,6 +20,7 @@ module ChefSpec
19
20
  klass.include(ChefSpec::API::Core)
20
21
  klass.include(ChefSpec::API::Described)
21
22
  klass.include(ChefSpec::API::DoNothing)
23
+ klass.include(ChefSpec::API::IncludeAnyRecipe)
22
24
  klass.include(ChefSpec::API::IncludeRecipe)
23
25
  klass.include(ChefSpec::API::DoNothing)
24
26
  klass.include(ChefSpec::API::RenderFile)
@@ -0,0 +1,24 @@
1
+ module ChefSpec
2
+ module API
3
+ module IncludeAnyRecipe
4
+ #
5
+ # Assert that a Chef run includes any recipe.
6
+ #
7
+ # include_recipe 'apache2::default'
8
+ #
9
+ # The Examples section demonstrates the different ways to test an
10
+ # +include_any_recipe+ directive with ChefSpec.
11
+ #
12
+ # @example Assert the Chef run did not include any recipes
13
+ # expect(chef_run).not_to include_any_recipe
14
+ #
15
+ #
16
+ # @return [ChefSpec::Matchers::IncludeAnyRecipeMatcher]
17
+ #
18
+ def include_any_recipe
19
+ ChefSpec::Matchers::IncludeAnyRecipeMatcher.new
20
+ end
21
+ alias_method :include_any_recipes, :include_any_recipe
22
+ end
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  require "chef/version"
2
- require "mixlib/shellout"
2
+ require "mixlib/shellout" unless defined?(Mixlib::ShellOut)
3
3
 
4
4
  module ChefSpec
5
5
  module API
@@ -35,7 +35,7 @@ module ChefSpec
35
35
  before do
36
36
  allow(StubsFor).to receive(:setup_stubs_for) do |object, type|
37
37
  type_stubs = _chefspec_stubs_for_registry[type]
38
- resource_object = object.is_a?(Chef::Provider) ? object.new_resource : object
38
+ resource_object = object.respond_to?(:new_resource) ? object.new_resource : object
39
39
  stubs = type_stubs[nil] + type_stubs[resource_object.resource_name.to_s] + type_stubs[resource_object.to_s]
40
40
  stubs.each do |stub|
41
41
  instance_exec(object, &stub)
@@ -56,23 +56,25 @@ module ChefSpec
56
56
  # expect(subject.some_method).to eq "asdf"
57
57
  # end
58
58
  # @param target [String, nil] Resource name to inject, or nil for all resources.
59
- # @param current_resource [Boolean] If true, also register stubs for current_resource objects on the same target.
59
+ # @param current_value [Boolean] If true, also register stubs for current_value objects on the same target.
60
60
  # @param block [Proc] A block taking the resource object as a parameter.
61
61
  # @return [void]
62
- def stubs_for_resource(target=nil, current_resource: true, &block)
62
+ def stubs_for_resource(target=nil, current_value: true, current_resource: true, &block)
63
+ current_value = false if !current_resource
63
64
  _chefspec_stubs_for_registry[:resource][target] << block
64
- stubs_for_current_resource(target, &block) if current_resource
65
+ stubs_for_current_value(target, &block) if current_value
65
66
  end
66
67
 
67
- # Register stubs for current_resource objects.
68
+ # Register stubs for current_value objects.
68
69
  #
69
70
  # @see #stubs_for_resource
70
71
  # @param target [String, nil] Resource name to inject, or nil for all resources.
71
72
  # @param block [Proc] A block taking the resource object as a parameter.
72
73
  # @return [void]
73
- def stubs_for_current_resource(target=nil, &block)
74
- _chefspec_stubs_for_registry[:current_resource][target] << block
74
+ def stubs_for_current_value(target=nil, &block)
75
+ _chefspec_stubs_for_registry[:current_value][target] << block
75
76
  end
77
+ alias_method :stubs_for_current_resource, :stubs_for_current_value
76
78
 
77
79
  # Register stubs for provider objects.
78
80
  #
@@ -111,10 +113,11 @@ module ChefSpec
111
113
  before { stubs_for_resource(*args, &block) }
112
114
  end
113
115
 
114
- # (see StubsFor#stubs_for_current_resource)
115
- def stubs_for_current_resource(*args, &block)
116
- before { stubs_for_current_resource(*args, &block) }
116
+ # (see StubsFor#stubs_for_current_value)
117
+ def stubs_for_current_value(*args, &block)
118
+ before { stubs_for_current_value(*args, &block) }
117
119
  end
120
+ alias_method :stubs_for_current_resource, :stubs_for_current_value
118
121
 
119
122
  # (see StubsFor#stubs_for_provider)
120
123
  def stubs_for_provider(*args, &block)
@@ -90,6 +90,26 @@ module ChefSpec
90
90
  @outputs << block
91
91
  end
92
92
 
93
+ #
94
+ # Change the template for reporting of converage analysis.
95
+ #
96
+ # @param [string] path
97
+ # The template file to use for the output of the report
98
+ #
99
+ # @return [true]
100
+ #
101
+ def set_template(file = 'human.erb')
102
+ [
103
+ ChefSpec.root.join('templates', 'coverage', file),
104
+ File.expand_path(file, Dir.pwd)
105
+ ].each do |temp|
106
+ if File.exist?(temp)
107
+ @template = temp
108
+ return
109
+ end
110
+ end
111
+ raise Error::TemplateNotFound.new(path: file)
112
+ end
93
113
  #
94
114
  # Add a resource to the resource collection. Only new resources are added
95
115
  # and only resources that match the given filter are covered (which is *
@@ -18,3 +18,4 @@ require_relative 'extensions/chef/lwrp_base'
18
18
  require_relative 'extensions/chef/resource/freebsd_package'
19
19
  require_relative 'extensions/chef/run_context/cookbook_compiler'
20
20
  require_relative 'extensions/chef/cookbook_loader'
21
+ require_relative 'extensions/ohai/system'
@@ -1,5 +1,5 @@
1
1
  require 'chef/provider'
2
- require 'chefspec/api'
2
+ require_relative '../../api'
3
3
 
4
4
  Chef::Provider.prepend(Module.new do
5
5
  def self.name
@@ -1,6 +1,6 @@
1
1
  require 'chef/resource'
2
2
  require 'chef/version'
3
- require 'chefspec/api'
3
+ require_relative '../../api'
4
4
 
5
5
  #
6
6
  # Three concerns:
@@ -21,7 +21,8 @@ module ChefSpec::Extensions::Chef::Resource
21
21
  # If we're directly inside a `load_current_resource`, this is probably
22
22
  # something like `new_resource.class.new` so we want to call this a current_resource,
23
23
  # Otherwise it's probably a normal resource instantiation.
24
- mode = caller[1].include?("`load_current_resource'") ? :current_resource : :resource
24
+ mode = :resource
25
+ mode = :current_value if caller.any? { |x| x.include?("`load_current_resource'") || x.include?("`load_after_resource'") }
25
26
  ChefSpec::API::StubsFor.setup_stubs_for(self, mode)
26
27
  end
27
28
  end
@@ -33,7 +34,7 @@ module ChefSpec::Extensions::Chef::Resource
33
34
  super.tap do |dup_resource|
34
35
  # We're directly inside a load_current_resource, which is probably via
35
36
  # the load_current_value DSL system, so call this a current resource.
36
- ChefSpec::API::StubsFor.setup_stubs_for(dup_resource, :current_resource) if stack.first.include?("`load_current_resource'")
37
+ ChefSpec::API::StubsFor.setup_stubs_for(dup_resource, :current_value) if caller.any? { |x| x.include?("`load_current_resource'") || x.include?("`load_after_resource'") }
37
38
  end
38
39
  end
39
40
 
@@ -133,7 +134,7 @@ module ChefSpec::Extensions::Chef::Resource
133
134
  super
134
135
  end
135
136
 
136
- def provides(name, *args, &block)
137
+ def provides(name, **options, &block)
137
138
  provides_names << name unless provides_names.include?(name)
138
139
  inject_actions(*allowed_actions)
139
140
  super
@@ -22,6 +22,15 @@ Chef::RunContext::CookbookCompiler.prepend(Module.new do
22
22
  super
23
23
  end
24
24
 
25
+ def load_ohai_plugins_from_cookbook(cookbook)
26
+ return super unless $CHEFSPEC_MODE
27
+ $CHEFSPEC_OHAI_PRELOAD ||= {}
28
+ # Already loaded this once.
29
+ return if $CHEFSPEC_OHAI_PRELOAD[cookbook]
30
+ $CHEFSPEC_OHAI_PRELOAD[cookbook] = true
31
+ super
32
+ end
33
+
25
34
  def load_lwrps_from_cookbook(cookbook)
26
35
  return super unless $CHEFSPEC_MODE
27
36
  $CHEFSPEC_LWRP_PRELOAD ||= {}
@@ -0,0 +1,11 @@
1
+ require 'ohai/system'
2
+
3
+ Ohai::System.prepend(Module.new do
4
+ # If an Ohai segment exists, don't actually pull data in for ohai.
5
+ # (we have fake data for that)
6
+ # @see Ohai::System#run_additional_plugins
7
+ def run_additional_plugins(plugin_path)
8
+ return super unless $CHEFSPEC_MODE
9
+ # noop
10
+ end
11
+ end)
@@ -1,5 +1,5 @@
1
- require 'fileutils'
2
- require 'singleton'
1
+ require 'fileutils' unless defined?(FileUtils)
2
+ require 'singleton' unless defined?(Singleton)
3
3
 
4
4
  module ChefSpec
5
5
  class FileCachePathProxy
@@ -133,6 +133,18 @@ module ChefSpec
133
133
  # Called when LWRPs are finished loading
134
134
  def lwrp_load_complete; end
135
135
 
136
+ # Called when an ohai plugin file loading starts
137
+ def ohai_plugin_load_start(file_count); end
138
+
139
+ # Called when an ohai plugin file has been loaded
140
+ def ohai_plugin_file_loaded(path); end
141
+
142
+ # Called when an ohai plugin file has an error on load.
143
+ def ohai_plugin_file_load_failed(path, exception); end
144
+
145
+ # Called when an ohai plugin file loading has finished
146
+ def ohai_plugin_load_complete; end
147
+
136
148
  # Called before attribute files are loaded
137
149
  def attribute_load_start(attribute_file_count); end
138
150
 
@@ -1,6 +1,7 @@
1
1
  module ChefSpec
2
2
  module Matchers
3
3
  require_relative 'matchers/do_nothing_matcher'
4
+ require_relative 'matchers/include_any_recipe_matcher'
4
5
  require_relative 'matchers/include_recipe_matcher'
5
6
  require_relative 'matchers/link_to_matcher'
6
7
  require_relative 'matchers/notifications_matcher'
@@ -0,0 +1,51 @@
1
+ module ChefSpec::Matchers
2
+ class IncludeAnyRecipeMatcher
3
+ def matches?(runner)
4
+ @runner = runner
5
+ !(loaded_recipes - run_list_recipes).empty?
6
+ end
7
+
8
+ def description
9
+ 'include any recipe'
10
+ end
11
+
12
+ def failure_message
13
+ 'expected to include any recipe'
14
+ end
15
+
16
+ def failure_message_when_negated
17
+ 'expected not to include any recipes'
18
+ end
19
+
20
+ private
21
+
22
+ #
23
+ # The list of run_list recipes on the Chef run (normalized)
24
+ #
25
+ # @return [Array<String>]
26
+ #
27
+ def run_list_recipes
28
+ @runner.run_context.node.run_list.run_list_items.map { |x| with_default(x.name) }
29
+ end
30
+
31
+ #
32
+ # Automatically appends "+::default+" to recipes that need them.
33
+ #
34
+ # @param [String] name
35
+ #
36
+ # @return [String]
37
+ #
38
+ def with_default(name)
39
+ name.include?('::') ? name : "#{name}::default"
40
+ end
41
+
42
+ #
43
+ # The list of loaded recipes on the Chef run (normalized)
44
+ #
45
+ # @return [Array<String>]
46
+ #
47
+ def loaded_recipes
48
+ @runner.run_context.loaded_recipes.map { |name| with_default(name) }
49
+ end
50
+ end
51
+ end
@@ -1,4 +1,4 @@
1
- require "chefspec/solo_runner"
1
+ require_relative "solo_runner"
2
2
 
3
3
  module ChefSpec
4
4
  # As we start to migrate back to only SoloRunner, include this alias for now.
@@ -1,3 +1,3 @@
1
1
  module ChefSpec
2
- VERSION = '8.0.0'
2
+ VERSION = '9.2.1'
3
3
  end
@@ -122,7 +122,7 @@ module ChefSpec
122
122
  require "chef_zero/data_store/memory_store_v2"
123
123
  ChefZero::DataStore::MemoryStoreV2.new
124
124
  when :on_disk
125
- require "tmpdir"
125
+ require "tmpdir" unless defined?(Dir.mktmpdir)
126
126
  require "chef_zero/data_store/raw_file_store"
127
127
  tmpdir = Dir.mktmpdir
128
128
  ChefZero::DataStore::RawFileStore.new(Dir.mktmpdir)
@@ -1,6 +1,11 @@
1
1
  require 'chefspec'
2
2
  require 'support/hash'
3
3
 
4
+
5
+ ChefSpec::Coverage.start! do
6
+ set_template 'table.erb'
7
+ end
8
+
4
9
  RSpec.configure do |config|
5
10
  config.expect_with(:rspec) { |c| c.syntax = :expect }
6
11
  config.filter_run(focus: true)
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe ChefSpec::Matchers::IncludeAnyRecipeMatcher do
4
+ let(:node) { double('Chef::Node', run_list: run_list) }
5
+ let(:run_list) { double('Chef::RunList', run_list_items: run_list_items) }
6
+ let(:run_list_items) { [run_list_item_one] }
7
+ let(:run_list_item_one) { double('Chef::RunList::RunListItem', name: 'one') }
8
+ let(:run_list_item_two) { double('Chef::RunList::RunListItem', name: 'two') }
9
+ let(:loaded_recipes) { %w(one) }
10
+ let(:chef_run) { double('chef run', run_context: { loaded_recipes: loaded_recipes, node: node }) }
11
+
12
+ subject { described_class.new }
13
+
14
+ describe '#failure_message' do
15
+ it 'has the right value' do
16
+ subject.matches?(chef_run)
17
+ expect(subject.failure_message).to eq('expected to include any recipe')
18
+ end
19
+ end
20
+
21
+ describe '#failure_message_when_negated' do
22
+ it 'has the right value' do
23
+ subject.matches?(chef_run)
24
+ expect(subject.failure_message_when_negated).to eq('expected not to include any recipes')
25
+ end
26
+ end
27
+
28
+ describe '#description' do
29
+ it 'has the right value' do
30
+ subject.matches?(chef_run)
31
+ expect(subject.description).to eq('include any recipe')
32
+ end
33
+ end
34
+
35
+ describe '#matches?' do
36
+ context 'when 0 recipes are included' do
37
+ let(:loaded_recipes) { %w(one) }
38
+
39
+ it 'returns false' do
40
+ expect(subject.matches?(chef_run)).to be false
41
+ end
42
+ end
43
+
44
+ context 'when at least one recipe is included' do
45
+ let(:loaded_recipes) { %w(one two) }
46
+
47
+ it 'returns true' do
48
+ expect(subject.matches?(chef_run)).to be true
49
+ end
50
+ end
51
+ end
52
+ end
@@ -98,7 +98,7 @@ describe ChefSpec::SoloRunner do
98
98
  it 'sets the attributes from fauxhai' do
99
99
  expect(hash['os']).to eq('linux')
100
100
  expect(hash['languages']['ruby']['ruby_bin']).to eq('/usr/local/bin/ruby')
101
- expect(hash['os_version']).to match(/4.15.0-.*-.*/) # avoid failing when fauxhai data changes
101
+ expect(hash['os_version']).to match(/5.3.0-.*-.*/) # avoid failing when fauxhai data changes
102
102
  expect(hash['fqdn']).to eq('fauxhai.local')
103
103
  expect(hash['domain']).to eq('local')
104
104
  expect(hash['ipaddress']).to eq('10.0.0.2')
@@ -0,0 +1,22 @@
1
+
2
+ <% if @total == 0 %>
3
+ No Chef resources found, skipping coverage calculation...
4
+ <% else %>
5
+ ChefSpec Coverage report generated...
6
+
7
+ Total Resources: <%= @total %>
8
+ Touched Resources: <%= @touched %>
9
+ Touch Coverage: <%= @coverage %>%
10
+
11
+ <% if @untouched_resources.empty? %>
12
+ You are awesome and so is your test coverage! Have a fantastic day!
13
+
14
+ <% else %>
15
+ Untouched Resources:
16
+
17
+ <% @untouched_resources.each do |resource| %>
18
+ <%= resource.to_s.ljust(32) %> <%= resource.source_file %>:<%= resource.source_line %>
19
+ <% end %>
20
+
21
+ <% end %>
22
+ <% end %>
@@ -0,0 +1,8 @@
1
+ { "resources":[
2
+ <%= @all_resources.map { |resource| resource.to_json }.join(",\n") %>
3
+ ],
4
+ "resource_count": <%= @total %>,
5
+ "resources_touched": <%= @touched %>,
6
+ "resource_coverage": <%= @coverage %>
7
+
8
+ }
@@ -0,0 +1,14 @@
1
+ <%='Touched'.to_s.ljust(8) %> <%='Resource'.to_s.ljust(48) %> File:Line
2
+ <% @all_resources.each do |resource| %>
3
+ <%=resource.touched?.to_s.ljust(8) %> <%= resource.to_s.ljust(48) %> <%= resource.source_file %>:<%= resource.source_line %>
4
+ <% end %>
5
+
6
+ <% if @total == 0 %>
7
+ No Chef resources found, skipping coverage calculation...
8
+ <% else %>
9
+ ChefSpec Coverage report generated...
10
+
11
+ Total Resources: <%= @total %>
12
+ Touched Resources: <%= @touched %>
13
+ Touch Coverage: <%= @coverage %>%
14
+ <% end %>
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chefspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.0
4
+ version: 9.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Crump
8
8
  - Seth Vargo
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-07-16 00:00:00.000000000 Z
12
+ date: 2020-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chef
@@ -40,19 +40,19 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: fauxhai
43
+ name: fauxhai-ng
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '6.11'
48
+ version: '7.5'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '6.11'
55
+ version: '7.5'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -86,6 +86,7 @@ files:
86
86
  - lib/chefspec/api/core.rb
87
87
  - lib/chefspec/api/described.rb
88
88
  - lib/chefspec/api/do_nothing.rb
89
+ - lib/chefspec/api/include_any_recipe.rb
89
90
  - lib/chefspec/api/include_recipe.rb
90
91
  - lib/chefspec/api/link.rb
91
92
  - lib/chefspec/api/notifications.rb
@@ -118,11 +119,13 @@ files:
118
119
  - lib/chefspec/extensions/chef/resource/freebsd_package.rb
119
120
  - lib/chefspec/extensions/chef/run_context/cookbook_compiler.rb
120
121
  - lib/chefspec/extensions/chef/securable.rb
122
+ - lib/chefspec/extensions/ohai/system.rb
121
123
  - lib/chefspec/file_cache_path_proxy.rb
122
124
  - lib/chefspec/formatter.rb
123
125
  - lib/chefspec/librarian.rb
124
126
  - lib/chefspec/matchers.rb
125
127
  - lib/chefspec/matchers/do_nothing_matcher.rb
128
+ - lib/chefspec/matchers/include_any_recipe_matcher.rb
126
129
  - lib/chefspec/matchers/include_recipe_matcher.rb
127
130
  - lib/chefspec/matchers/link_to_matcher.rb
128
131
  - lib/chefspec/matchers/notifications_matcher.rb
@@ -161,6 +164,7 @@ files:
161
164
  - spec/unit/expect_exception_spec.rb
162
165
  - spec/unit/macros_spec.rb
163
166
  - spec/unit/matchers/do_nothing_matcher.rb
167
+ - spec/unit/matchers/include_any_recipe_matcher_spec.rb
164
168
  - spec/unit/matchers/include_recipe_matcher_spec.rb
165
169
  - spec/unit/matchers/link_to_matcher_spec.rb
166
170
  - spec/unit/matchers/notifications_matcher_spec.rb
@@ -181,6 +185,9 @@ files:
181
185
  - spec/unit/stubs/search_registry_spec.rb
182
186
  - spec/unit/stubs/search_stub_spec.rb
183
187
  - spec/unit/stubs/stub_spec.rb
188
+ - templates/coverage/human.erb
189
+ - templates/coverage/json.erb
190
+ - templates/coverage/table.erb
184
191
  - templates/errors/cookbook_path_not_found.erb
185
192
  - templates/errors/erb_template_parse_error.erb
186
193
  - templates/errors/gem_load_error.erb
@@ -194,7 +201,7 @@ homepage: https://github.com/chefspec/chefspec
194
201
  licenses:
195
202
  - MIT
196
203
  metadata: {}
197
- post_install_message:
204
+ post_install_message:
198
205
  rdoc_options: []
199
206
  require_paths:
200
207
  - lib
@@ -209,8 +216,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
216
  - !ruby/object:Gem::Version
210
217
  version: '0'
211
218
  requirements: []
212
- rubygems_version: 3.0.3
213
- signing_key:
219
+ rubygems_version: 3.1.2
220
+ signing_key:
214
221
  specification_version: 4
215
222
  summary: Write RSpec examples and generate coverage reports for Chef recipes!
216
223
  test_files: []