chefspec 7.4.0 → 9.2.0
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 +4 -3
- data/lib/chefspec/api.rb +2 -0
- data/lib/chefspec/api/include_any_recipe.rb +24 -0
- data/lib/chefspec/api/stubs_for.rb +13 -10
- data/lib/chefspec/extensions.rb +1 -0
- data/lib/chefspec/extensions/chef/cookbook/gem_installer.rb +1 -1
- 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/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/policyfile.rb +6 -6
- data/lib/chefspec/runner.rb +1 -1
- data/lib/chefspec/version.rb +1 -1
- data/spec/unit/matchers/include_any_recipe_matcher_spec.rb +52 -0
- metadata +30 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c20bc92ebea039d7261547ec0e91686f1c4c83e57f7bd19e98f4a4e4fce13aa3
|
4
|
+
data.tar.gz: b6f4060d3844074dfffe298c3a5d0d75a766926abf41e80dbb7b95c2aa26500c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8446ad09b864f601169c69f635ee93fd1089ca8c4031e43884d9c87495ce0a57c86d3620ad9de1c2ddb36ceb1d66074352eeacce862a11dd8e3c7303cc0c19f3
|
7
|
+
data.tar.gz: 8d4db22787020c88195ce7ea76bd517b94ab293463b2dddda47614dbd867d8d5490a6a8d77b794bdd273ceca2903d58f46151302482021767c5686f2c549a299
|
data/chefspec.gemspec
CHANGED
@@ -21,9 +21,10 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.files = %w{LICENSE Rakefile Gemfile chefspec.gemspec} + Dir.glob("{lib,templates,spec}/**/*", File::FNM_DOTMATCH).reject { |f| File.directory?(f) }
|
22
22
|
s.require_paths = ['lib']
|
23
23
|
|
24
|
-
s.required_ruby_version = '>= 2.
|
24
|
+
s.required_ruby_version = '>= 2.4'
|
25
25
|
|
26
|
-
s.add_dependency 'chef', '>=
|
27
|
-
s.add_dependency '
|
26
|
+
s.add_dependency 'chef', '>= 14'
|
27
|
+
s.add_dependency 'chef-cli'
|
28
|
+
s.add_dependency 'fauxhai-ng', '>= 7.5'
|
28
29
|
s.add_dependency 'rspec', '~> 3.0'
|
29
30
|
end
|
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
|
@@ -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/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'
|
@@ -25,7 +25,7 @@ Chef::Cookbook::GemInstaller.prepend(Module.new do
|
|
25
25
|
gem_cmd = "gem install #{gem_name} --version '#{gem_requirements.join(', ')}'"
|
26
26
|
gemfile_line = "gem '#{[gem_name, *gem_requirements].join('\', \'')}'"
|
27
27
|
warn "No matching version found for '#{gem_name}' in your gem environment.\n" \
|
28
|
-
" - if you are using
|
28
|
+
" - if you are using Chef Workstation, run the following command: \"chef #{gem_cmd}\"\n" \
|
29
29
|
" - if you are using bundler, append \"#{gemfile_line}\" to your Gemfile and run \"bundle install\"\n" \
|
30
30
|
" - otherwise run: \"#{gem_cmd}\""
|
31
31
|
end
|
@@ -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/policyfile.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
begin
|
2
|
-
require 'chef-
|
3
|
-
require 'chef-
|
2
|
+
require 'chef-cli/policyfile_services/export_repo'
|
3
|
+
require 'chef-cli/policyfile_services/install'
|
4
4
|
rescue LoadError
|
5
|
-
raise ChefSpec::Error::GemLoadError.new(gem: 'chef-
|
5
|
+
raise ChefSpec::Error::GemLoadError.new(gem: 'chef-cli', name: 'ChefCLI')
|
6
6
|
end
|
7
7
|
|
8
8
|
module ChefSpec
|
@@ -27,14 +27,14 @@ module ChefSpec
|
|
27
27
|
policyfile_path = File.join(Dir.pwd, 'Policyfile.rb')
|
28
28
|
end
|
29
29
|
|
30
|
-
installer =
|
30
|
+
installer = ChefCLI::PolicyfileServices::Install.new(
|
31
31
|
policyfile: policyfile_path,
|
32
|
-
ui:
|
32
|
+
ui: ChefCLI::UI.null
|
33
33
|
)
|
34
34
|
|
35
35
|
installer.run
|
36
36
|
|
37
|
-
exporter =
|
37
|
+
exporter = ChefCLI::PolicyfileServices::ExportRepo.new(
|
38
38
|
policyfile: policyfile_path,
|
39
39
|
export_dir: @tmpdir
|
40
40
|
)
|
data/lib/chefspec/runner.rb
CHANGED
data/lib/chefspec/version.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
|
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.0
|
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-06-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: chef
|
@@ -17,28 +17,42 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '14'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
27
|
+
version: '14'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: chef-cli
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '0'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: fauxhai-ng
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '7.5'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '7.5'
|
42
56
|
- !ruby/object:Gem::Dependency
|
43
57
|
name: rspec
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,6 +86,7 @@ files:
|
|
72
86
|
- lib/chefspec/api/core.rb
|
73
87
|
- lib/chefspec/api/described.rb
|
74
88
|
- lib/chefspec/api/do_nothing.rb
|
89
|
+
- lib/chefspec/api/include_any_recipe.rb
|
75
90
|
- lib/chefspec/api/include_recipe.rb
|
76
91
|
- lib/chefspec/api/link.rb
|
77
92
|
- lib/chefspec/api/notifications.rb
|
@@ -104,11 +119,13 @@ files:
|
|
104
119
|
- lib/chefspec/extensions/chef/resource/freebsd_package.rb
|
105
120
|
- lib/chefspec/extensions/chef/run_context/cookbook_compiler.rb
|
106
121
|
- lib/chefspec/extensions/chef/securable.rb
|
122
|
+
- lib/chefspec/extensions/ohai/system.rb
|
107
123
|
- lib/chefspec/file_cache_path_proxy.rb
|
108
124
|
- lib/chefspec/formatter.rb
|
109
125
|
- lib/chefspec/librarian.rb
|
110
126
|
- lib/chefspec/matchers.rb
|
111
127
|
- lib/chefspec/matchers/do_nothing_matcher.rb
|
128
|
+
- lib/chefspec/matchers/include_any_recipe_matcher.rb
|
112
129
|
- lib/chefspec/matchers/include_recipe_matcher.rb
|
113
130
|
- lib/chefspec/matchers/link_to_matcher.rb
|
114
131
|
- lib/chefspec/matchers/notifications_matcher.rb
|
@@ -147,6 +164,7 @@ files:
|
|
147
164
|
- spec/unit/expect_exception_spec.rb
|
148
165
|
- spec/unit/macros_spec.rb
|
149
166
|
- spec/unit/matchers/do_nothing_matcher.rb
|
167
|
+
- spec/unit/matchers/include_any_recipe_matcher_spec.rb
|
150
168
|
- spec/unit/matchers/include_recipe_matcher_spec.rb
|
151
169
|
- spec/unit/matchers/link_to_matcher_spec.rb
|
152
170
|
- spec/unit/matchers/notifications_matcher_spec.rb
|
@@ -183,7 +201,7 @@ homepage: https://github.com/chefspec/chefspec
|
|
183
201
|
licenses:
|
184
202
|
- MIT
|
185
203
|
metadata: {}
|
186
|
-
post_install_message:
|
204
|
+
post_install_message:
|
187
205
|
rdoc_options: []
|
188
206
|
require_paths:
|
189
207
|
- lib
|
@@ -191,15 +209,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
191
209
|
requirements:
|
192
210
|
- - ">="
|
193
211
|
- !ruby/object:Gem::Version
|
194
|
-
version: '2.
|
212
|
+
version: '2.4'
|
195
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
214
|
requirements:
|
197
215
|
- - ">="
|
198
216
|
- !ruby/object:Gem::Version
|
199
217
|
version: '0'
|
200
218
|
requirements: []
|
201
|
-
rubygems_version: 3.
|
202
|
-
signing_key:
|
219
|
+
rubygems_version: 3.1.2
|
220
|
+
signing_key:
|
203
221
|
specification_version: 4
|
204
222
|
summary: Write RSpec examples and generate coverage reports for Chef recipes!
|
205
223
|
test_files: []
|