chef 11.10.2 → 11.10.4.ohai7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -31,20 +31,6 @@ class Chef
31
31
 
32
32
  include Chef::Mixin::ConvertToClassName
33
33
 
34
- # Default +cookbook_name+ implementation, always returns "none". This
35
- # should be overriden in including classes whenever a meaningful value
36
- # can be provided.
37
- def cookbook_name
38
- "none"
39
- end
40
-
41
- # Default +recipe_name+ implementation, always returns "none". This
42
- # should be overridden in including classes whenever a meaningful value
43
- # can be provided.
44
- def recipe_name
45
- "none"
46
- end
47
-
48
34
  def method_missing(method_symbol, *args, &block)
49
35
  # If we have a definition that matches, we want to use that instead. This should
50
36
  # let you do some really crazy over-riding of "native" types, if you really want
@@ -119,12 +105,13 @@ class Chef
119
105
 
120
106
  resource = resource_class.new(name, run_context)
121
107
  resource.source_line = created_at
122
- resource.cookbook_name = cookbook_name
123
- resource.recipe_name = recipe_name
124
108
  # If we have a resource like this one, we want to steal its state
125
109
  # This behavior is very counter-intuitive and should be removed.
126
110
  # See CHEF-3694, https://tickets.opscode.com/browse/CHEF-3694
111
+ # Moved to this location to resolve CHEF-5052, https://tickets.opscode.com/browse/CHEF-5052
127
112
  resource.load_prior_resource
113
+ resource.cookbook_name = cookbook_name
114
+ resource.recipe_name = recipe_name
128
115
  # Determine whether this resource is being created in the context of an enclosing Provider
129
116
  resource.enclosing_provider = self.is_a?(Chef::Provider) ? self : nil
130
117
 
@@ -31,6 +31,9 @@ class Chef
31
31
  attr_accessor :current_resource
32
32
  attr_accessor :run_context
33
33
 
34
+ attr_reader :recipe_name
35
+ attr_reader :cookbook_name
36
+
34
37
  #--
35
38
  # TODO: this should be a reader, and the action should be passed in the
36
39
  # constructor; however, many/most subclasses override the constructor so
@@ -44,6 +47,9 @@ class Chef
44
47
  @current_resource = nil
45
48
  @run_context = run_context
46
49
  @converge_actions = nil
50
+
51
+ @recipe_name = nil
52
+ @cookbook_name = nil
47
53
  end
48
54
 
49
55
  def whyrun_mode?
@@ -17,7 +17,7 @@
17
17
 
18
18
  class Chef
19
19
  CHEF_ROOT = File.dirname(File.expand_path(File.dirname(__FILE__)))
20
- VERSION = '11.10.2'
20
+ VERSION = '11.10.4.ohai7.0'
21
21
  end
22
22
 
23
23
  # NOTE: the Chef::Version class is defined in version_class.rb
@@ -27,6 +27,7 @@ class Chef
27
27
  def initialize(name, run_context=nil)
28
28
  @resource_name = :zen_master
29
29
  super
30
+ allowed_actions << :win << :score
30
31
  end
31
32
 
32
33
  def peace(tf)
