chefspec 3.0.1 → 3.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/chefspec/api/state_attrs.rb +28 -0
- data/lib/chefspec/api.rb +1 -0
- data/lib/chefspec/matchers/state_attrs_matcher.rb +70 -0
- data/lib/chefspec/matchers.rb +1 -0
- data/lib/chefspec/runner.rb +5 -1
- data/lib/chefspec/version.rb +1 -1
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c8e999b2df276e377b7c7939430db34e9ba082b
|
4
|
+
data.tar.gz: 08c074ed6d9633de4e7ea9b83c0f3709c7c91704
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7f58af30026df43e1c60515e1ba01e6d0dea37443878d3ea10bcec2e47aa4ea91e23c40db8ab8e2a5660255afd6fb6b559d98621bed48999d732bec641bfa2d
|
7
|
+
data.tar.gz: 1598aefcab47c574882ade3bb99a9f2a4241e26e0c86b791cdce0dabfc7a85a56a7383c148ec2e05568a8a585b865cd54aa69b8c0dac0894ff2998ade28c4701
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module ChefSpec::API
|
2
|
+
# @since 3.1.0
|
3
|
+
module StateAttrsMatcher
|
4
|
+
#
|
5
|
+
# Assert that a Chef resource has certain state attributes (since Chef
|
6
|
+
# 11.8.0):
|
7
|
+
#
|
8
|
+
# state_attrs :time, :temperature
|
9
|
+
#
|
10
|
+
# @see https://github.com/opscode/chef/blob/e43d7ebda/lib/chef/resource/file.rb#L32-L37
|
11
|
+
#
|
12
|
+
# The Examples section demonstrates the different ways to test a
|
13
|
+
# resource's +state_attrs+ with ChefSpec.
|
14
|
+
#
|
15
|
+
# @example Assert the +lwrp+ resource has two state attributes
|
16
|
+
# expect(lwrp).to have_state_attrs(:time, :temperature)
|
17
|
+
#
|
18
|
+
#
|
19
|
+
# @param [Array] state_attrs
|
20
|
+
# the list of state attributes to assert
|
21
|
+
#
|
22
|
+
# @return [ChefSpec::Matchers::StateAttrsMatcher]
|
23
|
+
#
|
24
|
+
def have_state_attrs(*state_attrs)
|
25
|
+
ChefSpec::Matchers::StateAttrsMatcher.new(state_attrs)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/chefspec/api.rb
CHANGED
@@ -68,6 +68,7 @@ require_relative 'api/script'
|
|
68
68
|
require_relative 'api/service'
|
69
69
|
require_relative 'api/smartos_package'
|
70
70
|
require_relative 'api/solaris_package'
|
71
|
+
require_relative 'api/state_attrs'
|
71
72
|
require_relative 'api/subversion'
|
72
73
|
require_relative 'api/template'
|
73
74
|
require_relative 'api/user'
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module ChefSpec::Matchers
|
2
|
+
class StateAttrsMatcher
|
3
|
+
#
|
4
|
+
# Create a new state_attrs matcher.
|
5
|
+
#
|
6
|
+
# @param [Array] state_attrs
|
7
|
+
#
|
8
|
+
def initialize(state_attrs)
|
9
|
+
@expected_attrs = state_attrs.map(&:to_sym)
|
10
|
+
end
|
11
|
+
|
12
|
+
def matches?(resource)
|
13
|
+
@resource = resource
|
14
|
+
@resource && matches_state_attrs?
|
15
|
+
end
|
16
|
+
|
17
|
+
def description
|
18
|
+
%Q{have state attributes #{@expected_attrs.inspect}}
|
19
|
+
end
|
20
|
+
|
21
|
+
def failure_message_for_should
|
22
|
+
if @resource
|
23
|
+
"expected #{state_attrs.inspect} to equal #{@expected_attrs.inspect}"
|
24
|
+
else
|
25
|
+
"expected _something_ to have state attributes, but the " \
|
26
|
+
"_something_ you gave me was nil!" \
|
27
|
+
"\n" \
|
28
|
+
"Ensure the resource exists before making assertions:" \
|
29
|
+
"\n\n" \
|
30
|
+
" expect(resource).to be" \
|
31
|
+
"\n "
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def failure_message_for_should_not
|
36
|
+
if @resource
|
37
|
+
"expected #{state_attrs.inspect} to not equal " \
|
38
|
+
"#{@expected_attrs.inspect}"
|
39
|
+
else
|
40
|
+
"expected _something_ to not have state attributes, but the " \
|
41
|
+
"_something_ you gave me was nil!" \
|
42
|
+
"\n" \
|
43
|
+
"Ensure the resource exists before making assertions:" \
|
44
|
+
"\n\n" \
|
45
|
+
" expect(resource).to be" \
|
46
|
+
"\n "
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
#
|
52
|
+
# Determine if all the expected state attributes are present on the
|
53
|
+
# given resource.
|
54
|
+
#
|
55
|
+
# @return [Boolean]
|
56
|
+
#
|
57
|
+
def matches_state_attrs?
|
58
|
+
@expected_attrs == state_attrs
|
59
|
+
end
|
60
|
+
|
61
|
+
#
|
62
|
+
# The list of state attributes declared on the given resource.
|
63
|
+
#
|
64
|
+
# @return [Array<Symbol>]
|
65
|
+
#
|
66
|
+
def state_attrs
|
67
|
+
@resource.class.state_attrs.map(&:to_sym)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/chefspec/matchers.rb
CHANGED
data/lib/chefspec/runner.rb
CHANGED
@@ -239,13 +239,17 @@ module ChefSpec
|
|
239
239
|
# +step_into+ option takes a string, but this method coerces everything
|
240
240
|
# to symbols for safety.
|
241
241
|
#
|
242
|
+
# This method also substitutes any dashes (+-+) with underscores (+_+),
|
243
|
+
# because that's what Chef does under the hood. (See GitHub issue #254
|
244
|
+
# for more background)
|
245
|
+
#
|
242
246
|
# @param [Chef::Resource] resource
|
243
247
|
# the Chef resource to try and step in to
|
244
248
|
#
|
245
249
|
# @return [Boolean]
|
246
250
|
#
|
247
251
|
def step_into?(resource)
|
248
|
-
key = resource.resource_name.to_sym
|
252
|
+
key = resource.resource_name.to_s.gsub('-', '_').to_sym
|
249
253
|
Array(options[:step_into]).map(&:to_sym).include?(key)
|
250
254
|
end
|
251
255
|
|
data/lib/chefspec/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chefspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Crump
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-11-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: chef
|
@@ -31,14 +31,14 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '2.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: '2.0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rspec
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,6 +158,7 @@ files:
|
|
158
158
|
- lib/chefspec/api/service.rb
|
159
159
|
- lib/chefspec/api/smartos_package.rb
|
160
160
|
- lib/chefspec/api/solaris_package.rb
|
161
|
+
- lib/chefspec/api/state_attrs.rb
|
161
162
|
- lib/chefspec/api/subversion.rb
|
162
163
|
- lib/chefspec/api/template.rb
|
163
164
|
- lib/chefspec/api/user.rb
|
@@ -180,6 +181,7 @@ files:
|
|
180
181
|
- lib/chefspec/matchers/notifications_matcher.rb
|
181
182
|
- lib/chefspec/matchers/render_file_matcher.rb
|
182
183
|
- lib/chefspec/matchers/resource_matcher.rb
|
184
|
+
- lib/chefspec/matchers/state_attrs_matcher.rb
|
183
185
|
- lib/chefspec/matchers.rb
|
184
186
|
- lib/chefspec/renderer.rb
|
185
187
|
- lib/chefspec/rspec.rb
|
@@ -216,9 +218,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
218
|
version: '0'
|
217
219
|
requirements: []
|
218
220
|
rubyforge_project:
|
219
|
-
rubygems_version: 2.
|
221
|
+
rubygems_version: 2.1.10
|
220
222
|
signing_key:
|
221
223
|
specification_version: 4
|
222
|
-
summary: chefspec-3.0.
|
224
|
+
summary: chefspec-3.0.2
|
223
225
|
test_files: []
|
224
226
|
has_rdoc:
|