poise 2.3.1 → 2.3.2
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/CHANGELOG.md +4 -0
- data/lib/poise/helpers/subresources/container.rb +13 -4
- data/lib/poise/utils.rb +5 -0
- data/lib/poise/version.rb +1 -1
- data/test/spec/helpers/inversion_spec.rb +1 -0
- data/test/spec/helpers/subresources/container_spec.rb +62 -0
- data/test/spec/utils_spec.rb +16 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4fb584605a370cd20300d0456630ffe8a0d5351a
|
4
|
+
data.tar.gz: 7df0b817befc116a8cb5e8729ee604707771ae1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc97265d1907474050c72893815a35c1b20a31dbd1740bdb8d05ab70a60fb9e28dc0850a1afc52ad4202a49834c99580c2f139e8133cbcc5401af01c7c47aff9
|
7
|
+
data.tar.gz: d4c49153950ba2736fba3d4f24054543edd4cf2c464205a40a73dca08257288ce8de497db11b8025da080cb76c76cedafb56dd320d6e367eab1e508b065aadd8
|
data/CHANGELOG.md
CHANGED
@@ -40,10 +40,12 @@ module Poise
|
|
40
40
|
include Chef::DSL::Recipe
|
41
41
|
|
42
42
|
attr_reader :subresources
|
43
|
+
attr_reader :subcontexts
|
43
44
|
|
44
45
|
def initialize(*args)
|
45
46
|
super
|
46
47
|
@subresources = NoPrintingResourceCollection.new
|
48
|
+
@subcontexts = []
|
47
49
|
end
|
48
50
|
|
49
51
|
def after_created
|
@@ -74,12 +76,18 @@ module Poise
|
|
74
76
|
# Step back so we re-run the "current" resource, which is now the
|
75
77
|
# container.
|
76
78
|
collection.iterator.skip_back
|
79
|
+
Chef::Log.debug("Collection: #{@run_context.resource_collection.map(&:to_s).join(', ')}")
|
77
80
|
end
|
78
81
|
@run_context.resource_collection.insert(order_fixer)
|
79
|
-
@
|
80
|
-
|
81
|
-
|
82
|
+
@subcontexts.each do |ctx|
|
83
|
+
ctx.resource_collection.each do |r|
|
84
|
+
Chef::Log.debug(" * #{r}")
|
85
|
+
# Fix the subresource to use the outer run context.
|
86
|
+
r.run_context = @run_context
|
87
|
+
@run_context.resource_collection.insert(r)
|
88
|
+
end
|
82
89
|
end
|
90
|
+
Chef::Log.debug("Collection: #{@run_context.resource_collection.map(&:to_s).join(', ')}")
|
83
91
|
end
|
84
92
|
end
|
85
93
|
|
@@ -93,7 +101,7 @@ module Poise
|
|
93
101
|
created_at ||= caller[0]
|
94
102
|
# Run this inside a subcontext to avoid adding to the current resource collection.
|
95
103
|
# It will end up added later, indirected via @subresources to ensure ordering.
|
96
|
-
subcontext_block do
|
104
|
+
@subcontexts << subcontext_block do
|
97
105
|
namespace = if self.class.container_namespace == true
|
98
106
|
# If the value is true, use the name of the container resource.
|
99
107
|
self.name
|
@@ -184,6 +192,7 @@ module Poise
|
|
184
192
|
def included(klass)
|
185
193
|
super
|
186
194
|
klass.extend(ClassMethods)
|
195
|
+
klass.const_get(:HIDDEN_IVARS) << :@subcontexts
|
187
196
|
end
|
188
197
|
end
|
189
198
|
|
data/lib/poise/utils.rb
CHANGED
@@ -161,6 +161,11 @@ module Poise
|
|
161
161
|
# @param args [Array<Object>] Arguments to check.
|
162
162
|
# @return [void]
|
163
163
|
def check_block_arity!(block, args)
|
164
|
+
# Convert the block to a lambda-style proc. You can't make this shit up.
|
165
|
+
obj = Object.new
|
166
|
+
obj.define_singleton_method(:block, &block)
|
167
|
+
block = obj.method(:block).to_proc
|
168
|
+
# Check
|
164
169
|
required_args = block.arity < 0 ? ~block.arity : block.arity
|
165
170
|
if args.length < required_args || (block.arity >= 0 && args.length > block.arity)
|
166
171
|
raise ArgumentError.new("wrong number of arguments (#{args.length} for #{required_args}#{block.arity < 0 ? '+' : ''})")
|
data/lib/poise/version.rb
CHANGED
@@ -224,4 +224,66 @@ describe Poise::Helpers::Subresources::Container do
|
|
224
224
|
it { is_expected.to run_poise_sub('test') }
|
225
225
|
it { is_expected.to run_inner('test::one') }
|
226
226
|
end # /describe subclassing a container
|
227
|
+
|
228
|
+
describe 'triple nesting' do
|
229
|
+
resource(:poise_grandparent) do
|
230
|
+
include described_class
|
231
|
+
attr_accessor :order
|
232
|
+
end
|
233
|
+
provider(:poise_grandparent) do
|
234
|
+
def action_run
|
235
|
+
new_resource.order = (node.run_state[:order] += 1)
|
236
|
+
end
|
237
|
+
end
|
238
|
+
resource(:poise_parent) do
|
239
|
+
include described_class
|
240
|
+
include Poise::Helpers::Subresources::Child
|
241
|
+
parent_type :poise_grandparent
|
242
|
+
attr_accessor :order
|
243
|
+
end
|
244
|
+
provider(:poise_parent) do
|
245
|
+
def action_run
|
246
|
+
new_resource.order = (node.run_state[:order] += 1)
|
247
|
+
end
|
248
|
+
end
|
249
|
+
resource(:poise_child) do
|
250
|
+
include described_class
|
251
|
+
include Poise::Helpers::Subresources::Child
|
252
|
+
parent_type :poise_parent
|
253
|
+
attr_accessor :order
|
254
|
+
end
|
255
|
+
provider(:poise_child) do
|
256
|
+
def action_run
|
257
|
+
new_resource.order = (node.run_state[:order] += 1)
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
context 'nested' do
|
262
|
+
recipe do
|
263
|
+
node.run_state[:order] = 0
|
264
|
+
poise_grandparent 'one' do
|
265
|
+
poise_parent 'two' do
|
266
|
+
poise_child 'three'
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
271
|
+
it { is_expected.to run_poise_grandparent('one').with(order: 1) }
|
272
|
+
it { is_expected.to run_poise_parent('one::two').with(parent: chef_run.poise_grandparent('one'), order: 2) }
|
273
|
+
it { is_expected.to run_poise_child('one::two::three').with(parent: chef_run.poise_parent('one::two'), order: 3) }
|
274
|
+
end # /context nested
|
275
|
+
|
276
|
+
context 'un-nested' do
|
277
|
+
recipe do
|
278
|
+
node.run_state[:order] = 0
|
279
|
+
poise_grandparent 'one'
|
280
|
+
poise_parent 'two'
|
281
|
+
poise_child 'three'
|
282
|
+
end
|
283
|
+
|
284
|
+
it { is_expected.to run_poise_grandparent('one').with(order: 1) }
|
285
|
+
it { is_expected.to run_poise_parent('two').with(parent: chef_run.poise_grandparent('one'), order: 2) }
|
286
|
+
it { is_expected.to run_poise_child('three').with(parent: chef_run.poise_parent('two'), order: 3) }
|
287
|
+
end # /context un-nested
|
288
|
+
end # /describe triple nesting
|
227
289
|
end
|
data/test/spec/utils_spec.rb
CHANGED
@@ -380,5 +380,21 @@ describe Poise::Utils do
|
|
380
380
|
it { expect { subject }.to_not raise_error }
|
381
381
|
end # /context with 2 arguments
|
382
382
|
end # /context with a negative arity
|
383
|
+
|
384
|
+
context 'with **' do
|
385
|
+
let(:block) do
|
386
|
+
proc {|a, **b| nil }
|
387
|
+
end
|
388
|
+
|
389
|
+
context 'with 0 arguments' do
|
390
|
+
let(:args) { [] }
|
391
|
+
it { expect { subject }.to raise_error ArgumentError, /wrong number of arguments \(0 for 1\+\)/ }
|
392
|
+
end # /context with 0 arguments
|
393
|
+
|
394
|
+
context 'with 1 argument' do
|
395
|
+
let(:args) { [1] }
|
396
|
+
it { expect { subject }.to_not raise_error }
|
397
|
+
end # /context with 1 argument
|
398
|
+
end # /context with **
|
383
399
|
end # /describe .check_block_arity!
|
384
400
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: poise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Noah Kantrowitz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: halite
|