@@ -0,0 +1,70 @@
1
+ #
2
+ # Author:: Daniel DeLeo (<dan@getchef.com>)
3
+ # Copyright:: Copyright (c) 2014 Chef Software, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'spec_helper'
20
+ require 'chef/dsl/recipe'
21
+
22
+
23
+ RecipeDSLExampleClass = Struct.new(:cookbook_name, :recipe_name)
24
+ class RecipeDSLExampleClass
25
+ include Chef::DSL::Recipe
26
+ end
27
+
28
+ RecipeDSLBaseAPI = Struct.new(:cookbook_name, :recipe_name)
29
+ class RecipeDSLExampleSubclass < RecipeDSLBaseAPI
30
+ include Chef::DSL::Recipe
31
+ end
32
+
33
+ # TODO: most of DSL::Recipe's implementation is tested in Chef::Recipe's tests,
34
+ # move those to here.
35
+ describe Chef::DSL::Recipe do
36
+
37
+ let(:cookbook_name) { "example_cb" }
38
+ let(:recipe_name) { "example_recipe" }
39
+
40
+ shared_examples_for "A Recipe DSL Implementation" do
41
+
42
+ it "responds to cookbook_name" do
43
+ expect(recipe.cookbook_name).to eq(cookbook_name)
44
+ end
45
+
46
+ it "responds to recipe_name" do
47
+ expect(recipe.recipe_name).to eq(recipe_name)
48
+ end
49
+ end
50
+
51
+ context "when included in a class that defines the required interface directly" do
52
+
53
+ let(:recipe) { RecipeDSLExampleClass.new(cookbook_name, recipe_name) }
54
+
55
+ include_examples "A Recipe DSL Implementation"
56
+
57
+ end
58
+
59
+ # This is the situation that occurs when the Recipe DSL gets mixed in to a
60
+ # resource, for example.
61
+ context "when included in a class that defines the required interface in a superclass" do
62
+
63
+ let(:recipe) { RecipeDSLExampleSubclass.new(cookbook_name, recipe_name) }
64
+
65
+ include_examples "A Recipe DSL Implementation"
66
+
67
+ end
68
+
69
+ end
70
+
@@ -32,6 +32,10 @@ describe Chef::Formatters::ErrorInspectors::ResourceFailureInspector do
32
32
  "rspec-example"
33
33
  end
34
34
 
35
+ def recipe_name
36
+ "rspec-example-recipe"
37
+ end
38
+
35
39
  before do
36
40
  @description = Chef::Formatters::ErrorDescription.new("Error Converging Resource:")
37
41
  @stdout = StringIO.new
@@ -43,7 +47,6 @@ describe Chef::Formatters::ErrorInspectors::ResourceFailureInspector do
43
47
 
44
48
  describe "when explaining an error converging a resource" do
45
49
  before do
46
- source_line = caller(0)[0]
47
50
  @resource = package("non-existing-package") do
48
51
 
49
52
  only_if do
@@ -22,28 +22,38 @@
22
22
  require 'spec_helper'
23
23
 
24
24
  describe Chef::Recipe do
25
- before(:each) do
26
- @cookbook_repo = File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "cookbooks"))
27
- cl = Chef::CookbookLoader.new(@cookbook_repo)
28
- cl.load_cookbooks
29
- @cookbook_collection = Chef::CookbookCollection.new(cl)
30
- @node = Chef::Node.new
31
- @node.normal[:tags] = Array.new
32
- @events = Chef::EventDispatch::Dispatcher.new
33
- @run_context = Chef::RunContext.new(@node, @cookbook_collection, @events)
34
- @recipe = Chef::Recipe.new("hjk", "test", @run_context)
35
-
36
- # Shell/ext.rb is on the run path, and it defines
37
- # Chef::Recipe#resources to call pp, which we don't want when
38
- # we're running tests.
39
- @recipe.stub(:pp)
25
+
26
+ let(:cookbook_repo) { File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "cookbooks")) }
27
+
28
+ let(:cookbook_loader) do
29
+ loader = Chef::CookbookLoader.new(cookbook_repo)
30
+ loader.load_cookbooks
31
+ loader
32
+ end
33
+
34
+ let(:cookbook_collection) { Chef::CookbookCollection.new(cookbook_loader) }
35
+
36
+ let(:node) do
37
+ Chef::Node.new.tap {|n| n.normal[:tags] = [] }
38
+ end
39
+
40
+ let(:events) do
41
+ Chef::EventDispatch::Dispatcher.new
42
+ end
43
+
44
+ let(:run_context) do
45
+ Chef::RunContext.new(node, cookbook_collection, events)
46
+ end
47
+
48
+ let(:recipe) do
49
+ Chef::Recipe.new("hjk", "test", run_context)
40
50
  end
41
51
 
42
52
  describe "method_missing" do
