beaker 5.2.0 → 5.3.1

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +1 -1
  3. data/.github/workflows/test.yml +1 -1
  4. data/.rubocop.yml +1 -2
  5. data/.rubocop_todo.yml +54 -2
  6. data/CHANGELOG.md +81 -18
  7. data/Gemfile +1 -0
  8. data/acceptance/lib/helpers/test_helper.rb +2 -2
  9. data/acceptance/tests/base/dsl/helpers/configuration_test.rb +1 -0
  10. data/acceptance/tests/base/dsl/helpers/hocon_helpers_test.rb +5 -2
  11. data/acceptance/tests/base/dsl/helpers/host_helpers/archive_file_from_test.rb +5 -1
  12. data/acceptance/tests/base/dsl/helpers/host_helpers/backup_the_file_test.rb +3 -0
  13. data/acceptance/tests/base/dsl/helpers/host_helpers/check_for_package_test.rb +6 -0
  14. data/acceptance/tests/base/dsl/helpers/host_helpers/create_remote_file_test.rb +6 -0
  15. data/acceptance/tests/base/dsl/helpers/host_helpers/curl_on_test.rb +2 -0
  16. data/acceptance/tests/base/dsl/helpers/host_helpers/echo_on_test.rb +3 -1
  17. data/acceptance/tests/base/dsl/helpers/host_helpers/on_test.rb +10 -1
  18. data/acceptance/tests/base/dsl/helpers/host_helpers/retry_on_test.rb +1 -0
  19. data/acceptance/tests/base/dsl/helpers/host_helpers/rsync_to_test.rb +2 -0
  20. data/acceptance/tests/base/dsl/helpers/host_helpers/run_cron_on_test.rb +13 -0
  21. data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_on_test.rb +2 -0
  22. data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_test.rb +2 -0
  23. data/acceptance/tests/base/dsl/helpers/host_helpers/scp_from_test.rb +2 -0
  24. data/acceptance/tests/base/dsl/helpers/host_helpers/scp_to_test.rb +2 -0
  25. data/acceptance/tests/base/dsl/helpers/host_helpers/shell_test.rb +5 -0
  26. data/acceptance/tests/base/dsl/helpers/host_helpers/upgrade_package_test.rb +2 -0
  27. data/acceptance/tests/base/host/file_test.rb +7 -0
  28. data/acceptance/tests/base/host/host_test.rb +27 -4
  29. data/acceptance/tests/base/host_prebuilt_steps/ssh_environment_test.rb +3 -3
  30. data/acceptance/tests/hypervisor/communication_test.rb +1 -1
  31. data/beaker.gemspec +7 -4
  32. data/lib/beaker/options/command_line_parser.rb +1 -1
  33. data/lib/beaker/test_case.rb +1 -1
  34. data/lib/beaker/version.rb +1 -1
  35. data/lib/beaker.rb +1 -1
  36. data/spec/beaker/dsl/assertions_spec.rb +1 -1
  37. data/spec/beaker/dsl/structure_spec.rb +5 -5
  38. data/spec/beaker/host/mac/group_spec.rb +1 -1
  39. data/spec/beaker/host/mac/user_spec.rb +1 -1
  40. metadata +47 -15
@@ -3,11 +3,13 @@ require "helpers/test_helper"
3
3
  test_name "dsl::helpers::host_helpers #echo_on" do
4
4
  step "#echo_on echoes the supplied string on the remote host" do
5
5
  output = echo_on(default, "contents")
6
- assert_equal output, "contents"
6
+
7
+ assert_equal("contents", output)
7
8
  end
8
9
 
9
10
  step "#echo_on echoes the supplied string on all hosts when given a hosts array" do
10
11
  results = echo_on(hosts, "contents")
12
+
11
13
  assert_equal ["contents"] * hosts.size, results
12
14
  end
13
15
  end
@@ -9,24 +9,29 @@ test_name "dsl::helpers::host_helpers #on" do
9
9
 
10
10
  step "#on makes command output available via `.stdout` on success" do
11
11
  output = on(default, %{echo "echo via on"}).stdout
12
+
12
13
  assert_equal "echo via on\n", output
13
14
  end
14
15
 
15
16
  step "#on makes command error output available via `.stderr` on success" do
16
17
  output = on(default, "/bin/nonexistent-command", :acceptable_exit_codes => [0, 127]).stderr
