summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/unit/provider/package/pkg.rb63
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