43
53
  describe "resources" do
44
54
  it "should load a two word (zen_master) resource" do
45
55
  lambda do
46
- @recipe.zen_master "monkey" do
56
+ recipe.zen_master "monkey" do
47
57
  peace true
48
58
  end
49
59
  end.should_not raise_error
@@ -51,7 +61,7 @@ describe Chef::Recipe do
51
61
 
52
62
  it "should load a one word (cat) resource" do
53
63
  lambda do
54
- @recipe.cat "loulou" do
64
+ recipe.cat "loulou" do
55
65
  pretty_kitty true
56
66
  end
57
67
  end.should_not raise_error
@@ -59,47 +69,47 @@ describe Chef::Recipe do
59
69
 
60
70
  it "should load a four word (one_two_three_four) resource" do
61
71
  lambda do
62
- @recipe.one_two_three_four "numbers" do
72
+ recipe.one_two_three_four "numbers" do
63
73
  i_can_count true
64
74
  end
65
75
  end.should_not raise_error
66
76
  end
67
77
 
68
78
  it "should throw an error if you access a resource that we can't find" do
69
- lambda { @recipe.not_home("not_home_resource") }.should raise_error(NameError)
79
+ lambda { recipe.not_home("not_home_resource") }.should raise_error(NameError)
70
80
  end
71
81
 
72
82
  it "should require a name argument" do
73
83
  lambda {
74
- @recipe.cat
84
+ recipe.cat
75
85
  }.should raise_error(ArgumentError, "You must supply a name when declaring a cat resource")
76
86
  end
77
87
 
78
88
  it "should allow regular errors (not NameErrors) to pass unchanged" do
79
89
  lambda {
80
- @recipe.cat("felix") { raise ArgumentError, "You Suck" }
90
+ recipe.cat("felix") { raise ArgumentError, "You Suck" }
81
91
  }.should raise_error(ArgumentError)
82
92
  end
83
93
 
84
94
  it "should add our zen_master to the collection" do
85
- @recipe.zen_master "monkey" do
95
+ recipe.zen_master "monkey" do
86
96
  peace true
87
97
  end
88
- @run_context.resource_collection.lookup("zen_master[monkey]").name.should eql("monkey")
98
+ run_context.resource_collection.lookup("zen_master[monkey]").name.should eql("monkey")
89
99
  end
90
100
 
91
101
  it "should add our zen masters to the collection in the order they appear" do
92
102
  %w{monkey dog cat}.each do |name|
93
- @recipe.zen_master name do
103
+ recipe.zen_master name do
94
104
  peace true
95
105
  end
96
106
  end
97
107
 
98
- @run_context.resource_collection.map{|r| r.name}.should eql(["monkey", "dog", "cat"])
108
+ run_context.resource_collection.map{|r| r.name}.should eql(["monkey", "dog", "cat"])
99
109
  end
100
110
 
101
111
  it "should return the new resource after creating it" do
102
- res = @recipe.zen_master "makoto" do
112
+ res = recipe.zen_master "makoto" do
103
113
  peace true
104
114
  end
105
115
  res.resource_name.should eql(:zen_master)
@@ -110,16 +120,16 @@ describe Chef::Recipe do
110
120
 
111
121
  it "locate resource for particular platform" do
112
122
  Object.const_set('ShaunTheSheep', Class.new(Chef::Resource){ provides :laughter, :on_platforms => ["television"] })
113
- @node.automatic[:platform] = "television"
114
- @node.automatic[:platform_version] = "123"
115
- res = @recipe.laughter "timmy"
123
+ node.automatic[:platform] = "television"
124
+ node.automatic[:platform_version] = "123"
125
+ res = recipe.laughter "timmy"
116
126
  res.name.should eql("timmy")
117
127
  res.kind_of?(ShaunTheSheep)
118
128
  end
119
129
 
120
130
  it "locate a resource for all platforms" do
121
131
  Object.const_set("YourMom", Class.new(Chef::Resource){ provides :love_and_caring })
