beaker 4.40.1 → 4.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 772b30c85d3406390ceba9e0df29f7911dc990a579da87e3d520b8fd6a5deff5
4
- data.tar.gz: bb5721411884d7876ade5bc04c6304308faf0e4090d3153126367943ccf6d4f2
3
+ metadata.gz: 525b6a9075032237a7a0432d2c7e016d60864f5bffa4cf1be154f55b80a295ab
4
+ data.tar.gz: c0bc73ad7426ec048475bd55cbb9338349cb3b498ae03e281a2be5acef923e5a
5
5
  SHA512:
6
- metadata.gz: 48814c53dada3769d467a63f15817f07b4c94139b7127aa5befe42b1cce4e3d186baa620a88a9156ccc1ac35170530a1bf6036b4951b3e1adf66d69e628788ed
7
- data.tar.gz: ca25c8a16952c3af5f9415ded1b30fe76ff9ea37bf7892a264b41b6c86432a1fcc787ce3d9e1be05407cfa7a502828a059b6d97d00cbe886024a249e301bf8ff
6
+ metadata.gz: 67890b5331b7474ac34566e3f6781f9eef91b4993238520b0c4a3584acfde5a41a2adafaa8eccd80aca32fbcdc4cbfabca51da40c5e07f3eb6e12cf9ad0b0d03
7
+ data.tar.gz: a4996b26068c591881df3b2d8bc88ccb88b08f4501250765488a5f30553d2346e7a2f42e63133a0b39183f3679d7debace57140b4601855b6646e9d050ed03e3
data/.rubocop_todo.yml CHANGED
@@ -151,7 +151,7 @@ RSpec/MultipleDescribes:
151
151
 
152
152
  # Configuration parameters: AllowSubject.
153
153
  RSpec/MultipleMemoizedHelpers:
154
- Max: 19
154
+ Max: 20
155
155
 
156
156
  # Configuration parameters: IgnoreSharedExamples.
157
157
  RSpec/NamedSubject:
data/CHANGELOG.md CHANGED
@@ -1,7 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.41.0](https://github.com/voxpupuli/beaker/tree/4.41.0) (2023-11-15)
4
+
5
+ [Full Changelog](https://github.com/voxpupuli/beaker/compare/4.40.2...4.41.0)
6
+
7
+ **Implemented enhancements:**
8
+
9
+ - \[PA-5938\] Add support for debian & amazon linux in beaker 4.x [\#1828](https://github.com/voxpupuli/beaker/pull/1828) ([span786](https://github.com/span786))
10
+
11
+ ## [4.40.2](https://github.com/voxpupuli/beaker/tree/4.40.2) (2023-07-26)
12
+
13
+ [Full Changelog](https://github.com/voxpupuli/beaker/compare/4.40.1...4.40.2)
14
+
15
+ **Fixed bugs:**
16
+
17
+ - Fix Minitest capitalization [\#1818](https://github.com/voxpupuli/beaker/pull/1818) ([mhashizume](https://github.com/mhashizume))
18
+
3
19
  ## [4.40.1](https://github.com/voxpupuli/beaker/tree/4.40.1) (2023-05-05)
4
20
 
21
+ [Full Changelog](https://github.com/voxpupuli/beaker/compare/4.40.0...4.40.1)
22
+
5
23
  **Merged Changes:**
6
24
 
7
25
  - in-parallel: Allow 1.x [\#1813](https://github.com/voxpupuli/beaker/pull/1813) ([bastelfreak](https://github.com/bastelfreak))
@@ -18,20 +36,23 @@
18
36
 
19
37
  [Full Changelog](https://github.com/voxpupuli/beaker/compare/4.38.1...4.39.0)
20
38
 
21
- **Fixed bugs:**
22
-
23
- - Extend list of permitted classes for YAML safe load and allow aliases [\#1758](https://github.com/voxpupuli/beaker/pull/1758) ([nmburgan](https://github.com/nmburgan))
24
-
25
39
  **Implemented enhancements:**
26
40
 
27
- - Add Rubocop [\#1761](https://github.com/voxpupuli/beaker/pull/1761) ([ekohl](https://github.com/ekohl))
28
- - Update net-scp requirement from >= 1.2, < 4.0 to >= 1.2, < 5.0 [\#1757](https://github.com/voxpupuli/beaker/pull/1757)
29
41
  - \(maint\) StringInclude Rubocop corrections [\#1765](https://github.com/voxpupuli/beaker/pull/1765) ([mhashizume](https://github.com/mhashizume))
42
+ - Add Rubocop [\#1761](https://github.com/voxpupuli/beaker/pull/1761) ([ekohl](https://github.com/ekohl))
43
+
44
+ **Fixed bugs:**
45
+
46
+ - Extend list of permitted classes for YAML safe load and allow aliases [\#1758](https://github.com/voxpupuli/beaker/pull/1758) ([nmburgan](https://github.com/nmburgan))
30
47
 
31
48
  **Closed issues:**
32
49
 
33
50
  - Ruby 3.1/Psych 4 compatibility issues [\#1753](https://github.com/voxpupuli/beaker/issues/1753)
34
51
 
52
+ **Merged pull requests:**
53
+
54
+ - Update net-scp requirement from \>= 1.2, \< 4.0 to \>= 1.2, \< 5.0 [\#1757](https://github.com/voxpupuli/beaker/pull/1757) ([dependabot[bot]](https://github.com/apps/dependabot))
55
+
35
56
  ## [4.38.1](https://github.com/voxpupuli/beaker/tree/4.38.1) (2022-09-21)
36
57
 
37
58
  [Full Changelog](https://github.com/voxpupuli/beaker/compare/4.38.0...4.38.1)
@@ -59,7 +59,7 @@ end
59
59
  # assert_equal expected, user
60
60
  # end
61
61
  #
62
- # Absorbs any MiniTest::Assertion from a failing test assertion in the block.
62
+ # Absorbs any Minitest::Assertion from a failing test assertion in the block.
63
63
  # This implies that the intermittent failure is caught and the suite will not
64
64
  # go red for this failure. Intended to be used with the Jenkins Build Failure
65
65
  # Analyzer (or similar), to detect these failures without failing the build.
@@ -69,7 +69,7 @@ def fails_intermittently(issue_link, args = {})
69
69
  raise ArgumentError, "provide a Jira ticket link" unless issue_link
70
70
  raise ArgumentError, "a block is required" unless block_given?
71
71
  yield
72
- rescue MiniTest::Assertion, StandardError, SignalException # we have a test failure!
72
+ rescue Minitest::Assertion, StandardError, SignalException # we have a test failure!
73
73
  STDERR.puts "\n\nIntermittent test failure! See: #{issue_link}"
74
74
 
75
75
  if args.empty?
@@ -280,7 +280,7 @@ module Unix::Exec
280
280
  case self['platform']
281
281
  when /debian|ubuntu|cumulus|huaweios/
282
282
  exec(Beaker::Command.new("service ssh restart"))
283
- when /el-7|centos-7|redhat-7|oracle-7|scientific-7|eos-7|el-8|centos-8|redhat-8|oracle-8|fedora-(1[4-9]|2[0-9]|3[0-9])|archlinux-/
283
+ when /amazon|el-7|centos-7|redhat-7|oracle-7|scientific-7|eos-7|el-8|centos-8|redhat-8|oracle-8|fedora-(1[4-9]|2[0-9]|3[0-9])|archlinux-/
284
284
  exec(Beaker::Command.new("systemctl restart sshd.service"))
285
285
  when /el-|centos|fedora|redhat|oracle|scientific|eos/
286
286
  exec(Beaker::Command.new("/sbin/service sshd restart"))
@@ -302,8 +302,8 @@ module Unix::Exec
302
302
  # (from {#ssh_service_restart}).
303
303
  def ssh_permit_user_environment
304
304
  case self['platform']
305
- when /debian|ubuntu|cumulus|huaweios|archlinux|el-|centos|fedora|redhat|oracle|scientific|eos|opensuse|sles|solaris/
306
- directory = tmpdir()
305
+ when /amazon|debian|ubuntu|cumulus|huaweios|archlinux|el-|centos|fedora|redhat|oracle|scientific|eos|opensuse|sles|solaris/
306
+ directory = tmpdir
307
307
  exec(Beaker::Command.new("echo 'PermitUserEnvironment yes' | cat - /etc/ssh/sshd_config > #{directory}/sshd_config.permit"))
308
308
  exec(Beaker::Command.new("mv #{directory}/sshd_config.permit /etc/ssh/sshd_config"))
309
309
  exec(Beaker::Command.new("echo '' >/etc/environment")) if /ubuntu-2(0|2).04/.match?(self['platform'])
@@ -88,7 +88,7 @@ module Unix::File
88
88
  # @return [String] Path to package config dir
89
89
  def package_config_dir
90
90
  case self['platform']
91
- when /fedora|el-|redhat|centos/
91
+ when /amazon|fedora|el-|redhat|centos/
92
92
  '/etc/yum.repos.d/'
93
93
  when /opensuse|sles/
94
94
  '/etc/zypp/repos.d/'
@@ -154,7 +154,7 @@ module Unix::File
154
154
  # @return [String] Type of repo (rpm|deb)
155
155
  def repo_type
156
156
  case self['platform']
157
- when /fedora|el-|redhat|centos|opensuse|sles/
157
+ when /amazon|fedora|el-|redhat|centos|opensuse|sles/
158
158
  'rpm'
159
159
  when /debian|ubuntu|cumulus|huaweios/
160
160
  'deb'
@@ -40,7 +40,7 @@ module Unix::Pkg
40
40
  when /el-4/
41
41
  @logger.debug("Package query not supported on rhel4")
42
42
  return false
43
- when /cisco|fedora|centos|redhat|eos|el-/
43
+ when /amazon|cisco|fedora|centos|redhat|eos|el-/
44
44
  result = execute("rpm -q #{name}", opts) { |result| result }
45
45
  when /ubuntu|debian|cumulus|huaweios/
46
46
  result = execute("dpkg -s #{name}", opts) { |result| result }
@@ -96,7 +96,7 @@ module Unix::Pkg
96
96
  name = "#{name}-#{version}"
97
97
  end
98
98
  execute("dnf -y #{cmdline_args} install #{name}", opts)
99
- when /cisco|fedora|centos|redhat|eos|el-/
99
+ when /amazon|cisco|fedora|centos|redhat|eos|el-/
100
100
  if version
101
101
  name = "#{name}-#{version}"
102
102
  end
@@ -179,26 +179,26 @@ module Unix::Pkg
179
179
 
180
180
  def uninstall_package(name, cmdline_args = '', opts = {})
181
181
  case self['platform']
182
- when /opensuse|sles-/
183
- execute("zypper --non-interactive rm #{name}", opts)
184
- when /el-4/
185
- @logger.debug("Package uninstallation not supported on rhel4")
186
- when /edora-(2[2-9]|3[0-9])/
187
- execute("dnf -y #{cmdline_args} remove #{name}", opts)
188
- when /cisco|fedora|centos|redhat|eos|el-/
189
- execute("yum -y #{cmdline_args} remove #{name}", opts)
190
- when /ubuntu|debian|cumulus|huaweios/
191
- execute("apt-get purge #{cmdline_args} -y #{name}", opts)
192
- when /solaris-11/
193
- execute("pkg #{cmdline_args} uninstall #{name}", opts)
194
- when /solaris-10/
195
- execute("pkgrm -n #{cmdline_args} #{name}", opts)
196
- when /aix/
197
- execute("rpm #{cmdline_args} -e #{name}", opts)
198
- when /archlinux/
199
- execute("pacman -R --noconfirm #{cmdline_args} #{name}", opts)
200
- else
201
- raise "Package #{name} cannot be installed on #{self}"
182
+ when /opensuse|sles-/
183
+ execute("zypper --non-interactive rm #{name}", opts)
184
+ when /el-4/
185
+ @logger.debug("Package uninstallation not supported on rhel4")
186
+ when /amazon|fedora-(2[2-9]|3[0-9])/
187
+ execute("dnf -y #{cmdline_args} remove #{name}", opts)
188
+ when /cisco|fedora|centos|redhat|eos|el-/
189
+ execute("yum -y #{cmdline_args} remove #{name}", opts)
190
+ when /ubuntu|debian|cumulus|huaweios/
191
+ execute("apt-get purge #{cmdline_args} -y #{name}", opts)
192
+ when /solaris-11/
193
+ execute("pkg #{cmdline_args} uninstall #{name}", opts)
194
+ when /solaris-10/
195
+ execute("pkgrm -n #{cmdline_args} #{name}", opts)
196
+ when /aix/
197
+ execute("rpm #{cmdline_args} -e #{name}", opts)
198
+ when /archlinux/
199
+ execute("pacman -R --noconfirm #{cmdline_args} #{name}", opts)
200
+ else
201
+ raise "Package #{name} cannot be installed on #{self}"
202
202
  end
203
203
  end
204
204
 
@@ -527,9 +527,9 @@ module Unix::Pkg
527
527
  def install_local_package(onhost_package_file, onhost_copy_dir = nil)
528
528
  variant, version, _arch, _codename = self['platform'].to_array
529
529
  case variant
530
- when /^(fedora|el|redhat|centos)$/
530
+ when /^(amazon|fedora|el|redhat|centos)$/
531
531
  command_name = 'yum'
532
- command_name = 'dnf' if variant == 'fedora' && version.to_i > 21
532
+ command_name = 'dnf' if (variant == 'fedora' && version.to_i > 21) || (variant == 'amazon' && version.to_i >= 2023)
533
533
  execute("#{command_name} --nogpgcheck localinstall -y #{onhost_package_file}")
534
534
  when /^(opensuse|sles)$/
535
535
  execute("zypper --non-interactive --no-gpg-checks in #{onhost_package_file}")
@@ -557,7 +557,7 @@ module Unix::Pkg
557
557
  def uncompress_local_tarball(onhost_tar_file, onhost_base_dir, download_file)
558
558
  variant, version, _arch, _codename = self['platform'].to_array
559
559
  case variant
560
- when /^(fedora|el|centos|redhat|opensuse|sles|debian|ubuntu|cumulus)$/
560
+ when /^(amazon|fedora|el|centos|redhat|opensuse|sles|debian|ubuntu|cumulus)$/
561
561
  execute("tar -zxvf #{onhost_tar_file} -C #{onhost_base_dir}")
562
562
  when /^solaris$/
563
563
  # uncompress PE puppet-agent tarball
@@ -12,7 +12,8 @@ module Beaker
12
12
  NTPSERVER = 'pool.ntp.org'
13
13
  SLEEPWAIT = 5
14
14
  TRIES = 5
15
- RHEL8_PACKAGES = ['curl', 'chrony']
15
+ AMAZON2023_PACKAGES = %w[curl-minimal chrony]
16
+ RHEL8_PACKAGES = %w[curl chrony]
16
17
  RHEL9_PACKAGES = ['chrony']
17
18
  FEDORA_PACKAGES = ['curl', 'chrony']
18
19
  UNIX_PACKAGES = ['curl', 'ntpdate']
@@ -54,7 +55,7 @@ module Beaker
54
55
  logger.notify "NTP date succeeded on #{host}"
55
56
  else
56
57
  case
57
- when /el-[89]|fedora/.match?(host['platform'])
58
+ when /amazon|el-[89]|fedora/.match?(host['platform'])
58
59
  ntp_command = "chronyc add server #{ntp_server} prefer trust;chronyc makestep;chronyc burst 1/2"
59
60
  when /opensuse-|sles-/.match?(host['platform'])
60
61
  ntp_command = "sntp #{ntp_server}"
@@ -114,6 +115,8 @@ module Beaker
114
115
  # @return [Array<String>] A list of packages to install
115
116
  def host_packages(host)
116
117
  case host['platform']
118
+ when /amazon/
119
+ AMAZON2023_PACKAGES
117
120
  when /el-8/
118
121
  RHEL8_PACKAGES
119
122
  when /el-9/
@@ -461,9 +464,9 @@ module Beaker
461
464
  end
462
465
  #restart sshd
463
466
  if /debian|ubuntu|cumulus/.match?(host['platform'])
464
- host.exec(Command.new("sudo su -c \"service ssh restart\""), {:pty => true})
465
- elsif /arch|(centos|el|redhat)-[789]|fedora-(1[4-9]|2[0-9]|3[0-9])/.match?(host['platform'])
466
- host.exec(Command.new("sudo -E systemctl restart sshd.service"), {:pty => true})
467
+ host.exec(Command.new("sudo su -c \"service ssh restart\""), { :pty => true })
468
+ elsif /amazon|arch|(centos|el|redhat)-[789]|fedora-(1[4-9]|2[0-9]|3[0-9])/.match?(host['platform'])
469
+ host.exec(Command.new("sudo -E systemctl restart sshd.service"), { :pty => true })
467
470
  elsif /centos|el-|redhat|fedora|eos/.match?(host['platform'])
468
471
  host.exec(Command.new("sudo -E /sbin/service sshd reload"), {:pty => true})
469
472
  elsif /(free|open)bsd/.match?(host['platform'])
@@ -520,10 +523,10 @@ module Beaker
520
523
  block_on host do |host|
521
524
  logger.debug("enabling proxy support on #{host.name}")
522
525
  case host['platform']
523
- when /ubuntu/, /debian/, /cumulus/
524
- host.exec(Command.new("echo 'Acquire::http::Proxy \"#{opts[:package_proxy]}/\";' >> /etc/apt/apt.conf.d/10proxy"))
525
- when /^el-/, /centos/, /fedora/, /redhat/, /eos/
526
- host.exec(Command.new("echo 'proxy=#{opts[:package_proxy]}/' >> /etc/yum.conf"))
526
+ when /ubuntu/, /debian/, /cumulus/
527
+ host.exec(Command.new("echo 'Acquire::http::Proxy \"#{opts[:package_proxy]}/\";' >> /etc/apt/apt.conf.d/10proxy"))
528
+ when /amazon/, /^el-/, /centos/, /fedora/, /redhat/, /eos/
529
+ host.exec(Command.new("echo 'proxy=#{opts[:package_proxy]}/' >> /etc/yum.conf"))
527
530
  else
528
531
  logger.debug("Attempting to enable package manager proxy support on non-supported platform: #{host.name}: #{host['platform']}")
529
532
  end
data/lib/beaker/perf.rb CHANGED
@@ -4,8 +4,8 @@ module Beaker
4
4
 
5
5
  PERF_PACKAGES = ['sysstat']
6
6
  # SLES does not treat sysstat as a service that can be started
7
- PERF_SUPPORTED_PLATFORMS = /debian|ubuntu|redhat|centos|oracle|scientific|fedora|el|eos|cumulus|opensuse|sles/
8
- PERF_START_PLATFORMS = /debian|ubuntu|redhat|centos|oracle|scientific|fedora|el|eos|cumulus/
7
+ PERF_SUPPORTED_PLATFORMS = /amazon|debian|ubuntu|redhat|centos|oracle|scientific|fedora|el|eos|cumulus|opensuse|sles/
8
+ PERF_START_PLATFORMS = /amazon|debian|ubuntu|redhat|centos|oracle|scientific|fedora|el|eos|cumulus/
9
9
 
10
10
  # Create the Perf instance and runs setup_perf_on_host on all hosts if --collect-perf-data
11
11
  # was used as an option on the Baker command line invocation. Instances of this class do not
@@ -50,7 +50,7 @@ module Beaker
50
50
  @logger.perf_output("Enabling aggressive sysstat polling")
51
51
  if /debian|ubuntu/.match?(host['platform'])
52
52
  host.exec(Command.new('sed -i s/5-55\\\/10/*/ /etc/cron.d/sysstat'))
53
- elsif /centos|el|fedora|oracle|redhat|scientific/.match?(host['platform'])
53
+ elsif /amazon|centos|el|fedora|oracle|redhat|scientific/.match?(host['platform'])
54
54
  host.exec(Command.new('sed -i s/*\\\/10/*/ /etc/cron.d/sysstat'))
55
55
  end
56
56
  end
@@ -3,24 +3,26 @@ module Beaker
3
3
  # all String methods while adding several platform-specific use cases.
4
4
  class Platform < String
5
5
  # Supported platforms
6
- PLATFORMS = /^(alpine|huaweios|cisco_nexus|cisco_ios_xr|(free|open)bsd|osx|centos|fedora|debian|oracle|redhat|redhatfips|scientific|opensuse|sles|ubuntu|windows|solaris|aix|archlinux|el|eos|cumulus|f5|netscaler)\-.+\-.+$/
6
+ PLATFORMS = /^(alpine|amazon|huaweios|cisco_nexus|cisco_ios_xr|(free|open)bsd|osx|centos|fedora|debian|oracle|redhat|redhatfips|scientific|opensuse|sles|ubuntu|windows|solaris|aix|archlinux|el|eos|cumulus|f5|netscaler)\-.+\-.+$/
7
7
  # Platform version numbers vs. codenames conversion hash
8
8
  PLATFORM_VERSION_CODES =
9
- { :debian => { "bullseye" => "11",
10
- "buster" => "10",
11
- "stretch" => "9",
12
- "jessie" => "8",
13
- "wheezy" => "7",
14
- "squeeze" => "6",
15
- },
16
- :ubuntu => { "jammy" => "2204",
17
- "focal" => "2004",
18
- "eoan" => "1910",
19
- "disco" => "1904",
20
- "cosmic" => "1810",
21
- "bionic" => "1804",
22
- "artful" => "1710",
23
- "zesty" => "1704",
9
+ { :debian => { "forky" => "14",
10
+ "trixie" => "13",
11
+ "bookworm" => "12",
12
+ "bullseye" => "11",
13
+ "buster" => "10",
14
+ "stretch" => "9",
15
+ "jessie" => "8",
16
+ "wheezy" => "7",
17
+ "squeeze" => "6", },
18
+ :ubuntu => { "jammy" => "2204",
19
+ "focal" => "2004",
20
+ "eoan" => "1910",
21
+ "disco" => "1904",
22
+ "cosmic" => "1810",
23
+ "bionic" => "1804",
24
+ "artful" => "1710",
25
+ "zesty" => "1704",
24
26
  "yakkety" => "1610",
25
27
  "xenial" => "1604",
26
28
  "wily" => "1510",
@@ -57,6 +59,7 @@ module Beaker
57
59
  # Creates the Platform object. Checks to ensure that the platform String
58
60
  # provided meets the platform formatting rules. Platforms name must be of
59
61
  # the format /^OSFAMILY-VERSION-ARCH.*$/ where OSFAMILY is one of:
62
+ # * amazon
60
63
  # * huaweios
61
64
  # * cisco_nexus
62
65
  # * cisco_ios_xr
@@ -22,7 +22,7 @@ module Beaker
22
22
  include Beaker::DSL
23
23
 
24
24
  # The Exception raised by Ruby's STDLIB's test framework (Ruby 1.9)
25
- TEST_EXCEPTION_CLASS = ::MiniTest::Assertion
25
+ TEST_EXCEPTION_CLASS = ::Minitest::Assertion
26
26
 
27
27
  # Necessary for implementing {Beaker::DSL::Helpers#confine}.
28
28
  # Assumed to be an array of valid {Beaker::Host} objects for
@@ -1,5 +1,5 @@
1
1
  module Beaker
2
2
  module Version
3
- STRING = '4.40.1'
3
+ STRING = '4.41.0'
4
4
  end
5
5
  end
data/lib/beaker.rb CHANGED
@@ -36,6 +36,6 @@ module Beaker
36
36
  # Shared methods and helpers
37
37
  require 'beaker/shared'
38
38
 
39
- # MiniTest, for including MiniTest::Assertions
39
+ # Minitest, for including Minitest::Assertions
40
40
  require 'minitest/test'
41
41
  end
@@ -79,7 +79,7 @@ EXPECT
79
79
  expect( result ).to receive( :output ).and_return( output )
80
80
 
81
81
  expect( subject ).to receive( :result ).at_least( :once ).and_return( result )
82
- expect { subject.assert_output expectation }.to raise_error( MiniTest::Assertion )
82
+ expect { subject.assert_output expectation }.to raise_error( Minitest::Assertion )
83
83
  end
84
84
  end
85
85
  end
@@ -197,11 +197,11 @@ describe ClassMixedWithDSLStructure do
197
197
  end
198
198
 
199
199
  describe '#expect_failure' do
200
- it 'passes when a MiniTest assertion is raised' do
200
+ it 'passes when a Minitest assertion is raised' do
201
201
  expect( subject ).to receive( :logger ).and_return( logger )
202
202
  expect( logger ).to receive( :notify )
203
203
  # We changed this lambda to use the simplest assert possible; using assert_equal
204
- # caused an error in minitest 5.9.0 trying to write to the file system.
204
+ # caused an error in Minitest 5.9.0 trying to write to the file system.
205
205
  block = lambda { assert(false, 'this assertion should be caught') }
206
206
  expect{ subject.expect_failure 'this is an expected failure', &block }.not_to raise_error
207
207
  end
@@ -213,9 +213,9 @@ describe ClassMixedWithDSLStructure do
213
213
  expect{ subject.expect_failure 'this is an expected failure', &block }.not_to raise_error
214
214
  end
215
215
 
216
- it 'fails when a non-Beaker, non-MiniTest assertion is raised' do
217
- block = lambda { raise 'not a Beaker or MiniTest error' }
218
- expect{ subject.expect_failure 'this has a non-Beaker, non-MiniTest exception', &block }.to raise_error(RuntimeError, /not a Beaker or MiniTest error/)
216
+ it 'fails when a non-Beaker, non-Minitest assertion is raised' do
217
+ block = lambda { raise 'not a Beaker or Minitest error' }
218
+ expect{ subject.expect_failure 'this has a non-Beaker, non-Minitest exception', &block }.to raise_error(RuntimeError, /not a Beaker or Minitest error/)
219
219
  end
220
220
 
221
221
  it 'fails when no assertion is raised' do
@@ -52,7 +52,7 @@ EOS
52
52
  result.stdout = ''
53
53
  group_name = 'any_name'
54
54
  expect( subject ).to receive( :execute ).and_yield(result)
55
- expect { subject.group_get(group_name) }.to raise_error(MiniTest::Assertion, "failed to get group #{group_name}")
55
+ expect { subject.group_get(group_name) }.to raise_error(Minitest::Assertion, "failed to get group #{group_name}")
56
56
  end
57
57
 
58
58
  it 'parses mac dscacheutil output into /etc/group format correctly' do
@@ -63,7 +63,7 @@ EOS
63
63
  result.stdout = ''
64
64
  user_name = 'any_name'
65
65
  expect( subject ).to receive( :execute ).and_yield(result)
66
- expect { subject.user_get(user_name) }.to raise_error(MiniTest::Assertion, "failed to get user #{user_name}")
66
+ expect { subject.user_get(user_name) }.to raise_error(Minitest::Assertion, "failed to get user #{user_name}")
67
67
  end
68
68
 
69
69
  it 'yields correctly with the result object' do
@@ -36,8 +36,7 @@ module Beaker
36
36
  let(:instance) { UnixFileTest.new(opts.merge(platform), logger) }
37
37
 
38
38
  describe '#repo_type' do
39
-
40
- ['centos','redhat'].each do |platform|
39
+ %w[amazon centos redhat].each do |platform|
41
40
  it "returns correctly for platform '#{platform}'" do
42
41
  @platform = "#{platform}-5-x86_64"
43
42
  expect( instance.repo_type ).to be === 'rpm'
@@ -58,8 +57,7 @@ module Beaker
58
57
  end
59
58
 
60
59
  describe '#package_config_dir' do
61
-
62
- ['centos','redhat'].each do |platform|
60
+ %w[amazon centos redhat].each do |platform|
63
61
  it "returns correctly for platform '#{platform}'" do
64
62
  @platform = "#{platform}-5-x86_64"
65
63
  expect( instance.package_config_dir ).to be === '/etc/yum.repos.d/'
@@ -127,7 +127,7 @@ module Beaker
127
127
  expect( instance.check_for_package(pkg) ).to be === true
128
128
  end
129
129
 
130
- ['centos','redhat'].each do |platform|
130
+ %w[amazon centos redhat].each do |platform|
131
131
  it "checks correctly on #{platform}" do
132
132
  @opts = {'platform' => "#{platform}-is-me"}
133
133
  pkg = "#{platform}_package"
@@ -267,12 +267,20 @@ module Beaker
267
267
  end
268
268
  end
269
269
 
270
+ it "uses dnf on amazon-2023" do
271
+ @opts = { 'platform' => "amazon-2023-is-me" }
272
+ pkg = 'amazon_package'
273
+ expect(Beaker::Command).to receive(:new).with("yum -y install #{pkg}", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
274
+ expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
275
+ expect(instance.install_package(pkg)).to be == "hello"
276
+ end
277
+
270
278
  it "uses pacman on archlinux" do
271
- @opts = {'platform' => 'archlinux-is-me'}
279
+ @opts = { 'platform' => 'archlinux-is-me' }
272
280
  pkg = 'archlinux_package'
273
- expect( Beaker::Command ).to receive(:new).with("pacman -S --noconfirm #{pkg}", [], {:prepend_cmds=>nil, :cmdexe=>false}).and_return('')
274
- expect( instance ).to receive(:exec).with('', {}).and_return(generate_result("hello", {:exit_code => 0}))
275
- expect( instance.install_package(pkg) ).to be == "hello"
281
+ expect(Beaker::Command).to receive(:new).with("pacman -S --noconfirm #{pkg}", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
282
+ expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
283
+ expect(instance.install_package(pkg)).to be == "hello"
276
284
  end
277
285
  end
278
286
 
@@ -531,7 +539,15 @@ module Beaker
531
539
  let( :version ) { @version || 6 }
532
540
 
533
541
  before do
534
- allow( instance ).to receive( :[] ).with( 'platform' ) { Beaker::Platform.new("#{platform}-#{version}-x86_64") }
542
+ allow(instance).to receive(:[]).with('platform') { Beaker::Platform.new("#{platform}-#{version}-x86_64") }
543
+ end
544
+
545
+ it 'amazon-2023: uses dnf' do
546
+ @platform = platform
547
+ @version = '2023'
548
+ package_file = 'test_123.yay'
549
+ expect(instance).to receive(:execute).with(/^dnf.*#{package_file}$/)
550
+ instance.install_local_package(package_file)
535
551
  end
536
552
 
537
553
  it 'Fedora 22-39: uses dnf' do
@@ -654,4 +670,3 @@ module Beaker
654
670
  end
655
671
  end
656
672
  end
657
-
@@ -13,6 +13,7 @@ describe Beaker do
13
13
  let( :sles_only_pkgs ) { Beaker::HostPrebuiltSteps::SLES_PACKAGES }
14
14
  let( :rhel8_packages ) { Beaker::HostPrebuiltSteps::RHEL8_PACKAGES }
15
15
  let( :fedora_packages) { Beaker::HostPrebuiltSteps::FEDORA_PACKAGES }
16
+ let(:amazon2023_packages) { Beaker::HostPrebuiltSteps::AMAZON2023_PACKAGES }
16
17
  let( :platform ) { @platform || 'unix' }
17
18
  let( :ip ) { "ip.address.0.0" }
18
19
  let( :stdout) { @stdout || ip }
@@ -87,7 +88,12 @@ describe Beaker do
87
88
  "if grep \"root::::type=role\" /etc/user_attr; then sudo rolemod -K type=normal root; else echo \"root user already type=normal\"; fi"
88
89
  ], true
89
90
 
90
- ['debian','ubuntu','cumulus'].each do | deb_like |
91
+ it_behaves_like 'enables_root_login', 'amazon-2023', [
92
+ "sudo -E systemctl restart sshd.service",
93
+ "sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\"",
94
+ ]
95
+
96
+ %w[debian ubuntu cumulus].each do |deb_like|
91
97
  it_behaves_like 'enables_root_login', deb_like, [
92
98
  "sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\"",
93
99
  "sudo su -c \"service ssh restart\""
@@ -144,12 +150,20 @@ describe Beaker do
144
150
  end
145
151
 
146
152
  it "can sync time on Sles hosts" do
147
- hosts = make_hosts( { :platform => 'sles-13.1-x64' } )
153
+ hosts = make_hosts({ :platform => 'sles-13.1-x64' })
148
154
 
149
- expect( Beaker::Command ).to receive( :new ).with("sntp #{ntpserver}").exactly( 3 ).times
155
+ expect(Beaker::Command).to receive(:new).with("sntp #{ntpserver}").exactly(3).times
150
156
 
151
- subject.timesync( hosts, options )
157
+ subject.timesync(hosts, options)
158
+ end
152
159
 
160
+ it "can sync time on amazon2023 hosts" do
161
+ hosts = make_hosts(:platform => 'amazon-2023-x86_64')
162
+ expect(Beaker::Command).to receive(:new)
163
+ .with("chronyc add server #{ntpserver} prefer trust;chronyc makestep;chronyc burst 1/2")
164
+ .exactly(3)
165
+ .times
166
+ subject.timesync(hosts, options)
153
167
  end
154
168
 
155
169
  it "can sync time on RHEL8 hosts" do
@@ -489,6 +503,19 @@ describe Beaker do
489
503
  subject.validate_host(hosts, options)
490
504
  end
491
505
 
506
+ it "can validate Amazon hosts" do
507
+ @platform = 'amazon-2023-x86_64'
508
+
509
+ hosts.each do |host|
510
+ amazon2023_packages.each do |pkg|
511
+ expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
512
+ expect(host).to receive(:install_package).with(pkg).once
513
+ end
514
+ end
515
+
516
+ subject.validate_host(hosts, options)
517
+ end
518
+
492
519
  it 'skips validation on cisco hosts' do
493
520
  host = make_host('cisco-7', { stdout: stdout, platform: 'cisco_nexus-7-x86_64' })
494
521
  expect( subject ).to receive( :check_and_install_packages_if_needed ).with(host, []).once
@@ -533,7 +560,7 @@ describe Beaker do
533
560
  end
534
561
  end
535
562
 
536
- ['centos','redhat'].each do |platform|
563
+ %w[amazon centos redhat].each do |platform|
537
564
  context "on platform '#{platform}'" do
538
565
  let(:host) { make_host( 'name', {
539
566
  :platform => platform,
@@ -635,7 +662,7 @@ describe Beaker do
635
662
  subject.package_proxy(host, options.merge( {'package_proxy' => proxyurl}) )
636
663
  end
637
664
 
638
- ['centos','redhat'].each do |platform|
665
+ %w[amazon centos redhat].each do |platform|
639
666
  it "can set proxy config on a '#{platform}' host" do
640
667
  host = make_host('name', { :platform => platform } )
641
668
 
@@ -66,6 +66,20 @@ module Beaker
66
66
  end
67
67
 
68
68
  context 'with_version_codename' do
69
+ it "can convert debian-14-xxx to debian-forky-xxx" do
70
+ @name = 'debian-14-xxx'
71
+ expect(platform.with_version_codename).to be === 'debian-forky-xxx'
72
+ end
73
+
74
+ it "can convert debian-13-xxx to debian-trixie-xxx" do
75
+ @name = 'debian-13-xxx'
76
+ expect(platform.with_version_codename).to be === 'debian-trixie-xxx'
77
+ end
78
+
79
+ it "can convert debian-12-xxx to debian-bookworm-xxx" do
80
+ @name = 'debian-12-xxx'
81
+ expect(platform.with_version_codename).to be === 'debian-bookworm-xxx'
82
+ end
69
83
 
70
84
  it "can convert debian-11-xxx to debian-bullseye-xxx" do
71
85
  @name = 'debian-11-xxx'
data/spec/helpers.rb CHANGED
@@ -132,16 +132,17 @@ module PlatformHelpers
132
132
 
133
133
  FEDORASYSTEMD = (14..39).to_a.collect! { |i| "fedora-#{i}" }
134
134
 
135
- SYSTEMDPLATFORMS = ['el-7',
136
- 'centos-7',
137
- 'redhat-7',
138
- 'oracle-7',
139
- 'scientific-7',
140
- 'eos-7',
141
- 'el-8',
142
- 'centos-8',
143
- 'redhat-8',
144
- 'oracle-8'].concat(FEDORASYSTEMD)
135
+ SYSTEMDPLATFORMS = %w[amazon-2023
136
+ el-7
137
+ centos-7
138
+ redhat-7
139
+ oracle-7
140
+ scientific-7
141
+ eos-7
142
+ el-8
143
+ centos-8
144
+ redhat-8
145
+ oracle-8].concat(FEDORASYSTEMD)
145
146
 
146
147
  FEDORASYSTEMV = (1..13).to_a.collect! { |i| "fedora-#{i}" }
147
148
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.40.1
4
+ version: 4.41.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-05 00:00:00.000000000 Z
11
+ date: 2023-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fakefs