18
+
17
19
  assert_match(/No such file/, output)
18
20
  end
19
21
 
20
22
  step "#on makes exit status available via `.exit_code`" do
21
23
  status = on(default, %{echo "echo via on"}).exit_code
24
+
22
25
  assert_equal 0, status
23
26
  end
24
27
 
25
28
  step "#on with :acceptable_exit_codes will not fail for named exit codes" do
26
29
  result = on default, "/bin/nonexistent-command", :acceptable_exit_codes => [0, 127]
27
30
  output = result.stderr
31
+
28
32
  assert_match(/No such file/, output)
29
33
  status = result.exit_code
34
+
30
35
  assert_equal 127, status
31
36
  end
32
37
 
@@ -59,6 +64,7 @@ test_name "dsl::helpers::host_helpers #on" do
59
64
 
60
65
  # and that we have |hosts| distinct outputs
61
66
  unique_outputs = results.map(&:output).uniq
67
+
62
68
  assert_equal hosts.size, unique_outputs.size
63
69
  end
64
70
 
@@ -78,6 +84,7 @@ test_name "dsl::helpers::host_helpers #on" do
78
84
 
79
85
  # and that we have |hosts| distinct outputs
80
86
  unique_outputs = results.map(&:output).uniq
87
+
81
88
  assert_equal hosts.size, unique_outputs.size
82
89
  end
83
90
 
@@ -97,6 +104,7 @@ test_name "dsl::helpers::host_helpers #on" do
97
104
 
98
105
  # and that we have |hosts| distinct outputs
99
106
  unique_outputs = results.map(&:output).uniq
107
+
100
108
  assert_equal hosts.size, unique_outputs.size
101
109
  end
102
110
 
@@ -112,7 +120,7 @@ test_name "dsl::helpers::host_helpers #on" do
112
120
 
113
121
  parent_pid = Process.pid
114
122
  results = on(hosts, %{echo "${RANDOM}:${RANDOM}:${RANDOM}"}, :run_in_parallel => true) do
115
- assert(Process.pid != parent_pid)
123
+ refute_equal(Process.pid, parent_pid)
116
124
  end
117
125
 
118
126
  # assert that we got results back for every host
@@ -125,6 +133,7 @@ test_name "dsl::helpers::host_helpers #on" do
125
133
 
126
134
  # and that we have |hosts| distinct outputs
127
135
  unique_outputs = results.map(&:output).uniq
136
+
128
137
  assert_equal hosts.size, unique_outputs.size
129
138
  end
130
139
 
@@ -19,6 +19,7 @@ test_name "dsl::helpers::host_helpers #retry_on" do
19
19
  create_remote_file_from_fixture("retry_script", default, remote_tmpdir, "test.sh")
20
20
 
21
21
  result = retry_on default, "bash #{remote_script_file} #{remote_tmpdir} 2", { :max_retries => 4, :retry_interval => 0.1 }
22
+
22
23
  assert_equal 0, result.exit_code
23
24
  assert_equal "", result.stdout
24
25
  end
@@ -130,6 +130,7 @@ test_name "dsl::helpers::host_helpers #rsync_to" do
130
130
  "remote_tmdir" => remote_tmpdir,
131
131
  "result" => result.inspect) do
132
132
  remote_contents = on(default, "cat #{remote_filename}").stdout
133
+
133
134
  assert_equal contents, remote_contents
134
135
  end
135
136
  end
@@ -154,6 +155,7 @@ test_name "dsl::helpers::host_helpers #rsync_to" do
154
155
  "remote_tmdir" => remote_tmpdir,
155
156
  "result" => result.inspect) do
156
157
  remote_contents = on(host, "cat #{remote_filename}").stdout
158
+
157
159
  assert_equal contents, remote_contents
158
160
  end
159
161
  end
@@ -24,6 +24,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
24
24
 
25
25
  step "#run_cron_on CURRENTLY does not fail when listing cron jobs for a user with no cron entries" do
26
26
  result = run_cron_on default, :list, default['user']
27
+
27
28
  assert_equal 0, result.exit_code
28
29
  end
29
30
 
@@ -31,23 +32,27 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
31
32
  # this basically requires us to add a cron entry to make this work
32
33
  run_cron_on default, :add, default['user'], "* * * * * /bin/ls >/dev/null"
33
34
  result = run_cron_on default, :list, default['user']
