summaryrefslogtreecommitdiffstats
path: root/spec/unit
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2007-11-19 15:36:42 -0600
committerLuke Kanies <luke@madstop.com>2007-11-19 15:36:42 -0600
commit8ad27328850c5acf67548c7ad6c93d0c4a43e1ec (patch)
treee7fe3f40691941c1e4a8b55c17bbb527c9700908 /spec/unit
parent7b7bfd8a6c2ca33364adb9a09b54ec732f05007e (diff)
downloadpuppet-8ad27328850c5acf67548c7ad6c93d0c4a43e1ec.tar.gz
puppet-8ad27328850c5acf67548c7ad6c93d0c4a43e1ec.tar.xz
puppet-8ad27328850c5acf67548c7ad6c93d0c4a43e1ec.zip
Fixing #446. I ended up largely not using porridge's patch,
but only because the code (and my coding style, to some extent) has changed so much in the last few months. Also, added specs.
Diffstat (limited to 'spec/unit')
-rwxr-xr-xspec/unit/parser/resource.rb50
1 files changed, 50 insertions, 0 deletions
diff --git a/spec/unit/parser/resource.rb b/spec/unit/parser/resource.rb
index 354690711..3d048f7e6 100755
--- a/spec/unit/parser/resource.rb
+++ b/spec/unit/parser/resource.rb
@@ -37,3 +37,53 @@ describe Puppet::Parser::Resource, " when evaluating" do
res.evaluate
end
end
+
+describe Puppet::Parser::Resource, " when finishing" do
+ before do
+ @parser = Puppet::Parser::Parser.new :Code => ""
+ @source = @parser.newclass ""
+ @definition = @parser.newdefine "mydefine"
+ @class = @parser.newclass "myclass"
+ @nodedef = @parser.newnode("mynode")[0]
+ @node = Puppet::Node.new("yaynode")
+ @compile = Puppet::Parser::Compile.new(@node, @parser)
+ @scope = @compile.topscope
+
+ @resource = Puppet::Parser::Resource.new(:type => "mydefine", :title => "whatever", :scope => @scope, :source => @source)
+ end
+
+ it "should copy metaparams from its scope" do
+ @scope.setvar("noop", "true")
+
+ @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
+
+ @resource["noop"].should == "true"
+ end
+
+ it "should not copy metaparams that it already has" do
+ @resource.class.publicize_methods(:set_parameter) { @resource.set_parameter("noop", "false") }
+ @scope.setvar("noop", "true")
+
+ @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
+
+ @resource["noop"].should == "false"
+ end
+
+ it "should stack relationship metaparams from its container if it already has them" do
+ @resource.class.publicize_methods(:set_parameter) { @resource.set_parameter("require", "resource") }
+ @scope.setvar("require", "container")
+
+ @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
+
+ @resource["require"].sort.should == %w{container resource}
+ end
+
+ it "should flatten the array resulting from stacking relationship metaparams" do
+ @resource.class.publicize_methods(:set_parameter) { @resource.set_parameter("require", ["resource1", "resource2"]) }
+ @scope.setvar("require", %w{container1 container2})
+
+ @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
+
+ @resource["require"].sort.should == %w{container1 container2 resource1 resource2}
+ end
+end