122
- res = @recipe.love_and_caring "mommy"
132
+ res = recipe.love_and_caring "mommy"
123
133
  res.name.should eql("mommy")
124
134
  res.kind_of?(YourMom)
125
135
  end
@@ -129,7 +139,7 @@ describe Chef::Recipe do
129
139
 
130
140
  describe "creating resources via build_resource" do
131
141
  let(:zm_resource) do
132
- @recipe.build_resource(:zen_master, "klopp") do
142
+ recipe.build_resource(:zen_master, "klopp") do
133
143
  something "bvb"
134
144
  end
135
145
  end
@@ -146,14 +156,14 @@ describe Chef::Recipe do
146
156
 
147
157
  it "does not add the resource to the resource collection" do
148
158
  zm_resource # force let binding evaluation
149
- expect { @run_context.resource_collection.resources(:zen_master => "klopp") }.to raise_error(Chef::Exceptions::ResourceNotFound)
159
+ expect { run_context.resource_collection.resources(:zen_master => "klopp") }.to raise_error(Chef::Exceptions::ResourceNotFound)
150
160
  end
151
161
 
152
162
  end
153
163
 
154
164
  describe "creating resources via declare_resource" do
155
165
  let(:zm_resource) do
156
- @recipe.declare_resource(:zen_master, "klopp") do
166
+ recipe.declare_resource(:zen_master, "klopp") do
157
167
  something "bvb"
158
168
  end
159
169
  end
@@ -170,7 +180,7 @@ describe Chef::Recipe do
170
180
 
171
181
  it "adds the resource to the resource collection" do
172
182
  zm_resource # force let binding evaluation
173
- @run_context.resource_collection.resources(:zen_master => "klopp").should == zm_resource
183
+ run_context.resource_collection.resources(:zen_master => "klopp").should == zm_resource
174
184
  end
175
185
 
176
186
  end
@@ -179,13 +189,13 @@ describe Chef::Recipe do
179
189
 
180
190
  it "gives a sane error message when using method_missing" do
181
191
  lambda do
