diff --git a/lib/puppet/provider/package/pacman.rb b/lib/puppet/provider/package/pacman.rb index 0c132309d8f..1295a0fc5d9 100644 --- a/lib/puppet/provider/package/pacman.rb +++ b/lib/puppet/provider/package/pacman.rb @@ -25,6 +25,7 @@ def self.yaourt? has_feature :uninstall_options has_feature :upgradeable has_feature :virtual_packages + has_feature :purgeable # Checks if a given name is a group def self.group?(name) @@ -191,6 +192,16 @@ def self.to_resource_hash(name, version) # Removes a package from the system. def uninstall + remove_package(false) + end + + def purge + remove_package(true) + end + + private + + def remove_package(purge_configs = false) resource_name = @resource[:name] is_group = self.class.group?(resource_name) @@ -201,6 +212,7 @@ def uninstall cmd += uninstall_options if @resource[:uninstall_options] cmd << "-R" cmd << '-s' if is_group + cmd << '--nosave' if purge_configs cmd << resource_name if self.class.yaourt? @@ -210,8 +222,6 @@ def uninstall end end - private - def install_options join_options(@resource[:install_options]) end diff --git a/spec/unit/provider/package/pacman_spec.rb b/spec/unit/provider/package/pacman_spec.rb index f1516ffc269..57784e53dd1 100644 --- a/spec/unit/provider/package/pacman_spec.rb +++ b/spec/unit/provider/package/pacman_spec.rb @@ -168,6 +168,14 @@ end end + describe "when purging" do + it "should call pacman to remove the right package and configs quietly" do + args = ["/usr/bin/pacman", "--noconfirm", "--noprogressbar", "-R", "--nosave", resource[:name]] + expect(executor).to receive(:execute).with(args, no_extra_options).and_return("") + provider.purge + end + end + describe "when uninstalling" do it "should call pacman to remove the right package quietly" do args = ["/usr/bin/pacman", "--noconfirm", "--noprogressbar", "-R", resource[:name]]