diff options
| author | Luke Kanies <luke@madstop.com> | 2009-09-19 21:33:34 -0700 |
|---|---|---|
| committer | James Turnbull <james@lovedthanlost.net> | 2009-09-22 09:27:23 +1000 |
| commit | d42bda1f22e3beca321700a78aab9c1399537c30 (patch) | |
| tree | 349803fab5e39eb2425a575e43de4a10ca6c3a37 /spec | |
| parent | d53bc169861815ce7cffac431f76304c995bb4fa (diff) | |
| download | puppet-d42bda1f22e3beca321700a78aab9c1399537c30.tar.gz puppet-d42bda1f22e3beca321700a78aab9c1399537c30.tar.xz puppet-d42bda1f22e3beca321700a78aab9c1399537c30.zip | |
Fixing relationship metaparam backward compatibility
We broke some cases of metaparam compatibility in 0.25.
Most of it was pretty esoteric, but one thing that wasn't working
was relationship metaparams specified on defined resources.
This adds a compatibility method for older clients.
Signed-off-by: Luke Kanies <luke@madstop.com>
Diffstat (limited to 'spec')
| -rwxr-xr-x | spec/unit/parser/resource.rb | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/spec/unit/parser/resource.rb b/spec/unit/parser/resource.rb index 9eb8b13d9..0a67c4b54 100755 --- a/spec/unit/parser/resource.rb +++ b/spec/unit/parser/resource.rb @@ -170,6 +170,24 @@ describe Puppet::Parser::Resource do @resource[:owner].should == "other" end + it "should be running in metaparam compatibility mode if running a version below 0.25" do + catalog = stub 'catalog', :client_version => "0.24.8" + @resource.stubs(:catalog).returns catalog + @resource.should be_metaparam_compatibility_mode + end + + it "should be running in metaparam compatibility mode if running no client version is available" do + catalog = stub 'catalog', :client_version => nil + @resource.stubs(:catalog).returns catalog + @resource.should be_metaparam_compatibility_mode + end + + it "should not be running in metaparam compatibility mode if running a version at or above 0.25" do + catalog = stub 'catalog', :client_version => "0.25.0" + @resource.stubs(:catalog).returns catalog + @resource.should_not be_metaparam_compatibility_mode + end + it "should copy metaparams from its scope" do @scope.setvar("noop", "true") @@ -187,14 +205,34 @@ describe Puppet::Parser::Resource do @resource["noop"].should == "false" end - it "should not copy relationship metaparams" do + it "should not copy relationship metaparams when not in metaparam compatibility mode" do @scope.setvar("require", "bar") + @resource.stubs(:metaparam_compatibility_mode?).returns false @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams } @resource["require"].should be_nil end + it "should copy relationship metaparams when in metaparam compatibility mode" do + @scope.setvar("require", "bar") + + @resource.stubs(:metaparam_compatibility_mode?).returns true + @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams } + + @resource["require"].should == "bar" + end + + it "should stack relationship metaparams when in metaparam compatibility mode" do + @resource.set_parameter("require", "foo") + @scope.setvar("require", "bar") + + @resource.stubs(:metaparam_compatibility_mode?).returns true + @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams } + + @resource["require"].should == ["foo", "bar"] + end + it "should copy all metaparams that it finds" do @scope.setvar("noop", "foo") @scope.setvar("schedule", "bar") |
