diff options
author | Luke Kanies <luke@madstop.com> | 2007-11-19 15:36:42 -0600 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2007-11-19 15:36:42 -0600 |
commit | 8ad27328850c5acf67548c7ad6c93d0c4a43e1ec (patch) | |
tree | e7fe3f40691941c1e4a8b55c17bbb527c9700908 /spec/unit | |
parent | 7b7bfd8a6c2ca33364adb9a09b54ec732f05007e (diff) | |
download | puppet-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-x | spec/unit/parser/resource.rb | 50 |
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 |