summaryrefslogtreecommitdiffstats
path: root/spec/unit/provider/package/apt.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/provider/package/apt.rb')
-rwxr-xr-xspec/unit/provider/package/apt.rb138
1 files changed, 138 insertions, 0 deletions
diff --git a/spec/unit/provider/package/apt.rb b/spec/unit/provider/package/apt.rb
new file mode 100755
index 000000000..0ec1cd9ed
--- /dev/null
+++ b/spec/unit/provider/package/apt.rb
@@ -0,0 +1,138 @@
+#!/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(:apt)
+
+describe provider do
+ before do
+ @resource = stub 'resource', :[] => "asdf"
+ @provider = provider.new(@resource)
+
+ @fakeresult = "install ok installed asdf 1.0\n"
+ end
+
+ it "should be versionable" do
+ provider.should be_versionable
+ end
+
+ it "should use :install to update" do
+ @provider.expects(:install)
+ @provider.update
+ end
+
+ it "should use 'apt-get remove' to uninstall" do
+ @provider.expects(:aptget).with("-y", "-q", :remove, "asdf")
+
+ @provider.uninstall
+ end
+
+ it "should use 'apt-get purge' and 'dpkg purge' to purge" do
+ @provider.expects(:aptget).with("-y", "-q", :remove, "--purge", "asdf")
+ @provider.expects(:dpkg).with("--purge", "asdf")
+
+ @provider.purge
+ end
+
+ it "should use 'apt-cache policy' to determine the latest version of a package" do
+ @provider.expects(:aptcache).with(:policy, "asdf").returns "asdf:
+Installed: 1:1.0
+Candidate: 1:1.1
+Version table:
+ 1:1.0
+ 650 http://ftp.osuosl.org testing/main Packages
+*** 1:1.1
+ 100 /var/lib/dpkg/status"
+
+ @provider.latest.should == "1:1.1"
+ end
+
+ it "should print and error and return nil if no policy is found" do
+ @provider.expects(:aptcache).with(:policy, "asdf").returns "asdf:"
+
+ @provider.expects(:err)
+ @provider.latest.should be_nil
+ end
+
+ it "should be able to preseed" do
+ @provider.should respond_to(:run_preseed)
+ end
+
+ it "should preseed with the provided responsefile when preseeding is called for" do
+ @resource.expects(:[]).with(:responsefile).returns "/my/file"
+ FileTest.expects(:exist?).with("/my/file").returns true
+
+ @provider.expects(:info)
+ @provider.expects(:preseed).with("/my/file")
+
+ @provider.run_preseed
+ end
+
+ it "should not preseed if no responsefile is provided" do
+ @resource.expects(:[]).with(:responsefile).returns nil
+
+ @provider.expects(:info)
+ @provider.expects(:preseed).never
+
+ @provider.run_preseed
+ end
+
+ it "should fail if a cdrom is listed in the sources list and :allowcdrom is not specified"
+
+ describe "when installing" do
+ it "should preseed if a responsefile is provided" do
+ @resource.expects(:[]).with(:responsefile).returns "/my/file"
+ @provider.expects(:run_preseed)
+
+ @provider.stubs(:aptget)
+ @provider.install
+ end
+
+ it "should check for a cdrom" do
+ @provider.expects(:checkforcdrom)
+
+ @provider.stubs(:aptget)
+ @provider.install
+ end
+
+ it "should use 'apt-get install' with the package name if no version is asked for" do
+ @resource.expects(:[]).with(:ensure).returns :installed
+ @provider.expects(:aptget).with { |*command| command[-1] == "asdf" and command[-2] == :install }
+
+ @provider.install
+ end
+
+ it "should specify the package version if one is asked for" do
+ @resource.expects(:[]).with(:ensure).returns "1.0"
+ @provider.expects(:aptget).with { |*command| command[-1] == "asdf=1.0" }
+
+ @provider.install
+ end
+
+ it "should do a quiet install" do
+ @provider.expects(:aptget).with { |*command| command.include?("-q") }
+
+ @provider.install
+ end
+
+ it "should default to 'yes' for all questions" do
+ @provider.expects(:aptget).with { |*command| command.include?("-y") }
+
+ @provider.install
+ end
+
+ it "should keep config files if asked" do
+ @resource.expects(:[]).with(:configfiles).returns :keep
+ @provider.expects(:aptget).with { |*command| command.include?("DPkg::Options::=--force-confold") }
+
+ @provider.install
+ end
+
+ it "should replace config files if asked" do
+ @resource.expects(:[]).with(:configfiles).returns :replace
+ @provider.expects(:aptget).with { |*command| command.include?("DPkg::Options::=--force-confnew") }
+
+ @provider.install
+ end
+ end
+end