diff options
| author | Rein Henrichs <rein@puppetlabs.com> | 2010-04-13 14:20:48 -0700 |
|---|---|---|
| committer | test branch <puppet-dev@googlegroups.com> | 2010-02-17 06:50:53 -0800 |
| commit | 0f2d3ce686f7e706537e03ebb2166478fa55f649 (patch) | |
| tree | f68a5b616c9b427b58b84952ac2e6b015ef757d5 /spec/unit | |
| parent | a166d50c3c555a38ae13c1658b9afaefd583cfc9 (diff) | |
Fixes #1223 Add Zypper support for SuSE machines
Zypper is the replacement for `rug' from earlier SuSE releases. Zypper
is backward compatible with the rug command (mostly) and supports most
of the same commands that rug does.
This version fixes a number of bugs in the original:
* when installing with a specified version, fix bug where the package
name was being doubled ("foo" became "foofoo").
* fix bug where package name and version were separated by a "=" when it
should have been a "-".
* Update specs to reflect the implementation's use of the "-l" flag as
recommended in http://groups.google.com/group/puppet-dev/msg/d86416c079bd3faf
Signed-off-by: Rein Henrichs <reinh@reinh.com>
Diffstat (limited to 'spec/unit')
| -rw-r--r-- | spec/unit/provider/package/zypper.rb | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/spec/unit/provider/package/zypper.rb b/spec/unit/provider/package/zypper.rb new file mode 100644 index 000000000..be45a4cc7 --- /dev/null +++ b/spec/unit/provider/package/zypper.rb @@ -0,0 +1,81 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../../../spec_helper' + +provider_class = Puppet::Type.type(:package).provider(:zypper) + +describe provider_class do + before(:each) do + # Create a mock resource + @resource = stub 'resource' + + # A catch all; no parameters set + @resource.stubs(:[]).returns(nil) + + # But set name and source + @resource.stubs(:[]).with(:name).returns "mypackage" + @resource.stubs(:[]).with(:ensure).returns :installed + @resource.stubs(:command).with(:zypper).returns "/usr/bin/zypper" + + @provider = provider_class.new(@resource) + end + + it "should have an install method" do + @provider = provider_class.new + @provider.should respond_to(:install) + end + + it "should have a latest method" do + @provider = provider_class.new + @provider.should respond_to(:uninstall) + end + + it "should have an update method" do + @provider = provider_class.new + @provider.should respond_to(:update) + end + + it "should have a latest method" do + @provider = provider_class.new + @provider.should respond_to(:latest) + end + + describe "when installing" do + it "should use a command-line with versioned package'" do + @resource.stubs(:should).with(:ensure).returns "1.2.3-4.5.6" + @provider.expects(:zypper).with('--quiet', :install, '-l', '-y', 'mypackage-1.2.3-4.5.6') + @provider.expects(:query).returns "mypackage 0 1.2.3 4.5.6 x86_64" + @provider.install + end + + it "should use a command-line without versioned package" do + @resource.stubs(:should).with(:ensure).returns :latest + @provider.expects(:zypper).with('--quiet', :install, '-l', '-y', 'mypackage') + @provider.expects(:query).returns "mypackage 0 1.2.3 4.5.6 x86_64" + @provider.install + end + end + + describe "when updating" do + it "should call install method of instance" do + @provider.expects(:install) + @provider.update + end + end + + describe "when getting latest version" do + it "should return a version string" do + + fake_data = "Loading repository data... +Reading installed packages... +S | Repository | Name | Version | Arch +--+----------------+-----------------------+-----------------+------- +v | SLES11-Updates | cups | 1.1.1 | x86_64 +v | SLES11-Updates | mypackage | 1.3.9h-8.20.1 | x86_64" + + @provider.expects(:zypper).with("list-updates").returns fake_data + @provider.latest.should == "1.3.9h-8.20.1" + end + end + + end |