35
+
34
36
  assert_equal 0, result.exit_code
35
37
  assert_match %r{/bin/ls}, result.stdout
36
38
  end
37
39
 
38
40
  step "#run_cron_on CURRENTLY does not fail, but returns nil, when adding cron jobs for an unknown user" do
39
41
  result = run_cron_on default, :add, "nonexistentuser", %{* * * * * /bin/echo "hello" >/dev/null}
42
+
40
43
  assert_nil result
41
44
  end
42
45
 
43
46
  step "#run_cron_on CURRENTLY does not fail, but returns nil, when attempting to add a bad cron entry" do
44
47
  result = run_cron_on default, :add, default['user'], "* * * * /bin/ls >/dev/null"
48
+
45
49
  assert_nil result
46
50
  end
47
51
 
48
52
  step "#run_cron_on can add a cron job for a user on a host" do
49
53
  run_cron_on default, :add, default['user'], %{* * * * * /bin/echo "hello" >/dev/null}
50
54
  result = run_cron_on default, :list, default['user']
55
+
51
56
  assert_equal 0, result.exit_code
52
57
  assert_match %r{/bin/echo}, result.stdout
53
58
  end
@@ -73,6 +78,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
73
78
 
74
79
  run_cron_on default, :add, default['user'], %{* * * * * /bin/echo "quality: job 1" >/dev/null}
75
80
  result = run_cron_on default, :list, default['user']
81
+
76
82
  assert_match %r{quality: job 1}, result.stdout
77
83
 
78
84
  run_cron_on default, :remove, default['user']
@@ -95,6 +101,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
95
101
  end
96
102
 
97
103
  results = run_cron_on hosts, :list, default['user']
104
+
98
105
  results.each do |result|
99
106
  assert_match %r{/bin/ls}, result.stdout
100
107
  end
@@ -104,6 +111,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
104
111
  run_cron_on hosts, :add, default['user'], "* * * * * /bin/ls >/dev/null"
105
112
 
106
113
  results = run_cron_on hosts, :list, default['user']
114
+
107
115
  results.each do |result|
108
116
  assert_match %r{/bin/ls}, result.stdout
109
117
  end
@@ -144,6 +152,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
144
152
  # this basically requires us to add a cron entry to make this work
145
153
  run_cron_on default, :add, default['user'], "* * * * * /bin/ls >/dev/null"
146
154
  result = run_cron_on default, :list, default['user']
155
+
147
156
  assert_equal 0, result.exit_code
148
157
  assert_match %r{/bin/ls}, result.stdout
149
158
  end
@@ -163,6 +172,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
163
172
  step "#run_cron_on can add a cron job for a user on a host" do
164
173
  run_cron_on default, :add, default['user'], %{* * * * * /bin/echo "hello" >/dev/null}
165
174
  result = run_cron_on default, :list, default['user']
175
+
166
176
  assert_equal 0, result.exit_code
167
177
  assert_match %r{/bin/echo}, result.stdout
168
178
  end
@@ -188,6 +198,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
188
198
 
189
199
  run_cron_on default, :add, default['user'], %{* * * * * /bin/echo "quality: job 1" >/dev/null}
190
200
  result = run_cron_on default, :list, default['user']
201
+
191
202
  assert_match %r{quality: job 1}, result.stdout
192
203
 
193
204
  run_cron_on default, :remove, default['user']
@@ -210,6 +221,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
210
221
  end
211
222
 
212
223
  results = run_cron_on hosts, :list, default['user']
224
+
213
225
  results.each do |result|
214
226
  assert_match %r{/bin/ls}, result.stdout
215
227
  end
@@ -219,6 +231,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
219
231
  run_cron_on hosts, :add, default['user'], "* * * * * /bin/ls >/dev/null"
220
232
 
221
233
  results = run_cron_on hosts, :list, default['user']
234
+
222
235
  results.each do |result|
223
236
  assert_match %r{/bin/ls}, result.stdout
224
237
  end
@@ -22,6 +22,7 @@ test_name "dsl::helpers::host_helpers #run_script_on" do
22
22
  local_filename, _contents = create_local_file_from_fixture("failing_shell_script", local_dir, "testfile.sh", "a+x")
23
23
 
24
24
  result = run_script_on default, local_filename, { :accept_all_exit_codes => true }
25
+
25
26
  assert_equal 1, result.exit_code
26
27
  end
