From 432ef346db9b1b59735e3ac91cd098f273a56e4f Mon Sep 17 00:00:00 2001 From: Wenzheng Jiang Date: Tue, 3 Jul 2018 14:37:15 +1000 Subject: [PATCH] Make sure PPA source file is absent when apt-add-repository fails --- manifests/ppa.pp | 2 +- spec/defines/ppa_spec.rb | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/manifests/ppa.pp b/manifests/ppa.pp index a67e1a1..b766d59 100644 --- a/manifests/ppa.pp +++ b/manifests/ppa.pp @@ -46,7 +46,7 @@ define apt::ppa( exec { "add-apt-repository-${name}": environment => $_proxy_env, - command => "/usr/bin/add-apt-repository ${options} ${name}", + command => "/usr/bin/add-apt-repository ${options} ${name} || rm ${::apt::sources_list_d}/${sources_list_d_filename} && false", unless => "/usr/bin/test -f ${::apt::sources_list_d}/${sources_list_d_filename}", user => 'root', logoutput => 'on_failure', diff --git a/spec/defines/ppa_spec.rb b/spec/defines/ppa_spec.rb index 4978221..a68dc62 100644 --- a/spec/defines/ppa_spec.rb +++ b/spec/defines/ppa_spec.rb @@ -22,7 +22,7 @@ describe 'apt::ppa' do it { is_expected.not_to contain_package('python-software-properties') } it { is_expected.to contain_exec('add-apt-repository-ppa:needs/such.substitution/wow+type').that_notifies('Class[Apt::Update]').with(environment: [], - command: '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow+type', # rubocop:disable Metrics/LineLength + command: '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow+type || rm /etc/apt/sources.list.d/needs-such_substitution-wow_type-trusty.list && false', # rubocop:disable Metrics/LineLength unless: '/usr/bin/test -f /etc/apt/sources.list.d/needs-such_substitution-wow_type-trusty.list', # rubocop:disable Metrics/LineLength user: 'root', logoutput: 'on_failure') @@ -46,7 +46,7 @@ describe 'apt::ppa' do it { is_expected.to contain_exec('add-apt-repository-ppa:user/foo').that_notifies('Class[Apt::Update]').with(environment: [], - command: '/usr/bin/add-apt-repository -y ppa:user/foo', + command: '/usr/bin/add-apt-repository -y ppa:user/foo || rm /etc/apt/sources.list.d/user-ubuntu-foo-wily.list && false', unless: '/usr/bin/test -f /etc/apt/sources.list.d/user-ubuntu-foo-wily.list', user: 'root', logoutput: 'on_failure') @@ -80,7 +80,7 @@ describe 'apt::ppa' do it { is_expected.to contain_package('software-properties-common') } it { is_expected.to contain_exec('add-apt-repository-ppa:needs/such.substitution/wow').that_notifies('Class[Apt::Update]').with('environment' => [], - 'command' => '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow', # rubocop:disable Metrics/LineLength + 'command' => '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow || rm /etc/apt/sources.list.d/needs-such_substitution-wow-trusty.list && false', # rubocop:disable Metrics/LineLength 'unless' => '/usr/bin/test -f /etc/apt/sources.list.d/needs-such_substitution-wow-trusty.list', # rubocop:disable Metrics/LineLength 'user' => 'root', 'logoutput' => 'on_failure') @@ -117,7 +117,7 @@ describe 'apt::ppa' do it { is_expected.not_to contain_package('python-software-properties') } it { is_expected.to contain_exec('add-apt-repository-ppa:needs/such.substitution/wow').that_notifies('Class[Apt::Update]').with('environment' => [], - 'command' => '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow', # rubocop:disable Metrics/LineLength + 'command' => '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow || rm /etc/apt/sources.list.d/needs-such_substitution-wow-trusty.list && false', # rubocop:disable Metrics/LineLength 'unless' => '/usr/bin/test -f /etc/apt/sources.list.d/needs-such_substitution-wow-trusty.list', # rubocop:disable Metrics/LineLength 'user' => 'root', 'logoutput' => 'on_failure') @@ -158,7 +158,7 @@ describe 'apt::ppa' do it { is_expected.to contain_package('software-properties-common') } it { is_expected.to contain_exec('add-apt-repository-ppa:user/foo').that_notifies('Class[Apt::Update]').with(environment: [], - command: '/usr/bin/add-apt-repository ppa:user/foo', + command: '/usr/bin/add-apt-repository ppa:user/foo || rm /etc/apt/sources.list.d/user-foo-trusty.list && false', unless: '/usr/bin/test -f /etc/apt/sources.list.d/user-foo-trusty.list', user: 'root', logoutput: 'on_failure') @@ -193,7 +193,7 @@ describe 'apt::ppa' do it { is_expected.to contain_package('software-properties-common') } it { is_expected.to contain_exec('add-apt-repository-ppa:user/foo').that_notifies('Class[Apt::Update]').with(environment: ['http_proxy=http://localhost:8080'], - command: '/usr/bin/add-apt-repository ppa:user/foo', + command: '/usr/bin/add-apt-repository ppa:user/foo || rm /etc/apt/sources.list.d/user-foo-trusty.list && false', unless: '/usr/bin/test -f /etc/apt/sources.list.d/user-foo-trusty.list', user: 'root', logoutput: 'on_failure') @@ -228,7 +228,7 @@ describe 'apt::ppa' do it { is_expected.to contain_package('software-properties-common') } it { is_expected.to contain_exec('add-apt-repository-ppa:user/foo').that_notifies('Class[Apt::Update]').with(environment: ['http_proxy=http://localhost:8180'], - command: '/usr/bin/add-apt-repository ppa:user/foo', + command: '/usr/bin/add-apt-repository ppa:user/foo || rm /etc/apt/sources.list.d/user-foo-trusty.list && false', unless: '/usr/bin/test -f /etc/apt/sources.list.d/user-foo-trusty.list', user: 'root', logoutput: 'on_failure') @@ -263,7 +263,7 @@ describe 'apt::ppa' do it { is_expected.to contain_package('software-properties-common') } it { is_expected.to contain_exec('add-apt-repository-ppa:user/foo').that_notifies('Class[Apt::Update]').with(environment: ['http_proxy=http://localhost:8180', 'https_proxy=https://localhost:8180'], - command: '/usr/bin/add-apt-repository ppa:user/foo', + command: '/usr/bin/add-apt-repository ppa:user/foo || rm /etc/apt/sources.list.d/user-foo-trusty.list && false', unless: '/usr/bin/test -f /etc/apt/sources.list.d/user-foo-trusty.list', user: 'root', logoutput: 'on_failure') -- 2.32.3