From 8e60f19b3e789c571f771ecc117b2ba96457baeb Mon Sep 17 00:00:00 2001 From: Michael Hashizume Date: Fri, 17 May 2024 13:27:45 -0700 Subject: [PATCH] Add package logic for Amazon Linux 2 This commit adds logic for Amazon Linux 2 to Beaker's install_ and uninstall_package methods. (Note: AL2 is referred to in Vanagon and ABS as Amazon Linux 7, in reference to the assumed compatibility with Red Hat Enterprise Linux 7.) --- lib/beaker/host/unix/pkg.rb | 4 ++-- spec/beaker/host/unix/pkg_spec.rb | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/beaker/host/unix/pkg.rb b/lib/beaker/host/unix/pkg.rb index fd5ffbf45..3b10728f9 100644 --- a/lib/beaker/host/unix/pkg.rb +++ b/lib/beaker/host/unix/pkg.rb @@ -85,7 +85,7 @@ def install_package(name, cmdline_args = '', version = nil, opts = {}) when /amazon-2023|el-(8|9|1[0-9])|fedora/ name = "#{name}-#{version}" if version execute("dnf -y #{cmdline_args} install #{name}", opts) - when /centos|redhat|el-[1-7]-/ + when /amazon-7|centos|redhat|el-[1-7]-/ name = "#{name}-#{version}" if version execute("yum -y #{cmdline_args} install #{name}", opts) when /ubuntu|debian/ @@ -167,7 +167,7 @@ def uninstall_package(name, cmdline_args = '', opts = {}) execute("zypper --non-interactive rm #{name}", opts) when /amazon-2023|el-(8|9|1[0-9])|fedora/ execute("dnf -y #{cmdline_args} remove #{name}", opts) - when /centos|redhat|el-[1-7]-/ + when /amazon-7|centos|redhat|el-[1-7]-/ execute("yum -y #{cmdline_args} remove #{name}", opts) when /ubuntu|debian/ execute("apt-get purge #{cmdline_args} -y #{name}", opts) diff --git a/spec/beaker/host/unix/pkg_spec.rb b/spec/beaker/host/unix/pkg_spec.rb index ce9812ffa..7a05a1a12 100644 --- a/spec/beaker/host/unix/pkg_spec.rb +++ b/spec/beaker/host/unix/pkg_spec.rb @@ -161,6 +161,14 @@ def exec expect(instance.install_package(pkg)).to eq "hello" end + it "uses yum on amazon linux 2" do + @opts = { 'platform' => "amazon-7-is-me" } + pkg = 'amazon_package' + expect(Beaker::Command).to receive(:new).with("yum -y install #{pkg}", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('') + expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 })) + expect(instance.install_package(pkg)).to eq "hello" + end + it "uses pacman on archlinux" do @opts = { 'platform' => 'archlinux-is-me' } pkg = 'archlinux_package' @@ -271,6 +279,14 @@ def exec end end + it 'Amazon Linux 2 uses yum' do + @platform = platform + @version = '7' + package_file = 'test_123.yay' + expect(instance).to receive(:execute).with(/^yum.*#{package_file}$/) + instance.install_local_package(package_file) + end + it 'Centos & EL: uses yum' do package_file = 'testing_789.yay' %w[centos redhat].each do |platform|