27
28
  end
@@ -31,6 +32,7 @@ test_name "dsl::helpers::host_helpers #run_script_on" do
31
32
  local_filename, _contents = create_local_file_from_fixture("shell_script_with_output", local_dir, "testfile.sh", "a+x")
32
33
 
33
34
  results = run_script_on default, local_filename
35
+
34
36
  assert_equal 0, results.exit_code
35
37
  assert_equal "output\n", results.stdout
36
38
  end
@@ -22,6 +22,7 @@ test_name "dsl::helpers::host_helpers #run_script" do
22
22
  local_filename, _contents = create_local_file_from_fixture("failing_shell_script", local_dir, "testfile.sh", "a+x")
23
23
 
24
24
  result = run_script local_filename, { :accept_all_exit_codes => true }
25
+
25
26
  assert_equal 1, result.exit_code
26
27
  end
27
28
  end
@@ -31,6 +32,7 @@ test_name "dsl::helpers::host_helpers #run_script" do
31
32
  local_filename, _contents = create_local_file_from_fixture("shell_script_with_output", local_dir, "testfile.sh", "a+x")
32
33
 
33
34
  results = run_script local_filename
35
+
34
36
  assert_equal 0, results.exit_code
35
37
  assert_equal "output\n", results.stdout
36
38
  end
@@ -28,6 +28,7 @@ test_name "dsl::helpers::host_helpers #scp_from" do
28
28
  scp_from default, remote_filename, local_dir
29
29
 
30
30
  local_filename = File.join(local_dir, "testfile.txt")
31
+
31
32
  assert_equal contents, File.read(local_filename)
32
33
  end
33
34
  end
@@ -47,6 +48,7 @@ test_name "dsl::helpers::host_helpers #scp_from" do
47
48
 
48
49
  local_filename = File.join(local_dir, "testfile.txt")
49
50
  local_contents = File.read(local_filename)
51
+
50
52
  assert_equal remote_contents, local_contents
51
53
  end
52
54
  end
@@ -30,6 +30,7 @@ test_name "dsl::helpers::host_helpers #scp_to" do
30
30
 
31
31
  remote_filename = File.join(remote_tmpdir, "testfile.txt")
32
32
  remote_contents = on(default, "cat #{remote_filename}").stdout
33
+
33
34
  assert_equal contents, remote_contents
34
35
  end
35
36
  end
@@ -46,6 +47,7 @@ test_name "dsl::helpers::host_helpers #scp_to" do
46
47
 
47
48
  hosts.each do |host|
48
49
  remote_contents = on(host, "cat #{remote_filename}").stdout
50
+
49
51
  assert_equal contents, remote_contents
50
52
  end
51
53
  end
@@ -9,24 +9,29 @@ test_name "dsl::helpers::host_helpers #shell" do
9
9
 
10
10
  step "#shell makes command output available via `.stdout` on success" do
11
11
  output = shell(%{echo "echo via on"}).stdout
12
+
12
13
  assert_equal "echo via on\n", output
13
14
  end
14
15
 
15
16
  step "#shell makes command error output available via `.stderr` on success" do
16
17
  output = shell("/bin/nonexistent-command", :acceptable_exit_codes => [0, 127]).stderr
18
+
17
19
  assert_match(/No such file/, output)
18
20
  end
19
21
 
20
22
  step "#shell makes exit status available via `.exit_code`" do
21
23
  status = shell(%{echo "echo via on"}).exit_code
24
+
22
25
  assert_equal 0, status
23
26
  end
24
27
 
25
28
  step "#shell with :acceptable_exit_codes will not fail for named exit codes" do
26
29
  result = shell "/bin/nonexistent-command", :acceptable_exit_codes => [0, 127]
27
30
  output = result.stderr
31
+
28
32
  assert_match(/No such file/, output)
29
33
  status = result.exit_code
34
+
30
35
  assert_equal 127, status
31
36
  end
32
37
 
@@ -42,6 +42,7 @@ test_name "dsl::helpers::host_helpers #upgrade_package" do
42
42
  # > No Packages marked for Update
43
43
 
44
44
  result = upgrade_package default, "non-existent-package-name"
45
+
45
46
  assert_match(/No Packages marked for Update/i, result)
46
47
  end
47
48
  end
@@ -60,6 +61,7 @@ test_name "dsl::helpers::host_helpers #upgrade_package" do
60
61
 
