diff --git a/manifests/backports.pp b/manifests/backports.pp index 83e3c49500..f2acb98a40 100644 --- a/manifests/backports.pp +++ b/manifests/backports.pp @@ -94,11 +94,14 @@ if $pin =~ Hash { $_pin = $pin } elsif $pin =~ Numeric or $pin =~ String { - # apt::source defaults to pinning to origin, but we should pin to release - # for backports + $pin_type = $facts['os']['name'] ? { + 'Debian' => 'codename', + 'Ubuntu' => 'release', + } + $_pin = { 'priority' => $pin, - 'release' => $_release, + $pin_type => $_release, } } else { fail('pin must be either a string, number or hash') diff --git a/spec/classes/apt_backports_spec.rb b/spec/classes/apt_backports_spec.rb index 23031ab73a..e051913aae 100644 --- a/spec/classes/apt_backports_spec.rb +++ b/spec/classes/apt_backports_spec.rb @@ -32,7 +32,7 @@ release: 'bookworm-backports', pin: { 'priority' => 200, - 'release' => 'bookworm-backports' + 'codename' => 'bookworm-backports' }, keyring: '/usr/share/keyrings/debian-archive-keyring.gpg', ) @@ -146,88 +146,6 @@ end end - describe 'linuxmint tests' do - let(:facts) do - { - os: { - family: 'Debian', - name: 'LinuxMint', - release: { - major: '17', - full: '17' - }, - distro: { - codename: 'qiana', - id: 'LinuxMint' - } - } - } - end - - context 'with all the needed things set' do - let(:params) do - { - location: 'http://archive.ubuntu.com/ubuntu', - release: 'trusty-backports', - repos: 'main universe multiverse restricted', - key: '630239CC130E1A7FD81A27B140976EAF437D05B5' - } - end - - it { - expect(subject).to contain_apt__source('backports').with( - location: 'http://archive.ubuntu.com/ubuntu', - key: '630239CC130E1A7FD81A27B140976EAF437D05B5', - repos: 'main universe multiverse restricted', - release: 'trusty-backports', - pin: { 'priority' => 200, 'release' => 'trusty-backports' }, - ) - } - end - - context 'with missing location' do - let(:params) do - { - release: 'trusty-backports', - repos: 'main universe multiverse restricted', - key: '630239CC130E1A7FD81A27B140976EAF437D05B5' - } - end - - it do - expect(subject).to raise_error(Puppet::Error, %r{If not on Debian or Ubuntu, you must explicitly pass location, release, and repos}) - end - end - - context 'with missing release' do - let(:params) do - { - location: 'http://archive.ubuntu.com/ubuntu', - repos: 'main universe multiverse restricted', - key: '630239CC130E1A7FD81A27B140976EAF437D05B5' - } - end - - it do - expect(subject).to raise_error(Puppet::Error, %r{If not on Debian or Ubuntu, you must explicitly pass location, release, and repos}) - end - end - - context 'with missing repos' do - let(:params) do - { - location: 'http://archive.ubuntu.com/ubuntu', - release: 'trusty-backports', - key: '630239CC130E1A7FD81A27B140976EAF437D05B5' - } - end - - it do - expect(subject).to raise_error(Puppet::Error, %r{If not on Debian or Ubuntu, you must explicitly pass location, release, and repos}) - end - end - end - describe 'validation' do let(:facts) do {