182
- @recipe.no_such_resource("foo")
192
+ recipe.no_such_resource("foo")
183
193
  end.should raise_error(NoMethodError, %q[No resource or method named `no_such_resource' for `Chef::Recipe "test"'])
184
194
  end
185
195
 
186
196
  it "gives a sane error message when using method_missing 'bare'" do
187
197
  lambda do
188
- @recipe.instance_eval do
198
+ recipe.instance_eval do
189
199
  # Giving an argument will change this from NameError to NoMethodError
190
200
  no_such_resource
191
201
  end
@@ -193,11 +203,11 @@ describe Chef::Recipe do
193
203
  end
194
204
 
195
205
  it "gives a sane error message when using build_resource" do
196
- expect { @recipe.build_resource(:no_such_resource, "foo") }.to raise_error(Chef::Exceptions::NoSuchResourceType)
206
+ expect { recipe.build_resource(:no_such_resource, "foo") }.to raise_error(Chef::Exceptions::NoSuchResourceType)
197
207
  end
198
208
 
199
209
  it "gives a sane error message when using declare_resource" do
200
- expect { @recipe.declare_resource(:no_such_resource, "bar") }.to raise_error(Chef::Exceptions::NoSuchResourceType)
210
+ expect { recipe.declare_resource(:no_such_resource, "bar") }.to raise_error(Chef::Exceptions::NoSuchResourceType)
201
211
  end
202
212
 
203
213
  end
@@ -206,7 +216,7 @@ describe Chef::Recipe do
206
216
 
207
217
  it "does not obfuscate the error source" do
208
218
  lambda do
209
- @recipe.zen_master("klopp") do
219
+ recipe.zen_master("klopp") do
210
220
  this_method_doesnt_exist
211
221
  end
212
222
  end.should raise_error(NoMethodError, "undefined method `this_method_doesnt_exist' for Chef::Resource::ZenMaster")
@@ -215,6 +225,53 @@ describe Chef::Recipe do
215
225
 
216
226
  end
217
227
 
228
+ describe "resource cloning" do
229
+
230
+ let(:second_recipe) do
231
+ Chef::Recipe.new("second_cb", "second_recipe", run_context)
232
+ end
233
+
234
+ let(:original_resource) do
235
+ recipe.zen_master("klopp") do
236
+ something "bvb09"
237
+ action :score
238
+ end
239
+ end
240
+
241
+ let(:duplicated_resource) do
242
+ original_resource
243
+ second_recipe.zen_master("klopp") do
244
+ # attrs should be cloned
245
+ end
246
+ end
247
+
248
+ it "copies attributes from the first resource" do
249
+ duplicated_resource.something.should == "bvb09"
250
+ end
251
+
252
+ it "does not copy the action from the first resource" do
253
+ original_resource.action.should == [:score]
254
+ duplicated_resource.action.should == :nothing
255
+ end
256
+
257
+ it "does not copy the source location of the first resource" do
258
+ # sanity check source location:
259
+ original_resource.source_line.should include(__FILE__)
260
+ duplicated_resource.source_line.should include(__FILE__)
261
+ # actual test:
262
+ original_resource.source_line.should_not == duplicated_resource.source_line
263
+ end
264
+
265
+ it "sets the cookbook name on the cloned resource to that resource's cookbook" do
266
+ duplicated_resource.cookbook_name.should == "second_cb"
267
+ end
268
+
269
+ it "sets the recipe name on the cloned resource to that resoure's recipe" do
270
+ duplicated_resource.recipe_name.should == "second_recipe"
271
+ end
272
+
273
+ end
274
+
218
275
  describe "resource definitions" do
219
276
  it "should execute defined resources" do
220
277
  crow_define = Chef::ResourceDefinition.new
@@ -224,12 +281,12 @@ describe Chef::Recipe do
224
281
  something params[:something]
225
282
  end
226
283
  end
227
- @run_context.definitions[:crow] = crow_define
228
- @recipe.crow "mine" do
284
+ run_context.definitions[:crow] = crow_define
285
+ recipe.crow "mine" do
229
286
  peace true
230
287
  end
231
- @run_context.resource_collection.resources(:zen_master => "lao tzu").name.should eql("lao tzu")
232
- @run_context.resource_collection.resources(:zen_master => "lao tzu").something.should eql(true)
288
+ run_context.resource_collection.resources(:zen_master => "lao tzu").name.should eql("lao tzu")
289
+ run_context.resource_collection.resources(:zen_master => "lao tzu").something.should eql(true)
233
290
  end
234
291
 
235
292
  it "should set the node on defined resources" do
@@ -240,12 +297,12 @@ describe Chef::Recipe do
240
297
  something params[:something]
241
298
  end
242
299
  end
243
- @run_context.definitions[:crow] = crow_define
244
- @node.normal[:foo] = false
245
- @recipe.crow "mine" do
300
+ run_context.definitions[:crow] = crow_define
301
+ node.normal[:foo] = false
302
+ recipe.crow "mine" do
246
303
  something node[:foo]
247
304
  end
248
- @recipe.resources(:zen_master => "lao tzu").something.should eql(false)
305
+ recipe.resources(:zen_master => "lao tzu").something.should eql(false)
249
306
  end
250
307
  end
251
308
 
@@ -258,15 +315,15 @@ describe Chef::Recipe do
258
315
  peace = true
259
316
  end
260
317
  CODE
261
- lambda { @recipe.instance_eval(code) }.should_not raise_error
262
- @recipe.resources(:zen_master => "gnome").name.should eql("gnome")
318
+ lambda { recipe.instance_eval(code) }.should_not raise_error
319
+ recipe.resources(:zen_master => "gnome").name.should eql("gnome")
263
320
  end
264
321
  end
265
322
 
266
323
  describe "from_file" do
267
324
  it "should load a resource from a ruby file" do
268
- @recipe.from_file(File.join(CHEF_SPEC_DATA, "recipes", "test.rb"))
269
- res = @recipe.resources(:file => "/etc/nsswitch.conf")
325
+ recipe.from_file(File.join(CHEF_SPEC_DATA, "recipes", "test.rb"))
326
+ res = recipe.resources(:file => "/etc/nsswitch.conf")
270
327
  res.name.should eql("/etc/nsswitch.conf")
271
328
  res.action.should eql([:create])
272
329
  res.owner.should eql("root")
@@ -275,88 +332,88 @@ describe Chef::Recipe do
275
332
  end
276
333
 
277
334
  it "should raise an exception if the file cannot be found or read" do
278
- lambda { @recipe.from_file("/tmp/monkeydiving") }.should raise_error(IOError)
335
+ lambda { recipe.from_file("/tmp/monkeydiving") }.should raise_error(IOError)
279
336
  end
280
337
  end
281
338
 
282
339
  describe "include_recipe" do
283
340
  it "should evaluate another recipe with include_recipe" do
284
- @node.should_receive(:loaded_recipe).with(:openldap, "gigantor")
285
- @run_context.include_recipe "openldap::gigantor"
286
- res = @run_context.resource_collection.resources(:cat => "blanket")
341
+ node.should_receive(:loaded_recipe).with(:openldap, "gigantor")
342
+ run_context.include_recipe "openldap::gigantor"
343
+ res = run_context.resource_collection.resources(:cat => "blanket")
287
344
  res.name.should eql("blanket")
288
345
  res.pretty_kitty.should eql(false)
289
346
  end
290
347
 
291
348
  it "should load the default recipe for a cookbook if include_recipe is called without a ::" do
292
- @node.should_receive(:loaded_recipe).with(:openldap, "default")
293
- @run_context.include_recipe "openldap"
294
- res = @run_context.resource_collection.resources(:cat => "blanket")
349
+ node.should_receive(:loaded_recipe).with(:openldap, "default")
350
+ run_context.include_recipe "openldap"
351
+ res = run_context.resource_collection.resources(:cat => "blanket")
295
352
  res.name.should eql("blanket")
296
353
  res.pretty_kitty.should eql(true)
297
354
  end
298
355
 
299
356
  it "should store that it has seen a recipe in the run_context" do
300
- @node.should_receive(:loaded_recipe).with(:openldap, "default")
301
- @run_context.include_recipe "openldap"
302
- @run_context.loaded_recipe?("openldap").should be_true
357
+ node.should_receive(:loaded_recipe).with(:openldap, "default")
358
+ run_context.include_recipe "openldap"
359
+ run_context.loaded_recipe?("openldap").should be_true
303
360
  end
304
361
 
305
362
  it "should not include the same recipe twice" do
306
- @node.should_receive(:loaded_recipe).with(:openldap, "default").exactly(:once)
307
- @cookbook_collection[:openldap].should_receive(:load_recipe).with("default", @run_context)
308
- @recipe.include_recipe "openldap"
309
- @cookbook_collection[:openldap].should_not_receive(:load_recipe).with("default", @run_context)
310
- @recipe.include_recipe "openldap"
363
+ node.should_receive(:loaded_recipe).with(:openldap, "default").exactly(:once)
364
+ cookbook_collection[:openldap].should_receive(:load_recipe).with("default", run_context)
365
+ recipe.include_recipe "openldap"
366
+ cookbook_collection[:openldap].should_not_receive(:load_recipe).with("default", run_context)
367
+ recipe.include_recipe "openldap"
311
368
  end
312
369
  end
313
370
 
314
371
  describe "tags" do
315
372
  it "should set tags via tag" do
316
- @recipe.tag "foo"
317
- @node[:tags].should include("foo")
373
+ recipe.tag "foo"
374
+ node[:tags].should include("foo")
318
375
  end
319
376
 
320
377
  it "should set multiple tags via tag" do
321
- @recipe.tag "foo", "bar"
322
- @node[:tags].should include("foo")
323
- @node[:tags].should include("bar")
378
+ recipe.tag "foo", "bar"
379
+ node[:tags].should include("foo")
380
+ node[:tags].should include("bar")
324
381
  end
325
382
 
326
383
  it "should not set the same tag twice via tag" do
327
- @recipe.tag "foo"
328
- @recipe.tag "foo"
329
- @node[:tags].should eql([ "foo" ])
384
+ recipe.tag "foo"
385
+ recipe.tag "foo"
386
+ node[:tags].should eql([ "foo" ])
330
387
  end
331
388
 
332
389
  it "should return the current list of tags from tag with no arguments" do
333
- @recipe.tag "foo"
334
- @recipe.tag.should eql([ "foo" ])
390
+ recipe.tag "foo"
391
+ recipe.tag.should eql([ "foo" ])
335
392
  end
336
393
 
337
394
  it "should return true from tagged? if node is tagged" do
338
- @recipe.tag "foo"
339
- @recipe.tagged?("foo").should be(true)
395
+ recipe.tag "foo"
396
+ recipe.tagged?("foo").should be(true)
340
397
  end
341
398
 
342
399
  it "should return false from tagged? if node is not tagged" do
343
- @recipe.tagged?("foo").should be(false)
400
+ recipe.tagged?("foo").should be(false)
344
401
  end
345
402
 
346
403
  it "should return false from tagged? if node is not tagged" do
347
- @recipe.tagged?("foo").should be(false)
404
+ recipe.tagged?("foo").should be(false)
348
405
  end
349
406
 
350
407
  it "should remove a tag from the tag list via untag" do
351
- @recipe.tag "foo"
352
- @recipe.untag "foo"
353
- @node[:tags].should eql([])
408
+ recipe.tag "foo"
409
+ recipe.untag "foo"
410
+ node[:tags].should eql([])
354
411
  end
355
412
 
356
413
  it "should remove multiple tags from the tag list via untag" do
357
- @recipe.tag "foo", "bar"
358
- @recipe.untag "bar", "foo"
359
- @node[:tags].should eql([])
414
+ recipe.tag "foo", "bar"
415
+ recipe.untag "bar", "foo"
416
+ node[:tags].should eql([])
360
417
  end
361
418
  end
362
419
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.10.2
5
- prerelease:
4
+ version: 11.10.4.ohai7.0
5
+ prerelease: 8
6
6
  platform: ruby
7
7
  authors:
8
8
  - Adam Jacob
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-18 00:00:00.000000000 Z
12
+ date: 2014-02-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mixlib-config
@@ -96,17 +96,17 @@ dependencies:
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
- - - ~>
99
+ - - '='
100
100
  - !ruby/object:Gem::Version
101
- version: '6.0'
101
+ version: 7.0.0.rc.0
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
- - - ~>
107
+ - - '='
108
108
  - !ruby/object:Gem::Version
109
- version: '6.0'
109
+ version: 7.0.0.rc.0
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: rest-client
112
112
  requirement: !ruby/object:Gem::Requirement
@@ -1566,6 +1566,7 @@ files:
1566
1566
  - spec/unit/digester_spec.rb
1567
1567
  - spec/unit/dsl/data_query_spec.rb
1568
1568
  - spec/unit/dsl/platform_introspection_spec.rb
1569
+ - spec/unit/dsl/recipe_spec.rb
1569
1570
  - spec/unit/dsl/regsitry_helper_spec.rb
1570
1571
  - spec/unit/encrypted_data_bag_item_spec.rb
1571
1572
  - spec/unit/environment_spec.rb
@@ -1888,9 +1889,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
1888
1889
  required_rubygems_version: !ruby/object:Gem::Requirement
1889
1890
  none: false
1890
1891
  requirements:
1891
- - - ! '>='
1892
+ - - ! '>'
1892
1893
  - !ruby/object:Gem::Version
1893
- version: '0'
1894
+ version: 1.3.1
1894
1895
  requirements: []
1895
1896
  rubyforge_project:
1896
1897
  rubygems_version: 1.8.23