chefspec 9.1.0 → 9.3.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/Gemfile +16 -9
- data/Rakefile +60 -52
- data/chefspec.gemspec +20 -20
- data/lib/chefspec/api/core.rb +3 -3
- data/lib/chefspec/api/described.rb +3 -5
- data/lib/chefspec/api/stubs.rb +2 -2
- data/lib/chefspec/api/stubs_for.rb +22 -19
- data/lib/chefspec/api.rb +14 -14
- data/lib/chefspec/berkshelf.rb +4 -4
- data/lib/chefspec/cacher.rb +2 -2
- data/lib/chefspec/coverage/filters.rb +18 -15
- data/lib/chefspec/coverage.rb +35 -40
- data/lib/chefspec/deprecations.rb +3 -3
- data/lib/chefspec/errors.rb +7 -7
- data/lib/chefspec/expect_exception.rb +2 -1
- data/lib/chefspec/extensions/chef/client.rb +3 -3
- data/lib/chefspec/extensions/chef/conditional.rb +2 -1
- data/lib/chefspec/extensions/chef/cookbook/gem_installer.rb +5 -4
- data/lib/chefspec/extensions/chef/cookbook_loader.rb +1 -0
- data/lib/chefspec/extensions/chef/cookbook_uploader.rb +1 -1
- data/lib/chefspec/extensions/chef/data_query.rb +3 -3
- data/lib/chefspec/extensions/chef/lwrp_base.rb +1 -0
- data/lib/chefspec/extensions/chef/provider.rb +8 -5
- data/lib/chefspec/extensions/chef/resource/freebsd_package.rb +2 -1
- data/lib/chefspec/extensions/chef/resource.rb +18 -12
- data/lib/chefspec/extensions/chef/run_context/cookbook_compiler.rb +21 -1
- data/lib/chefspec/extensions/chef/securable.rb +1 -1
- data/lib/chefspec/extensions/ohai/system.rb +11 -0
- data/lib/chefspec/extensions.rb +14 -13
- data/lib/chefspec/file_cache_path_proxy.rb +3 -3
- data/lib/chefspec/formatter.rb +15 -3
- data/lib/chefspec/librarian.rb +7 -6
- data/lib/chefspec/matchers/do_nothing_matcher.rb +15 -15
- data/lib/chefspec/matchers/include_any_recipe_matcher.rb +4 -4
- data/lib/chefspec/matchers/include_recipe_matcher.rb +1 -1
- data/lib/chefspec/matchers/link_to_matcher.rb +2 -2
- data/lib/chefspec/matchers/notifications_matcher.rb +5 -4
- data/lib/chefspec/matchers/render_file_matcher.rb +3 -3
- data/lib/chefspec/matchers/resource_matcher.rb +18 -16
- data/lib/chefspec/matchers.rb +9 -9
- data/lib/chefspec/mixins/normalize.rb +1 -1
- data/lib/chefspec/policyfile.rb +6 -6
- data/lib/chefspec/renderer.rb +4 -4
- data/lib/chefspec/rspec.rb +1 -1
- data/lib/chefspec/server.rb +1 -1
- data/lib/chefspec/server_methods.rb +8 -8
- data/lib/chefspec/server_runner.rb +10 -10
- data/lib/chefspec/solo_runner.rb +27 -25
- data/lib/chefspec/stubs/command_registry.rb +1 -1
- data/lib/chefspec/stubs/command_stub.rb +1 -1
- data/lib/chefspec/stubs/data_bag_item_registry.rb +1 -1
- data/lib/chefspec/stubs/data_bag_item_stub.rb +1 -1
- data/lib/chefspec/stubs/data_bag_registry.rb +1 -1
- data/lib/chefspec/stubs/data_bag_stub.rb +1 -1
- data/lib/chefspec/stubs/registry.rb +1 -1
- data/lib/chefspec/stubs/search_registry.rb +2 -2
- data/lib/chefspec/stubs/search_stub.rb +2 -2
- data/lib/chefspec/util.rb +7 -7
- data/lib/chefspec/version.rb +1 -1
- data/lib/chefspec/zero_server.rb +4 -4
- data/lib/chefspec.rb +29 -29
- data/spec/spec_helper.rb +3 -4
- data/spec/support/hash.rb +3 -3
- data/spec/unit/cacher_spec.rb +17 -17
- data/spec/unit/coverage/filters_spec.rb +16 -16
- data/spec/unit/deprecations_spec.rb +8 -9
- data/spec/unit/errors_spec.rb +15 -15
- data/spec/unit/expect_exception_spec.rb +9 -9
- data/spec/unit/macros_spec.rb +50 -50
- data/spec/unit/matchers/do_nothing_matcher.rb +1 -1
- data/spec/unit/matchers/include_any_recipe_matcher_spec.rb +23 -23
- data/spec/unit/matchers/include_recipe_matcher_spec.rb +15 -15
- data/spec/unit/matchers/link_to_matcher_spec.rb +18 -18
- data/spec/unit/matchers/notifications_matcher_spec.rb +15 -16
- data/spec/unit/matchers/render_file_matcher_spec.rb +26 -26
- data/spec/unit/matchers/resource_matcher_spec.rb +1 -1
- data/spec/unit/matchers/state_attrs_matcher_spec.rb +24 -24
- data/spec/unit/matchers/subscribes_matcher_spec.rb +27 -29
- data/spec/unit/renderer_spec.rb +36 -36
- data/spec/unit/server_runner_spec.rb +6 -6
- data/spec/unit/solo_runner_spec.rb +69 -69
- data/spec/unit/stubs/command_registry_spec.rb +11 -11
- data/spec/unit/stubs/command_stub_spec.rb +26 -26
- data/spec/unit/stubs/data_bag_item_registry_spec.rb +17 -17
- data/spec/unit/stubs/data_bag_item_stub_spec.rb +14 -14
- data/spec/unit/stubs/data_bag_registry_spec.rb +16 -16
- data/spec/unit/stubs/data_bag_stub_spec.rb +13 -13
- data/spec/unit/stubs/registry_spec.rb +9 -9
- data/spec/unit/stubs/search_registry_spec.rb +17 -17
- data/spec/unit/stubs/search_stub_spec.rb +14 -14
- data/spec/unit/stubs/stub_spec.rb +22 -22
- metadata +10 -11
- data/lib/chefspec/extensions/.DS_Store +0 -0
- data/lib/chefspec/extensions/chef/.DS_Store +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "chef/run_context/cookbook_compiler"
|
|
2
2
|
|
|
3
3
|
Chef::RunContext::CookbookCompiler.prepend(Module.new do
|
|
4
4
|
# List of compile phases as of Chef 14:
|
|
@@ -15,27 +15,44 @@ Chef::RunContext::CookbookCompiler.prepend(Module.new do
|
|
|
15
15
|
|
|
16
16
|
def load_libraries_from_cookbook(cookbook)
|
|
17
17
|
return super unless $CHEFSPEC_MODE
|
|
18
|
+
|
|
18
19
|
$CHEFSPEC_LIBRARY_PRELOAD ||= {}
|
|
19
20
|
# Already loaded this once.
|
|
20
21
|
return if $CHEFSPEC_LIBRARY_PRELOAD[cookbook]
|
|
22
|
+
|
|
21
23
|
$CHEFSPEC_LIBRARY_PRELOAD[cookbook] = true
|
|
22
24
|
super
|
|
23
25
|
end
|
|
24
26
|
|
|
27
|
+
def load_ohai_plugins_from_cookbook(cookbook)
|
|
28
|
+
return super unless $CHEFSPEC_MODE
|
|
29
|
+
|
|
30
|
+
$CHEFSPEC_OHAI_PRELOAD ||= {}
|
|
31
|
+
# Already loaded this once.
|
|
32
|
+
return if $CHEFSPEC_OHAI_PRELOAD[cookbook]
|
|
33
|
+
|
|
34
|
+
$CHEFSPEC_OHAI_PRELOAD[cookbook] = true
|
|
35
|
+
super
|
|
36
|
+
end
|
|
37
|
+
|
|
25
38
|
def load_lwrps_from_cookbook(cookbook)
|
|
26
39
|
return super unless $CHEFSPEC_MODE
|
|
40
|
+
|
|
27
41
|
$CHEFSPEC_LWRP_PRELOAD ||= {}
|
|
28
42
|
# Already loaded this once.
|
|
29
43
|
return if $CHEFSPEC_LWRP_PRELOAD[cookbook]
|
|
44
|
+
|
|
30
45
|
$CHEFSPEC_LWRP_PRELOAD[cookbook] = true
|
|
31
46
|
super
|
|
32
47
|
end
|
|
33
48
|
|
|
34
49
|
def load_resource_definitions_from_cookbook(cookbook)
|
|
35
50
|
return super unless $CHEFSPEC_MODE
|
|
51
|
+
|
|
36
52
|
$CHEFSPEC_DEFINITION_PRELOAD ||= {}
|
|
37
53
|
# Already loaded this once.
|
|
38
54
|
return if $CHEFSPEC_DEFINITION_PRELOAD[cookbook]
|
|
55
|
+
|
|
39
56
|
$CHEFSPEC_DEFINITION_PRELOAD[cookbook] = true
|
|
40
57
|
super
|
|
41
58
|
end
|
|
@@ -47,18 +64,21 @@ Chef::RunContext::CookbookCompiler.prepend(Module.new do
|
|
|
47
64
|
def compile_ohai_plugins
|
|
48
65
|
return super unless $CHEFSPEC_MODE
|
|
49
66
|
return if $CHEFSPEC_PRELOAD
|
|
67
|
+
|
|
50
68
|
super
|
|
51
69
|
end
|
|
52
70
|
|
|
53
71
|
def compile_attributes
|
|
54
72
|
return super unless $CHEFSPEC_MODE
|
|
55
73
|
return if $CHEFSPEC_PRELOAD
|
|
74
|
+
|
|
56
75
|
super
|
|
57
76
|
end
|
|
58
77
|
|
|
59
78
|
def compile_recipes
|
|
60
79
|
return super unless $CHEFSPEC_MODE
|
|
61
80
|
return if $CHEFSPEC_PRELOAD
|
|
81
|
+
|
|
62
82
|
super
|
|
63
83
|
end
|
|
64
84
|
end)
|
|
@@ -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/extensions.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "rspec"
|
|
2
2
|
|
|
3
3
|
module ChefSpec::Extensions
|
|
4
4
|
module Chef
|
|
@@ -6,15 +6,16 @@ module ChefSpec::Extensions
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
# STOP! DO NOT ALPHABETIZE!
|
|
9
|
-
require_relative
|
|
10
|
-
require_relative
|
|
11
|
-
require_relative
|
|
12
|
-
require_relative
|
|
13
|
-
require_relative
|
|
14
|
-
require_relative
|
|
15
|
-
require_relative
|
|
16
|
-
require_relative
|
|
17
|
-
require_relative
|
|
18
|
-
require_relative
|
|
19
|
-
require_relative
|
|
20
|
-
require_relative
|
|
9
|
+
require_relative "extensions/chef/data_query" # must be before Chef::Resource loads
|
|
10
|
+
require_relative "extensions/chef/resource" # must come before client extensions or anything that winds up loading resources
|
|
11
|
+
require_relative "extensions/chef/provider"
|
|
12
|
+
require_relative "extensions/chef/securable"
|
|
13
|
+
require_relative "extensions/chef/client"
|
|
14
|
+
require_relative "extensions/chef/conditional"
|
|
15
|
+
require_relative "extensions/chef/cookbook_uploader"
|
|
16
|
+
require_relative "extensions/chef/cookbook/gem_installer"
|
|
17
|
+
require_relative "extensions/chef/lwrp_base"
|
|
18
|
+
require_relative "extensions/chef/resource/freebsd_package"
|
|
19
|
+
require_relative "extensions/chef/run_context/cookbook_compiler"
|
|
20
|
+
require_relative "extensions/chef/cookbook_loader"
|
|
21
|
+
require_relative "extensions/ohai/system"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require "fileutils" unless defined?(FileUtils)
|
|
2
|
+
require "singleton" unless defined?(Singleton)
|
|
3
3
|
|
|
4
4
|
module ChefSpec
|
|
5
5
|
class FileCachePathProxy
|
|
@@ -8,7 +8,7 @@ module ChefSpec
|
|
|
8
8
|
attr_reader :file_cache_path
|
|
9
9
|
|
|
10
10
|
def initialize
|
|
11
|
-
@file_cache_path = Dir.mktmpdir(
|
|
11
|
+
@file_cache_path = Dir.mktmpdir(%w{chefspec file_cache_path})
|
|
12
12
|
at_exit { FileUtils.rm_rf(@file_cache_path) }
|
|
13
13
|
end
|
|
14
14
|
end
|
data/lib/chefspec/formatter.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require "chef/formatters/base"
|
|
2
|
+
require "chef/formatters/error_mapper"
|
|
3
3
|
|
|
4
4
|
module ChefSpec
|
|
5
5
|
class ChefFormatter < Chef::Formatters::Base
|
|
@@ -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
|
|
|
@@ -190,7 +202,7 @@ module ChefSpec
|
|
|
190
202
|
def converge_complete; end
|
|
191
203
|
|
|
192
204
|
# Called before action is executed on a resource.
|
|
193
|
-
def resource_action_start(resource, action, notification_type=nil, notifier=nil); end
|
|
205
|
+
def resource_action_start(resource, action, notification_type = nil, notifier = nil); end
|
|
194
206
|
|
|
195
207
|
# Called when a resource fails, but will retry.
|
|
196
208
|
def resource_failed_retriable(resource, action, retry_count, exception); end
|
data/lib/chefspec/librarian.rb
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
begin
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require
|
|
2
|
+
require "librarian/chef/environment"
|
|
3
|
+
require "librarian/action/resolve"
|
|
4
|
+
require "librarian/action/install"
|
|
5
5
|
rescue LoadError
|
|
6
6
|
raise ChefSpec::Error::GemLoadError.new(
|
|
7
|
-
gem:
|
|
7
|
+
gem: "librarian-chef", name: "Librarian"
|
|
8
|
+
)
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
module ChefSpec
|
|
@@ -25,7 +26,7 @@ module ChefSpec
|
|
|
25
26
|
#
|
|
26
27
|
def setup!
|
|
27
28
|
env = ::Librarian::Chef::Environment.new(project_path: Dir.pwd)
|
|
28
|
-
@originalpath, env.config_db.local[
|
|
29
|
+
@originalpath, env.config_db.local["path"] = env.config_db.local["path"], @tmpdir
|
|
29
30
|
::Librarian::Action::Resolve.new(env).run
|
|
30
31
|
::Librarian::Action::Install.new(env).run
|
|
31
32
|
|
|
@@ -37,7 +38,7 @@ module ChefSpec
|
|
|
37
38
|
#
|
|
38
39
|
def teardown!
|
|
39
40
|
env = ::Librarian::Chef::Environment.new(project_path: Dir.pwd)
|
|
40
|
-
env.config_db.local[
|
|
41
|
+
env.config_db.local["path"] = @originalpath
|
|
41
42
|
|
|
42
43
|
FileUtils.rm_rf(@tmpdir) if File.exist?(@tmpdir)
|
|
43
44
|
end
|
|
@@ -14,37 +14,37 @@ module ChefSpec::Matchers
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def description
|
|
17
|
-
|
|
17
|
+
"do nothing"
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def failure_message
|
|
21
21
|
if @resource
|
|
22
|
-
message =
|
|
23
|
-
message <<
|
|
24
|
-
message <<
|
|
22
|
+
message = %{expected #{@resource} to do nothing, but the following }
|
|
23
|
+
message << %{actions were performed:}
|
|
24
|
+
message << %{\n\n}
|
|
25
25
|
@resource.performed_actions.each do |action|
|
|
26
|
-
message <<
|
|
26
|
+
message << %{ :#{action}}
|
|
27
27
|
end
|
|
28
28
|
message
|
|
29
29
|
else
|
|
30
|
-
message =
|
|
31
|
-
message <<
|
|
32
|
-
message <<
|
|
33
|
-
message <<
|
|
34
|
-
message <<
|
|
35
|
-
message <<
|
|
30
|
+
message = %{expected _something_ to do nothing, but the _something_ }
|
|
31
|
+
message << %{you gave me was nil! If you are running a test like:}
|
|
32
|
+
message << %{\n\n}
|
|
33
|
+
message << %{ expect(_something_).to do_nothing}
|
|
34
|
+
message << %{\n\n}
|
|
35
|
+
message << %{make sure that `_something_` exists, because I got nil!}
|
|
36
36
|
message
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
def failure_message_when_negated
|
|
41
41
|
if @resource
|
|
42
|
-
message =
|
|
43
|
-
message <<
|
|
42
|
+
message = %{expected #{@resource} to do something, but no actions }
|
|
43
|
+
message << %{were performed.}
|
|
44
44
|
message
|
|
45
45
|
else
|
|
46
|
-
message =
|
|
47
|
-
message <<
|
|
46
|
+
message = %{expected _something_ to do something, but no actions }
|
|
47
|
+
message << %{were performed.}
|
|
48
48
|
message
|
|
49
49
|
end
|
|
50
50
|
end
|
|
@@ -6,15 +6,15 @@ module ChefSpec::Matchers
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def description
|
|
9
|
-
|
|
9
|
+
"include any recipe"
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def failure_message
|
|
13
|
-
|
|
13
|
+
"expected to include any recipe"
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def failure_message_when_negated
|
|
17
|
-
|
|
17
|
+
"expected not to include any recipes"
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
private
|
|
@@ -36,7 +36,7 @@ module ChefSpec::Matchers
|
|
|
36
36
|
# @return [String]
|
|
37
37
|
#
|
|
38
38
|
def with_default(name)
|
|
39
|
-
name.include?(
|
|
39
|
+
name.include?("::") ? name : "#{name}::default"
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
#
|
|
@@ -14,8 +14,8 @@ module ChefSpec::Matchers
|
|
|
14
14
|
if @resource
|
|
15
15
|
block = Proc.new do |notified|
|
|
16
16
|
resource_name(notified.resource).to_s == @expected_resource_type &&
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
(@expected_resource_name === notified.resource.identity.to_s || @expected_resource_name === notified.resource.name.to_s) &&
|
|
18
|
+
matches_action?(notified)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
if @immediately
|
|
@@ -115,6 +115,7 @@ module ChefSpec::Matchers
|
|
|
115
115
|
|
|
116
116
|
def matches_action?(notification)
|
|
117
117
|
return true if @action.nil?
|
|
118
|
+
|
|
118
119
|
@action == notification.action.to_sym
|
|
119
120
|
end
|
|
120
121
|
|
|
@@ -130,12 +131,12 @@ module ChefSpec::Matchers
|
|
|
130
131
|
type = :delayed
|
|
131
132
|
end
|
|
132
133
|
|
|
133
|
-
%Q{ "#{notifying_resource
|
|
134
|
+
%Q{ "#{notifying_resource}" notifies "#{resource_name(resource)}[#{resource.name}]" to :#{notification.action}, :#{type}}
|
|
134
135
|
end
|
|
135
136
|
|
|
136
137
|
def format_notifications
|
|
137
138
|
all_notifications.map do |notification|
|
|
138
|
-
|
|
139
|
+
" " + format_notification(notification)
|
|
139
140
|
end.join("\n")
|
|
140
141
|
end
|
|
141
142
|
end
|
|
@@ -87,8 +87,8 @@ module ChefSpec::Matchers
|
|
|
87
87
|
|
|
88
88
|
def resource
|
|
89
89
|
@resource ||= @runner.find_resource(:cookbook_file, @path) ||
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
@runner.find_resource(:file, @path) ||
|
|
91
|
+
@runner.find_resource(:template, @path)
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
#
|
|
@@ -99,7 +99,7 @@ module ChefSpec::Matchers
|
|
|
99
99
|
# @return [true, false]
|
|
100
100
|
#
|
|
101
101
|
def has_create_action?
|
|
102
|
-
|
|
102
|
+
%i{create create_if_missing}.any? { |action| resource.performed_action?(action) }
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
#
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require "rspec/matchers/expecteds_for_multiple_diffs"
|
|
2
|
+
require "rspec/expectations/fail_with"
|
|
3
3
|
|
|
4
4
|
module ChefSpec::Matchers
|
|
5
5
|
class ResourceMatcher
|
|
@@ -15,13 +15,15 @@ module ChefSpec::Matchers
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def at_compile_time
|
|
18
|
-
raise ArgumentError,
|
|
18
|
+
raise ArgumentError, "Cannot specify both .at_converge_time and .at_compile_time!" if @converge_time
|
|
19
|
+
|
|
19
20
|
@compile_time = true
|
|
20
21
|
self
|
|
21
22
|
end
|
|
22
23
|
|
|
23
24
|
def at_converge_time
|
|
24
|
-
raise ArgumentError,
|
|
25
|
+
raise ArgumentError, "Cannot specify both .at_compile_time and .at_converge_time!" if @compile_time
|
|
26
|
+
|
|
25
27
|
@converge_time = true
|
|
26
28
|
self
|
|
27
29
|
end
|
|
@@ -55,20 +57,20 @@ module ChefSpec::Matchers
|
|
|
55
57
|
if resource
|
|
56
58
|
if unmatched_parameters.empty?
|
|
57
59
|
if @compile_time
|
|
58
|
-
%Q{expected "#{resource
|
|
60
|
+
%Q{expected "#{resource}" to be run at compile time}
|
|
59
61
|
else
|
|
60
|
-
%Q{expected "#{resource
|
|
62
|
+
%Q{expected "#{resource}" to be run at converge time}
|
|
61
63
|
end
|
|
62
64
|
else
|
|
63
|
-
message = %Q{expected "#{resource
|
|
65
|
+
message = %Q{expected "#{resource}" to have parameters:} \
|
|
64
66
|
"\n\n" \
|
|
65
67
|
" " + unmatched_parameters.collect { |parameter, h|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
msg = "#{parameter} #{h[:expected].inspect}, was #{h[:actual].inspect}"
|
|
69
|
+
diff = ::RSpec::Matchers::ExpectedsForMultipleDiffs.from(h[:expected]) \
|
|
70
|
+
.message_with_diff(message, ::RSpec::Expectations.differ, h[:actual])
|
|
71
|
+
msg += diff if diff
|
|
72
|
+
msg
|
|
73
|
+
}.join("\n ")
|
|
72
74
|
end
|
|
73
75
|
else
|
|
74
76
|
%Q{expected "#{@resource_name}[#{@expected_identity}]"} \
|
|
@@ -81,9 +83,9 @@ module ChefSpec::Matchers
|
|
|
81
83
|
|
|
82
84
|
def failure_message_when_negated
|
|
83
85
|
if resource
|
|
84
|
-
message = %Q{expected "#{resource
|
|
86
|
+
message = %Q{expected "#{resource}" actions #{resource.performed_actions.inspect} to not exist}
|
|
85
87
|
else
|
|
86
|
-
message = %Q{expected "#{resource
|
|
88
|
+
message = %Q{expected "#{resource}" to not exist}
|
|
87
89
|
end
|
|
88
90
|
|
|
89
91
|
message << " at compile time" if @compile_time
|
|
@@ -115,7 +117,7 @@ module ChefSpec::Matchers
|
|
|
115
117
|
if parameter == :source
|
|
116
118
|
# Chef 11+ stores the source parameter internally as an Array
|
|
117
119
|
Array(expected) == Array(value)
|
|
118
|
-
elsif expected.
|
|
120
|
+
elsif expected.is_a?(Class)
|
|
119
121
|
# Ruby can't compare classes with ===
|
|
120
122
|
expected == value
|
|
121
123
|
else
|