61
62
  install_package default, "rsync"
62
63
  upgrade_package default, "rsync"
64
+
63
65
  assert check_for_package(default, "rsync"), "package was not successfully installed/upgraded"
64
66
  end
65
67
 
@@ -11,6 +11,7 @@ test_name 'File Test' do
11
11
  tmpfile = host.tmpfile('beaker')
12
12
  # ensure we have a user to chown to
13
13
  host.chown('testuser', tmpfile)
14
+
14
15
  assert_match(/testuser/, host.ls_ld(tmpfile), "Should have found testuser in `ls -ld` output")
15
16
  end
16
17
  end
@@ -21,6 +22,7 @@ test_name 'File Test' do
21
22
  tmpdir = host.tmpdir('beaker')
22
23
  # ensure we have a user to chown to
23
24
  host.chgrp('testgroup', tmpdir)
25
+
24
26
  assert_match(/testgroup/, host.ls_ld(tmpdir), "Should have found testgroup in `ls -ld` output")
25
27
  end
26
28
  end
@@ -31,6 +33,7 @@ test_name 'File Test' do
31
33
  tmpdir = host.tmpdir('beaker')
32
34
  on host, host.touch("#{tmpdir}/somefile.txt", false)
33
35
  host.chown('testuser', tmpdir, true)
36
+
34
37
  assert_match(/testuser/, host.ls_ld("#{tmpdir}/somefile.txt"), "Should have found testuser in `ls -ld` output for sub-file")
35
38
  end
36
39
  end
@@ -41,6 +44,7 @@ test_name 'File Test' do
41
44
  tmpfile = host.tmpfile('beaker')
42
45
  # ensure we have a group to chgrp to
43
46
  host.chgrp('testgroup', tmpfile)
47
+
44
48
  assert_match(/testgroup/, host.ls_ld(tmpfile), "Should have found testgroup in `ls -ld` output")
45
49
  end
46
50
  end
@@ -51,6 +55,7 @@ test_name 'File Test' do
51
55
  tmpdir = host.tmpdir('beaker')
52
56
  # ensure we have a group to chgrp to
53
57
  host.chgrp('testgroup', tmpdir)
58
+
54
59
  assert_match(/testgroup/, host.ls_ld(tmpdir), "Should have found testgroup in `ls -ld` output")
55
60
  end
56
61
  end
@@ -61,6 +66,7 @@ test_name 'File Test' do
61
66
  tmpdir = host.tmpdir('beaker')
62
67
  on host, host.touch("#{tmpdir}/somefile.txt", false)
63
68
  host.chgrp('testgroup', tmpdir, true)
69
+
64
70
  assert_match(/testgroup/, host.ls_ld("#{tmpdir}/somefile.txt"), "Should have found testgroup in `ls -ld` output for sub-file")
65
71
  end
66
72
  end
@@ -69,6 +75,7 @@ test_name 'File Test' do
69
75
  hosts.each do |host|
70
76
  # create a tmp file to mangle
71
77
  tmpdir = host.tmpdir('beaker')
78
+
72
79
  assert_match(/beaker/, host.ls_ld(tmpdir), "Should have found beaker in `ls -ld` output")
73
80
  end
74
81
  end
@@ -5,8 +5,10 @@ test_name "confirm host object behave correctly"
5
5
  step "#port_open? : can determine if a port is open on hosts"
6
6
  hosts.each do |host|
7
7
  logger.debug "port 22 (ssh) should be open on #{host}"
8
+
8
9
  assert_equal(true, host.port_open?(22), "port 22 on #{host} should be open")
9
10
  logger.debug "port 65535 should be closed on #{host}"
11
+
10
12
  assert_equal(false, host.port_open?(65535), "port 65535 on #{host} should be closed")
11
13
  end
12
14
 
@@ -15,6 +17,7 @@ hosts.each do |host|
15
17
  ip = host.ip
16
18
  # confirm ip format
17
19
  logger.debug("format of #{ip} for #{host} should be correct")
20
+
18
21
  assert_match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/, ip, "#{ip} on #{host} isn't correct format")
19
22
  end
20
23
 
@@ -62,7 +65,8 @@ hosts.each do |host|
62
65
  host.add_env_var(env_param1, env_value3)
63
66
 
64
67
  val = host.get_env_var(env_id)
