diff options
| author | Daniel Pittman <daniel@puppetlabs.com> | 2011-07-21 16:43:16 -0700 |
|---|---|---|
| committer | Daniel Pittman <daniel@puppetlabs.com> | 2011-07-22 13:29:32 -0700 |
| commit | 532c4f37e4f8289cf4a9871ebc0cb5086c2ba26a (patch) | |
| tree | b8e682f621a8974874d79c60a9562611bd6e21b0 /spec/unit/interface | |
| parent | 2cd3bc47993fbd32a77ca9dfdd51353f2dfbcb58 (diff) | |
| download | puppet-532c4f37e4f8289cf4a9871ebc0cb5086c2ba26a.tar.gz puppet-532c4f37e4f8289cf4a9871ebc0cb5086c2ba26a.tar.xz puppet-532c4f37e4f8289cf4a9871ebc0cb5086c2ba26a.zip | |
(#7184) Load the core of obsolete versions of Faces.
When we define an action on an older version of a Face, we must be sure to
directly load the core of that version, not just define it with the external
Action(s) that it had.
Otherwise we break our contract, which is that any core Actions for a specific
version will be available to your external Action for as long as we support
that core version.
Reviewed-By: Pieter van de Bruggen <pieter@puppetlabs.com>
Diffstat (limited to 'spec/unit/interface')
| -rwxr-xr-x | spec/unit/interface/face_collection_spec.rb | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/spec/unit/interface/face_collection_spec.rb b/spec/unit/interface/face_collection_spec.rb index 8f9c349b6..514a624b1 100755 --- a/spec/unit/interface/face_collection_spec.rb +++ b/spec/unit/interface/face_collection_spec.rb @@ -35,7 +35,8 @@ describe Puppet::Interface::FaceCollection do end it "should attempt to load the face if it isn't found" do - subject.expects(:require).with('puppet/face/bar') + subject.expects(:require).once.with('puppet/face/bar') + subject.expects(:require).once.with('puppet/face/0.0.1/bar') subject["bar", '0.0.1'] end @@ -64,7 +65,8 @@ describe Puppet::Interface::FaceCollection do it "should return false if the face file itself is missing" do subject.stubs(:require). - raises(LoadError, 'no such file to load -- puppet/face/bar') + raises(LoadError, 'no such file to load -- puppet/face/bar').then. + raises(LoadError, 'no such file to load -- puppet/face/0.0.1/bar') subject["bar", '0.0.1'].should be_false end @@ -110,6 +112,27 @@ describe Puppet::Interface::FaceCollection do action.should be_an_instance_of Puppet::Interface::Action action.face.version.should == SemVer.new('1.0.0') end + + it "should load the full older version of a face" do + action = Puppet::Face::FaceCollection. + get_action_for_face(:huzzah, :obsolete, :current) + + action.face.version.should == SemVer.new('1.0.0') + action.face.should be_action :obsolete_in_core + end + + it "should not add obsolete actions to the current version" do + action = Puppet::Face::FaceCollection. + get_action_for_face(:huzzah, :obsolete, :current) + + action.face.version.should == SemVer.new('1.0.0') + action.face.should be_action :obsolete_in_core + + current = Puppet::Face[:huzzah, :current] + current.version.should == SemVer.new('2.0.1') + current.should_not be_action :obsolete_in_core + current.should_not be_action :obsolete + end end describe "::register" do |
