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 +4 -4
- data/chefspec.gemspec +1 -1
- data/lib/chefspec/api.rb +2 -0
- data/lib/chefspec/api/include_any_recipe.rb +24 -0
- data/lib/chefspec/api/stubs_for.rb +14 -11
- data/lib/chefspec/coverage.rb +20 -0
- data/lib/chefspec/extensions.rb +1 -0
- data/lib/chefspec/extensions/chef/provider.rb +1 -1
- data/lib/chefspec/extensions/chef/resource.rb +5 -4
- data/lib/chefspec/extensions/chef/run_context/cookbook_compiler.rb +9 -0
- data/lib/chefspec/extensions/ohai/system.rb +11 -0
- data/lib/chefspec/file_cache_path_proxy.rb +2 -2
- data/lib/chefspec/formatter.rb +12 -0
- data/lib/chefspec/matchers.rb +1 -0
- data/lib/chefspec/matchers/include_any_recipe_matcher.rb +51 -0
- data/lib/chefspec/runner.rb +1 -1
- data/lib/chefspec/version.rb +1 -1
- data/lib/chefspec/zero_server.rb +1 -1
- data/spec/spec_helper.rb +5 -0
- data/spec/unit/matchers/include_any_recipe_matcher_spec.rb +52 -0
- data/spec/unit/solo_runner_spec.rb +1 -1
- data/templates/coverage/human.erb +22 -0
- data/templates/coverage/json.erb +8 -0
- data/templates/coverage/table.erb +14 -0
- metadata +16 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5591af3861eae4ba3b5d9c37d274f38fa0279c9a5d91e2668d923251d1885ae
|
4
|
+
data.tar.gz: 36be14ae6da887efee4516070e3b6884e43950a8b9fddbbc28660d1ea7f6c841
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24e86fab969faea333b44ab9db94663efe783383c37760ce581bd0a088e1f3dc96927dc8bab7624da966d5e60440cf6c97e31a2b56b3c72a89135b0805d17ebc
|
7
|
+
data.tar.gz: d6b244cc4207077b59a6f53f343b632fe2550549b4e3778bdbfca9848a510861d7fdbe885bc26556c38ba5d74dbb5d619e1073521a2d0a4da3f7d1bd3b94576d
|
data/chefspec.gemspec
CHANGED
data/lib/chefspec/api.rb
CHANGED
@@ -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.
|
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
|
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
|
-
|
65
|
+
stubs_for_current_value(target, &block) if current_value
|
65
66
|
end
|
66
67
|
|
67
|
-
# Register stubs for
|
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
|
74
|
-
_chefspec_stubs_for_registry[:
|
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#
|
115
|
-
def
|
116
|
-
before {
|
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)
|
data/lib/chefspec/coverage.rb
CHANGED
@@ -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 *
|
data/lib/chefspec/extensions.rb
CHANGED
@@ -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,6 +1,6 @@
|
|
1
1
|
require 'chef/resource'
|
2
2
|
require 'chef/version'
|
3
|
-
|
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 =
|
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, :
|
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,
|
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)
|
data/lib/chefspec/formatter.rb
CHANGED
@@ -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
|
|
data/lib/chefspec/matchers.rb
CHANGED
@@ -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
|
data/lib/chefspec/runner.rb
CHANGED
data/lib/chefspec/version.rb
CHANGED
data/lib/chefspec/zero_server.rb
CHANGED
@@ -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)
|
data/spec/spec_helper.rb
CHANGED
@@ -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(/
|
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,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:
|
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:
|
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: '
|
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: '
|
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.
|
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: []
|