diff options
| author | Dominic Maraglia <dominic@puppetlabs.com> | 2011-06-10 14:35:38 -0700 |
|---|---|---|
| committer | Dominic Maraglia <dominic@puppetlabs.com> | 2011-06-10 14:35:38 -0700 |
| commit | a97c86e7d01384aa06f5d4d69da427fc355aebe7 (patch) | |
| tree | fcfb00227026d0f7f53a97a70e1ba39602a92134 /spec | |
| parent | 0b0a9be25f95f7dfd14bbcc9bf7c7f9b21531100 (diff) | |
| parent | 381fa409207a1b0d26e7e55ea8cbe45a7e132fdf (diff) | |
| download | puppet-a97c86e7d01384aa06f5d4d69da427fc355aebe7.tar.gz puppet-a97c86e7d01384aa06f5d4d69da427fc355aebe7.tar.xz puppet-a97c86e7d01384aa06f5d4d69da427fc355aebe7.zip | |
Merge branch 'ticket/2.6.x/6418'
Diffstat (limited to 'spec')
| -rwxr-xr-x | spec/integration/type_spec.rb | 11 | ||||
| -rwxr-xr-x | spec/unit/type_spec.rb | 66 |
2 files changed, 77 insertions, 0 deletions
diff --git a/spec/integration/type_spec.rb b/spec/integration/type_spec.rb index 4be01d558..9fd10485f 100755 --- a/spec/integration/type_spec.rb +++ b/spec/integration/type_spec.rb @@ -18,4 +18,15 @@ describe Puppet::Type do type.provider(:myprovider).should equal(provider) end + + it "should not lose its provider parameter when it is reloaded" do + type = Puppet::Type.newtype(:reload_test_type) + + provider = type.provide(:test_provider) + + # reload it + type = Puppet::Type.newtype(:reload_test_type) + + type.parameters.should include(:provider) + end end diff --git a/spec/unit/type_spec.rb b/spec/unit/type_spec.rb index ca291c4fa..bbdaec3bc 100755 --- a/spec/unit/type_spec.rb +++ b/spec/unit/type_spec.rb @@ -164,6 +164,72 @@ describe Puppet::Type do end end + describe "when creating a provider" do + before :each do + @type = Puppet::Type.newtype(:provider_test_type) + end + + after :each do + @type.provider_hash.clear + end + + it "should create a subclass of Puppet::Provider for the provider" do + provider = @type.provide(:test_provider) + + provider.ancestors.should include(Puppet::Provider) + end + + it "should use a parent class if specified" do + parent_provider = @type.provide(:parent_provider) + child_provider = @type.provide(:child_provider, :parent => parent_provider) + + child_provider.ancestors.should include(parent_provider) + end + + it "should use a parent class if specified by name" do + parent_provider = @type.provide(:parent_provider) + child_provider = @type.provide(:child_provider, :parent => :parent_provider) + + child_provider.ancestors.should include(parent_provider) + end + + it "should raise an error when the parent class can't be found" do + expect { + @type.provide(:child_provider, :parent => :parent_provider) + }.to raise_error(Puppet::DevError, /Could not find parent provider.+parent_provider/) + end + + it "should ensure its type has a 'provider' parameter" do + @type.provide(:test_provider) + + @type.parameters.should include(:provider) + end + + it "should remove a previously registered provider with the same name" do + old_provider = @type.provide(:test_provider) + new_provider = @type.provide(:test_provider) + + old_provider.should_not equal(new_provider) + end + + it "should register itself as a provider for the type" do + provider = @type.provide(:test_provider) + + provider.should == @type.provider(:test_provider) + end + + it "should create a provider when a provider with the same name previously failed" do + @type.provide(:test_provider) do + raise "failed to create this provider" + end rescue nil + + provider = @type.provide(:test_provider) + + provider.ancestors.should include(Puppet::Provider) + provider.should == @type.provider(:test_provider) + end + end + describe "when choosing a default provider" do it "should choose the provider with the highest specificity" do # Make a fake type |
