From 08c8b582647f76fa22ee07d49c38ae029fe079a1 Mon Sep 17 00:00:00 2001 From: "matt.cover" Date: Tue, 2 Feb 2016 08:54:43 -0700 Subject: [PATCH] MODULES-2873 - Avoid duplicate package resources when package_manage => true --- manifests/ppa.pp | 2 +- spec/defines/ppa_spec.rb | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/manifests/ppa.pp b/manifests/ppa.pp index d6b4900..b83500b 100644 --- a/manifests/ppa.pp +++ b/manifests/ppa.pp @@ -22,7 +22,7 @@ define apt::ppa( if $ensure == 'present' { if $package_manage { - package { $package_name: } + ensure_packages($package_name) $_require = [File['sources.list.d'], Package[$package_name]] } else { diff --git a/spec/defines/ppa_spec.rb b/spec/defines/ppa_spec.rb index fe25978..5080a87 100644 --- a/spec/defines/ppa_spec.rb +++ b/spec/defines/ppa_spec.rb @@ -72,6 +72,46 @@ describe 'apt::ppa' do } end + describe 'package_manage => true, multiple ppas, MODULES-2873' do + let :pre_condition do + 'class { "apt": } + apt::ppa {"ppa:foo": + package_manage => true + }' + end + let :facts do + { + :lsbdistrelease => '11.04', + :lsbdistcodename => 'natty', + :operatingsystem => 'Ubuntu', + :osfamily => 'Debian', + :lsbdistid => 'Ubuntu', + :puppetversion => Puppet.version, + } + end + let :params do + { + :package_manage => true, + } + end + + let(:title) { 'ppa:bar' } + it { is_expected.to contain_package('python-software-properties') } + it { is_expected.to contain_exec('add-apt-repository-ppa:bar').that_notifies('Class[Apt::Update]').with({ + 'environment' => [], + 'command' => '/usr/bin/add-apt-repository -y ppa:bar', + 'unless' => '/usr/bin/test -s /etc/apt/sources.list.d/bar-natty.list', + 'user' => 'root', + 'logoutput' => 'on_failure', + }) + } + + it { is_expected.to contain_file('/etc/apt/sources.list.d/bar-natty.list').that_requires('Exec[add-apt-repository-ppa:bar]').with({ + 'ensure' => 'file', + }) + } + end + describe 'package_manage => false' do let :pre_condition do 'class { "apt": }' -- 2.45.2