summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-09-19 21:33:34 -0700
committerJames Turnbull <james@lovedthanlost.net>2009-09-22 09:27:23 +1000
commitd42bda1f22e3beca321700a78aab9c1399537c30 (patch)
tree349803fab5e39eb2425a575e43de4a10ca6c3a37 /spec
parentd53bc169861815ce7cffac431f76304c995bb4fa (diff)
downloadpuppet-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-xspec/unit/parser/resource.rb40
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")