diff options
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/unit/provider/package/pkg.rb | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/spec/unit/provider/package/pkg.rb b/spec/unit/provider/package/pkg.rb new file mode 100644 index 000000000..6001c7b7a --- /dev/null +++ b/spec/unit/provider/package/pkg.rb @@ -0,0 +1,63 @@ +#!/usr/bin/env ruby + +Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") } + +provider = Puppet::Type.type(:package).provider(:pkg) + +describe provider do + before do + @resource = stub 'resource', :[] => "dummy" + @provider = provider.new(@resource) + + @fakeresult = "install ok installed dummy 1.0\n" + end + + def self.it_should_respond_to(*actions) + actions.each do |action| + it "should respond to :#{action}" do + @provider.should respond_to(action) + end + end + end + + it_should_respond_to :install, :uninstall, :update, :query, :latest + + it "should be versionable" do + provider.should_not be_versionable + end + + it "should use :install to update" do + @provider.expects(:install) + @provider.update + end + + it "should parse a line correctly" do + result = provider.parse_line("dummy 1.0@1.0-1.0 installed ----") + result.should == {:name => "dummy", :version => "1.0@1.0-1.0", + :ensure => :present, :status => "installed", + :provider => :pkg, :error => "ok"} + end + + it "should fail to parse an incorrect line" do + result = provider.parse_line("foo") + result.should be_nil + end + + it "should list package correctly" do + @provider.expects(:pkg).with(:list, "-H", "dummy").returns "1" + @provider.query.should == {:status=>"missing", :ensure=>:absent, + :name=>"dummy", :error=>"ok"} + end + + it "should fail to list a package when it can't parse the output line" do + @provider.expects(:pkg).with(:list, "-H", "dummy").returns "failed" + @provider.query.should == {} + #== {:status=>"missing", :ensure=>:absent, :name=>"dummy", :error=>"ok"} + end + + it "should fail to list a missing package" do + @provider.expects(:pkg).with(:list, "-H", "dummy").returns "dummy 1.0@1.0-1.0 installed ----" + lambda { @provider.query }.should raise_error(Puppet::Error) + #== {:status=>"missing", :ensure=>:absent, :name=>"dummy", :error=>"ok"} + end +end |
