diff --git a/manifests/source.pp b/manifests/source.pp index 96c174c05e..163a411bb2 100644 --- a/manifests/source.pp +++ b/manifests/source.pp @@ -1,9 +1,9 @@ # source.pp # add an apt source define apt::source( + $location = undef, $comment = $name, $ensure = present, - $location = '', $release = $::apt::xfacts['lsbdistcodename'], $repos = 'main', $include = {}, @@ -20,6 +20,10 @@ fail('lsbdistcodename fact not available: release parameter required') } + if $ensure == 'present' and ! $location { + fail('cannot create a source entry without specifying a location') + } + $_before = Apt::Setting["list-${title}"] $_include = merge($::apt::include_defaults, $include) diff --git a/spec/defines/source_spec.rb b/spec/defines/source_spec.rb index d5e146a2f4..7fd86b56ff 100644 --- a/spec/defines/source_spec.rb +++ b/spec/defines/source_spec.rb @@ -12,18 +12,35 @@ end context 'defaults' do - let :facts do - { - :lsbdistid => 'Debian', - :lsbdistcodename => 'wheezy', - :osfamily => 'Debian' - } + context 'without location' do + let :facts do + { + :lsbdistid => 'Debian', + :lsbdistcodename => 'wheezy', + :osfamily => 'Debian' + } + end + it do + expect { + is_expected.to compile + }.to raise_error(Puppet::Error, /source entry without specifying a location/) + end end + context 'with location' do + let :facts do + { + :lsbdistid => 'Debian', + :lsbdistcodename => 'wheezy', + :osfamily => 'Debian' + } + end + let(:params) { { :location => 'hello.there', } } - it { is_expected.to contain_apt__setting('list-my_source').with({ - :ensure => 'present', - }).without_content(/# my_source\ndeb-src wheezy main\n/) - } + it { is_expected.to contain_apt__setting('list-my_source').with({ + :ensure => 'present', + }).without_content(/# my_source\ndeb-src hello.there wheezy main\n/) + } + end end describe 'no defaults' do @@ -149,13 +166,14 @@ end let :params do { + :location => 'hello.there', :allow_unsigned => true, } end it { is_expected.to contain_apt__setting('list-my_source').with({ :ensure => 'present', - }).with_content(/# my_source\ndeb \[trusted=yes\] wheezy main\n/) + }).with_content(/# my_source\ndeb \[trusted=yes\] hello.there wheezy main\n/) } end @@ -169,6 +187,7 @@ end let :params do { + :location => 'hello.there', :include => {'deb' => false, 'src' => true,}, :architecture => 'x86_64', } @@ -176,7 +195,7 @@ it { is_expected.to contain_apt__setting('list-my_source').with({ :ensure => 'present', - }).with_content(/# my_source\ndeb-src \[arch=x86_64 \] wheezy main\n/) + }).with_content(/# my_source\ndeb-src \[arch=x86_64 \] hello.there wheezy main\n/) } end @@ -208,6 +227,7 @@ :osfamily => 'Debian' } end + let(:params) { { :location => 'hello.there', } } it do expect {