65
- assert('' == val, 'get_env_var should not match a partial env key name')
68
+
69
+ assert_equal('', val, 'get_env_var should not match a partial env key name')
66
70
  end
67
71
 
68
72
  step "#get_env_var : should not return a match from a key\'s value"
@@ -75,7 +79,8 @@ hosts.each do |host|
75
79
  host.add_env_var(env_param1, env_value1)
76
80
 
77
81
  val = host.get_env_var(env_value1)
78
- assert('' == val, 'get_env_var should not return a match from a key\'s value')
82
+
83
+ assert_equal('', val, 'get_env_var should not return a match from a key\'s value')
79
84
  end
80
85
 
81
86
  step "#clear_env_var : should only remove the specified key"
@@ -99,11 +104,14 @@ hosts.each do |host|
99
104
  host.clear_env_var(env_param3)
100
105
 
101
106
  val = host.get_env_var(env_param1)
107
+
102
108
  assert_match(/^#{env_param1}=#{env_value1}$/, val, "#{env_param1} should exist after calling clear_env_var")
103
109
  val = host.get_env_var(env_param2)
110
+
104
111
  assert_match(/^#{env_param2}=#{env_value2}$/, val, "#{env_param2} should exist after calling clear_env_var")
105
112
  val = host.get_env_var(env_param3)
106
- assert('' == val, "#{env_param3} should not exist after calling clear_env_var")
113
+
114
+ assert_equal('', val, "#{env_param3} should not exist after calling clear_env_var")
107
115
  end
108
116
 
109
117
  step "#add_env_var : can add a unique environment variable"
@@ -126,10 +134,13 @@ hosts.each do |host|
126
134
  host.add_env_var(env_param3, env_value3)
127
135
 
128
136
  val = host.get_env_var(env_param1)
137
+
129
138
  assert_match(/^#{env_param1}=#{env_value1}$/, val, "#{env_param1} should exist")
130
139
  val = host.get_env_var(env_param2)
140
+
131
141
  assert_match(/^#{env_param2}=#{env_value2}$/, val, "#{env_param2} should exist")
132
142
  val = host.get_env_var(env_param3)
143
+
133
144
  assert_match(/^#{env_param3}=#{env_value3}$/, val, "#{env_param3} should exist")
134
145
  end
135
146
 
@@ -147,6 +158,7 @@ hosts.each do |host|
147
158
  host.add_env_var("TEST", "3")
148
159
  logger.debug("ensure that TEST env var has correct setting")
149
160
  val = host.get_env_var("TEST")
161
+
150
162
  assert_match(/TEST=3(;|:)2(;|:)1$/, val, "add_env_var can correctly add env vars")
151
163
  end
152
164
 
@@ -169,6 +181,7 @@ step "#add_env_var : can preserve an environment between ssh connections" do
169
181
  host.close
170
182
  logger.debug("ensure that TEST env var has correct setting")
171
183
  val = host.get_env_var("TEST")
184
+
172
185
  assert_match(/TEST=3(;|:)2(;|:)1$/, val, "can preserve an environment between ssh connections")
173
186
  end
174
187
  end
@@ -178,14 +191,17 @@ hosts.each do |host|
178
191
  logger.debug("remove TEST=3")
179
192
  host.delete_env_var("TEST", "3")
180
193
  val = host.get_env_var("TEST")
194
+
181
195
  assert_match(/TEST=2(;|:)1$/, val, "delete_env_var can correctly delete part of a chained env var")
182
196
  logger.debug("remove TEST=1")
183
197
  host.delete_env_var("TEST", "1")
184
198
  val = host.get_env_var("TEST")
199
+
185
200
  assert_match(/TEST=2$/, val, "delete_env_var can correctly delete part of a chained env var")
186
201
  logger.debug("remove TEST=2")
187
202
  host.delete_env_var("TEST", "2")
188
203
  val = host.get_env_var("TEST")
204
+
189
205
  assert_equal("", val, "delete_env_var fully removes empty env var")
190
206
  end
191
207
 
@@ -195,6 +211,7 @@ hosts.each do |host|
195
211
  host.rm_rf("test1")
196
212
  # test dir construction
197
213
  logger.debug("create test1/test2/test3/test4")
214
+
198
215
  assert_equal(true, host.mkdir_p("test1/test2/test3/test4"), "can create directory structure")
199
216
  logger.debug("should be able to create a file in the new dir")
200
217
  on host, host.touch("test1/test2/test3/test4/test.txt", false)
@@ -218,9 +235,11 @@ hosts.each do |host|
218
235
  local_paths.each do |path|
219
236
  search_name = path.gsub(/^.*fixtures\//, '') # reduce down to the path that should match
220
237
  matched = host_paths.select { |check| /#{Regexp.escape(search_name)}$/.match?(check) }
238
+
221
239
  assert_equal(1, matched.length, "should have found a single instance of path #{search_name}, found #{matched.length}: \n #{matched}")
222
240
  host_paths = host_paths - matched
223
241
  end
242
+
224
243
  assert_equal(0, host_paths.length, "there are extra paths on #{host} (#{host_paths})")
225
244
  end
226
245
  end
@@ -251,6 +270,7 @@ hosts.each do |host|
251
270
  end
252
271
  host_paths = host_paths - matched
253
272
  end
273
+
254
274
  assert_equal(0, host_paths.length, "there are extra paths on #{host} (#{host_paths})")
255
275
  end
256
276
  end
@@ -282,6 +302,7 @@ hosts.each do |host|
282
302
  end
283
303
  host_paths = host_paths - matched
284
304
  end
305
+
285
306
  assert_equal(0, host_paths.length, "there are extra paths on #{host} (#{host_paths})")
286
307
  end
287
308
  end
@@ -326,10 +347,12 @@ step 'Ensure that a long 128+ character string with UTF-8 characters does not br
326
347
  long_string = ('a' * 128) + "\u06FF"
327
348
  on(default, "mkdir /tmp/#{long_string}")
328
349
  result = on(default, 'ls /tmp')
329
- assert(result.stdout.include?(long_string), 'Error in folder creation with long string + UTF-8 characters')
350
+
351
+ assert_includes(result.stdout, long_string, 'Error in folder creation with long string + UTF-8 characters')
330
352
 
331
353
  # remove the folder
332
354
  on(default, "rm -rf /tmp/#{long_string}")
333
355
  result = on(default, 'ls /tmp')
356
+
334
357
  assert(!result.stdout.include?(long_string), 'Error in folder deletion with long string + UTF-8 characters')
335
358
  end
@@ -8,7 +8,7 @@ test_name "confirm host prebuilt steps behave correctly" do
8
8
 
9
9
  step "confirm PATH env variable is set in the ssh environment file" do
10
10
  hosts.each do |host|
11
- assert(0 == on(host, "grep \"PATH\" #{host[:ssh_env_file]}").exit_code)
11
+ assert_equal(0, on(host, "grep \"PATH\" #{host[:ssh_env_file]}").exit_code)
12
12
  end
13
13
  end
14
14
  end
@@ -16,7 +16,7 @@ test_name "confirm host prebuilt steps behave correctly" do
16
16
  confine_block :to, :platform => /solaris-10/ do
17
17
  step "confirm /opt/csw/bin has been added to the path" do
18
18
  hosts.each do |host|
19
- assert(0 == on(host, "grep \"/opt/csw/bin\" #{host[:ssh_env_file]}").exit_code)
19
+ assert_equal(0, on(host, "grep \"/opt/csw/bin\" #{host[:ssh_env_file]}").exit_code)
20
20
  end
21
21
  end
22
22
  end
@@ -24,7 +24,7 @@ test_name "confirm host prebuilt steps behave correctly" do
24
24
  confine_block :to, :platform => /openbsd/ do
25
25
  step "confirm PKG_PATH is set in the ssh environment file" do
26
26
  hosts.each do |host|
27
- assert(0 == on(host, "grep \"PKG_PATH\" #{host[:ssh_env_file]}").exit_code)
27
+ assert_equal(0, on(host, "grep \"PKG_PATH\" #{host[:ssh_env_file]}").exit_code)
28
28
  end
29
29
  end
30
30
  end
@@ -2,6 +2,6 @@
2
2
  step "hosts can ping each other"
3
3
  hosts.each do |one|
4
4
  hosts.each do |two|
5
- assert_equal(one.ping(two), true)
5
+ assert_equal(true, one.ping(two))
6
6
  end
7
7
  end
data/beaker.gemspec CHANGED
@@ -27,19 +27,22 @@ Gem::Specification.new do |s|
27
27
  # Run time dependencies
28
28
  s.add_runtime_dependency 'minitar', '~> 0.6'
29
29
  s.add_runtime_dependency 'minitest', '~> 5.4'
30
- s.add_runtime_dependency 'rexml'
30
+ s.add_runtime_dependency 'rexml', '~> 3.2', '>= 3.2.5'
31
+
32
+ # net-ssh compatibility with ed25519 keys
33
+ s.add_runtime_dependency 'bcrypt_pbkdf', '>= 1.0', '< 2.0'
34
+ s.add_runtime_dependency 'ed25519', '>= 1.2', '<2.0'
31
35
 
32
- s.add_runtime_dependency 'ed25519', '~> 1.0' # net-ssh compatibility with ed25519 keys
33
36
  s.add_runtime_dependency 'hocon', '~> 1.0'
34
37
  s.add_runtime_dependency 'inifile', '~> 3.0'
35
38
  s.add_runtime_dependency 'net-scp', '>= 1.2', '< 5.0'
36
- s.add_runtime_dependency 'net-ssh', '>= 5.0'
39
+ s.add_runtime_dependency 'net-ssh', '~> 7.1'
37
40
 
38
41
  s.add_runtime_dependency 'in-parallel', '>= 0.1', '< 2.0'
39
42
  s.add_runtime_dependency 'rsync', '~> 1.0.9'
40
43
  s.add_runtime_dependency 'thor', ['>= 1.0.1', '< 2.0']
41
44
 
42
45
  # Run time dependencies that are Beaker libraries
43
- s.add_runtime_dependency 'beaker-hostgenerator'
46
+ s.add_runtime_dependency 'beaker-hostgenerator', '~> 2.0'
44
47
  s.add_runtime_dependency 'stringify-hash', '~> 0.0'
45
48
  end
@@ -248,7 +248,7 @@ module Beaker
248
248
 
249
249
  opts.on '--[no-]debug',
250
250
  'DEPRECATED, use --log-level' do |bool|
251
- @cmd_options[:log_level] = bool ? 'debug' : 'info'
251
+ @cmd_options[:log_level] = bool ? 'debug' : 'info'
252
252
  end
253
253
 
254
254
  opts.on '-x', '--[no-]xml',
@@ -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 = '5.2.0'
3
+ STRING = '5.3.1'
4
4
  end
5
5
  end
data/lib/beaker.rb CHANGED
@@ -35,6 +35,6 @@ module Beaker
35
35
  # Shared methods and helpers
36
36
  require 'beaker/shared'
37
37
 
38
- # MiniTest, for including MiniTest::Assertions
38
+ # Minitest, for including Minitest::Assertions
39
39
  require 'minitest/test'
40
40
  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
@@ -196,11 +196,11 @@ describe ClassMixedWithDSLStructure do
196
196
  end
197
197
 
198
198
  describe '#expect_failure' do
199
- it 'passes when a MiniTest assertion is raised' do
199
+ it 'passes when a Minitest assertion is raised' do
200
200
  expect(subject).to receive(:logger).and_return(logger)
201
201
  expect(logger).to receive(:notify)
202
202
  # We changed this lambda to use the simplest assert possible; using assert_equal
203
- # caused an error in minitest 5.9.0 trying to write to the file system.
203
+ # caused an error in Minitest 5.9.0 trying to write to the file system.
204
204
  block = -> { assert(false, 'this assertion should be caught') }
205
205
  expect { subject.expect_failure 'this is an expected failure', &block }.not_to raise_error
206
206
  end
@@ -212,9 +212,9 @@ describe ClassMixedWithDSLStructure do
212
212
  expect { subject.expect_failure 'this is an expected failure', &block }.not_to raise_error
213
213
  end
214
214
 
215
- it 'fails when a non-Beaker, non-MiniTest assertion is raised' do
216
- block = -> { raise 'not a Beaker or MiniTest error' }
217
- expect { subject.expect_failure 'this has a non-Beaker, non-MiniTest exception', &block }.to raise_error(RuntimeError, /not a Beaker or MiniTest error/)
215
+ it 'fails when a non-Beaker, non-Minitest assertion is raised' do
216
+ block = -> { raise 'not a Beaker or Minitest error' }
217
+ expect { subject.expect_failure 'this has a non-Beaker, non-Minitest exception', &block }.to raise_error(RuntimeError, /not a Beaker or Minitest error/)
218
218
  end
219
219
 
220
220
  it 'fails when no assertion is raised' do