diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 12ed4ff109..80cc6357f4 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM puppet/pdk:latest +FROM docker.io/puppet/pdk:latest # [Optional] Uncomment this section to install additional packages. # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ diff --git a/metadata.json b/metadata.json index edabaeb3e9..fda7d4f390 100644 --- a/metadata.json +++ b/metadata.json @@ -26,7 +26,8 @@ "operatingsystemrelease": [ "18.04", "20.04", - "22.04" + "22.04", + "24.04" ] } ], diff --git a/provision.yaml b/provision.yaml index ed5c33baf6..24cf0f1e9c 100644 --- a/provision.yaml +++ b/provision.yaml @@ -18,6 +18,8 @@ docker_ub_6: images: - litmusimage/ubuntu:18.04 - litmusimage/ubuntu:20.04 + - litmusimage/ubuntu:22.04 + - litmusimage/ubuntu:24.04 docker_el7: provisioner: docker images: [] @@ -28,6 +30,8 @@ release_checks_6: - debian-10-x86_64 - ubuntu-1804-x86_64 - ubuntu-2004-x86_64 + - ubuntu-2204-x86_64 + - ubuntu-2404-x86_64 release_checks_7: provisioner: abs images: @@ -35,3 +39,5 @@ release_checks_7: - debian-10-x86_64 - ubuntu-1804-x86_64 - ubuntu-2004-x86_64 + - ubuntu-2204-x86_64 + - ubuntu-2404-x86_64 diff --git a/spec/classes/apt_backports_spec.rb b/spec/classes/apt_backports_spec.rb index e051913aae..2ebef212a1 100644 --- a/spec/classes/apt_backports_spec.rb +++ b/spec/classes/apt_backports_spec.rb @@ -5,52 +5,20 @@ describe 'apt::backports', type: :class do let(:pre_condition) { 'include apt' } - describe 'debian/ubuntu tests' do - context 'with defaults on debian' do - let(:facts) do - { - os: { - family: 'Debian', - name: 'Debian', - release: { - full: '12.5', - major: '12', - minor: '5' - }, - distro: { - codename: 'bookworm', - id: 'Debian' - } - } - } - end - - it { - expect(subject).to contain_apt__source('backports').with( - location: 'http://deb.debian.org/debian', - repos: 'main contrib non-free non-free-firmware', - release: 'bookworm-backports', - pin: { - 'priority' => 200, - 'codename' => 'bookworm-backports' - }, - keyring: '/usr/share/keyrings/debian-archive-keyring.gpg', - ) - } - end - - context 'with defaults on ubuntu' do + # Shared examples for Ubuntu tests + shared_examples 'ubuntu backports' do |release_major, release_full, codename| + context "with defaults on ubuntu #{release_major}" do let(:facts) do { os: { family: 'Debian', name: 'Ubuntu', release: { - major: '22.04', - full: '22.04' + major: release_major, + full: release_full }, distro: { - codename: 'jammy', + codename:, id: 'Ubuntu' } } @@ -61,28 +29,28 @@ expect(subject).to contain_apt__source('backports').with( location: 'http://archive.ubuntu.com/ubuntu', repos: 'main universe multiverse restricted', - release: 'jammy-backports', + release: "#{codename}-backports", pin: { 'priority' => 200, - 'release' => 'jammy-backports' + 'release' => "#{codename}-backports" }, keyring: '/usr/share/keyrings/ubuntu-archive-keyring.gpg', ) } end - context 'with everything set' do + context "with everything set on ubuntu #{release_major}" do let(:facts) do { os: { family: 'Debian', name: 'Ubuntu', release: { - major: '22.04', - full: '22.04' + major: release_major, + full: release_full }, distro: { - codename: 'jammy', + codename:, id: 'Ubuntu' } } @@ -109,18 +77,18 @@ } end - context 'when set things with hashes' do + context "when set things with hashes on ubuntu #{release_major}" do let(:facts) do { os: { family: 'Debian', name: 'Ubuntu', release: { - major: '22.04', - full: '22.04' + major: release_major, + full: release_full }, distro: { - codename: 'jammy', + codename:, id: 'Ubuntu' } } @@ -146,82 +114,128 @@ end end - describe 'validation' do - let(:facts) do - { - os: { - family: 'Debian', - name: 'Ubuntu', - release: { - major: '22.04', - full: '22.04' - }, - distro: { - codename: 'jammy', - id: 'Ubuntu' - } - } - } - end - - context 'with invalid location' do - let(:params) do + # Shared examples for validation tests + shared_examples 'validation tests' do |release_major, release_full, codename| + describe "validation on ubuntu #{release_major}" do + let(:facts) do { - location: true + os: { + family: 'Debian', + name: 'Ubuntu', + release: { + major: release_major, + full: release_full + }, + distro: { + codename:, + id: 'Ubuntu' + } + } } end - it do - expect(subject).to raise_error(Puppet::Error, %r{expects a}) - end - end + context 'with invalid location' do + let(:params) do + { + location: true + } + end - context 'with invalid release' do - let(:params) do - { - release: true - } + it do + expect(subject).to raise_error(Puppet::Error, %r{expects a}) + end end - it do - expect(subject).to raise_error(Puppet::Error, %r{expects a}) - end - end + context 'with invalid release' do + let(:params) do + { + release: true + } + end - context 'with invalid repos' do - let(:params) do - { - repos: true - } + it do + expect(subject).to raise_error(Puppet::Error, %r{expects a}) + end end - it do - expect(subject).to raise_error(Puppet::Error, %r{expects a}) + context 'with invalid repos' do + let(:params) do + { + repos: true + } + end + + it do + expect(subject).to raise_error(Puppet::Error, %r{expects a}) + end end - end - context 'with invalid key' do - let(:params) do - { - key: true - } + context 'with invalid key' do + let(:params) do + { + key: true + } + end + + it do + expect(subject).to raise_error(Puppet::Error, %r{expects a}) + end end - it do - expect(subject).to raise_error(Puppet::Error, %r{expects a}) + context 'with invalid pin' do + let(:params) do + { + pin: true + } + end + + it do + expect(subject).to raise_error(Puppet::Error, %r{expects a}) + end end end + end - context 'with invalid pin' do - let(:params) do + describe 'debian/ubuntu tests' do + context 'with defaults on debian' do + let(:facts) do { - pin: true + os: { + family: 'Debian', + name: 'Debian', + release: { + full: '12.5', + major: '12', + minor: '5' + }, + distro: { + codename: 'bookworm', + id: 'Debian' + } + } } end - it do - expect(subject).to raise_error(Puppet::Error, %r{expects a}) - end + it { + expect(subject).to contain_apt__source('backports').with( + location: 'http://deb.debian.org/debian', + repos: 'main contrib non-free non-free-firmware', + release: 'bookworm-backports', + pin: { + 'priority' => 200, + 'codename' => 'bookworm-backports' + }, + keyring: '/usr/share/keyrings/debian-archive-keyring.gpg', + ) + } end + + # Include shared examples for Ubuntu versions + include_examples 'ubuntu backports', '22.04', '22.04', 'jammy' + include_examples 'ubuntu backports', '24.04', '24.04', 'noble' end + + # Include shared validation examples for Ubuntu versions + include_examples 'validation tests', '22.04', '22.04', 'jammy' + include_examples 'validation tests', '24.04', '24.04', 'noble' end diff --git a/spec/classes/apt_spec.rb b/spec/classes/apt_spec.rb index 51cc7eb459..624a7787b6 100644 --- a/spec/classes/apt_spec.rb +++ b/spec/classes/apt_spec.rb @@ -358,6 +358,34 @@ } } }, + 'Ubuntu 22.04' => { + os: { + family: 'Debian', + name: 'Ubuntu', + release: { + major: '22.04', + full: '22.04' + }, + distro: { + codename: 'jammy', + id: 'Ubuntu' + } + } + }, + 'Ubuntu 24.04' => { + os: { + family: 'Debian', + name: 'Ubuntu', + release: { + major: '24.04', + full: '24.04' + }, + distro: { + codename: 'noble', + id: 'Ubuntu' + } + } + }, 'Debian 9.0' => { os: { family: 'Debian',