beaker 4.40.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (217) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +9 -0
  3. data/.github/workflows/release.yml +2 -2
  4. data/.github/workflows/test.yml +26 -13
  5. data/.rubocop.yml +23 -10
  6. data/.rubocop_todo.yml +34 -10
  7. data/CHANGELOG.md +14 -6
  8. data/Gemfile +12 -7
  9. data/Rakefile +99 -111
  10. data/acceptance/config/acceptance-options.rb +1 -1
  11. data/acceptance/config/base/acceptance-options.rb +2 -2
  12. data/acceptance/config/hypervisor/acceptance-options.rb +2 -2
  13. data/acceptance/config/subcommands/acceptance-options.rb +2 -2
  14. data/acceptance/fixtures/module/Rakefile +1 -1
  15. data/acceptance/fixtures/module/spec/acceptance/demo_spec.rb +8 -12
  16. data/acceptance/fixtures/module/spec/classes/init_spec.rb +0 -1
  17. data/acceptance/fixtures/module/spec/spec_helper_acceptance.rb +3 -5
  18. data/acceptance/lib/helpers/test_helper.rb +4 -3
  19. data/acceptance/pre_suite/subcommands/05_install_ruby.rb +2 -3
  20. data/acceptance/pre_suite/subcommands/08_install_beaker.rb +1 -2
  21. data/acceptance/tests/base/dsl/helpers/configuration_test.rb +4 -4
  22. data/acceptance/tests/base/dsl/helpers/hocon_helpers_test.rb +1 -2
  23. data/acceptance/tests/base/dsl/helpers/host_helpers/add_system32_hosts_entry_test.rb +0 -3
  24. data/acceptance/tests/base/dsl/helpers/host_helpers/archive_file_from_test.rb +3 -1
  25. data/acceptance/tests/base/dsl/helpers/host_helpers/backup_the_file_test.rb +9 -9
  26. data/acceptance/tests/base/dsl/helpers/host_helpers/check_for_package_test.rb +0 -4
  27. data/acceptance/tests/base/dsl/helpers/host_helpers/create_remote_file_test.rb +19 -26
  28. data/acceptance/tests/base/dsl/helpers/host_helpers/curl_on_test.rb +2 -2
  29. data/acceptance/tests/base/dsl/helpers/host_helpers/curl_with_retries_test.rb +0 -1
  30. data/acceptance/tests/base/dsl/helpers/host_helpers/on_test.rb +18 -13
  31. data/acceptance/tests/base/dsl/helpers/host_helpers/retry_on_test.rb +3 -3
  32. data/acceptance/tests/base/dsl/helpers/host_helpers/rsync_to_test.rb +22 -27
  33. data/acceptance/tests/base/dsl/helpers/host_helpers/run_cron_on_test.rb +12 -16
  34. data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_on_test.rb +3 -4
  35. data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_test.rb +3 -3
  36. data/acceptance/tests/base/dsl/helpers/host_helpers/scp_from_test.rb +4 -4
  37. data/acceptance/tests/base/dsl/helpers/host_helpers/scp_to_test.rb +3 -4
  38. data/acceptance/tests/base/dsl/helpers/host_helpers/shell_test.rb +5 -5
  39. data/acceptance/tests/base/dsl/helpers/host_helpers/upgrade_package_test.rb +3 -5
  40. data/acceptance/tests/base/dsl/platform_tag_confiner_test.rb +14 -17
  41. data/acceptance/tests/base/dsl/structure_test.rb +5 -11
  42. data/acceptance/tests/base/host/file_test.rb +2 -2
  43. data/acceptance/tests/base/host/group_test.rb +0 -1
  44. data/acceptance/tests/base/host/host_test.rb +66 -63
  45. data/acceptance/tests/base/host/packages.rb +1 -2
  46. data/acceptance/tests/base/host/packages_unix.rb +0 -55
  47. data/acceptance/tests/base/host/user_test.rb +0 -1
  48. data/acceptance/tests/base/host_prebuilt_steps/ssh_environment_test.rb +1 -2
  49. data/acceptance/tests/base/test_suite/export.rb +6 -9
  50. data/acceptance/tests/install/from_file.rb +2 -4
  51. data/acceptance/tests/load_path_bootstrap.rb +1 -1
  52. data/acceptance/tests/subcommands/destroy.rb +19 -21
  53. data/acceptance/tests/subcommands/exec.rb +0 -1
  54. data/acceptance/tests/subcommands/init.rb +2 -3
  55. data/acceptance/tests/subcommands/provision.rb +0 -1
  56. data/beaker.gemspec +4 -7
  57. data/docs/concepts/argument_processing_and_precedence.md +1 -10
  58. data/docs/how_to/debug_beaker_tests.md +12 -12
  59. data/docs/how_to/hosts/eos.md +2 -12
  60. data/docs/how_to/install_puppet.md +0 -18
  61. data/docs/how_to/the_beaker_dsl.md +0 -2
  62. data/lib/beaker/cli.rb +59 -68
  63. data/lib/beaker/command.rb +20 -28
  64. data/lib/beaker/command_factory.rb +3 -2
  65. data/lib/beaker/dsl/assertions.rb +6 -18
  66. data/lib/beaker/dsl/helpers/hocon_helpers.rb +3 -7
  67. data/lib/beaker/dsl/helpers/host_helpers.rb +62 -123
  68. data/lib/beaker/dsl/helpers/test_helpers.rb +3 -5
  69. data/lib/beaker/dsl/helpers/web_helpers.rb +19 -39
  70. data/lib/beaker/dsl/helpers.rb +2 -4
  71. data/lib/beaker/dsl/outcomes.rb +13 -15
  72. data/lib/beaker/dsl/patterns.rb +1 -3
  73. data/lib/beaker/dsl/roles.rb +17 -20
  74. data/lib/beaker/dsl/structure.rb +53 -65
  75. data/lib/beaker/dsl/test_tagging.rb +7 -10
  76. data/lib/beaker/dsl/wrappers.rb +15 -16
  77. data/lib/beaker/dsl.rb +2 -3
  78. data/lib/beaker/host/aix/exec.rb +1 -1
  79. data/lib/beaker/host/aix/file.rb +0 -1
  80. data/lib/beaker/host/aix/group.rb +1 -1
  81. data/lib/beaker/host/aix/user.rb +1 -1
  82. data/lib/beaker/host/aix.rb +3 -4
  83. data/lib/beaker/host/cisco.rb +27 -39
  84. data/lib/beaker/host/eos.rb +4 -30
  85. data/lib/beaker/host/freebsd/exec.rb +1 -1
  86. data/lib/beaker/host/freebsd/pkg.rb +3 -3
  87. data/lib/beaker/host/freebsd.rb +9 -12
  88. data/lib/beaker/host/mac/exec.rb +4 -4
  89. data/lib/beaker/host/mac/group.rb +7 -7
  90. data/lib/beaker/host/mac/pkg.rb +3 -106
  91. data/lib/beaker/host/mac/user.rb +2 -2
  92. data/lib/beaker/host/mac.rb +8 -9
  93. data/lib/beaker/host/pswindows/exec.rb +66 -70
  94. data/lib/beaker/host/pswindows/file.rb +3 -5
  95. data/lib/beaker/host/pswindows/group.rb +3 -3
  96. data/lib/beaker/host/pswindows/pkg.rb +12 -12
  97. data/lib/beaker/host/pswindows/user.rb +3 -3
  98. data/lib/beaker/host/pswindows.rb +4 -3
  99. data/lib/beaker/host/unix/exec.rb +80 -82
  100. data/lib/beaker/host/unix/file.rb +38 -43
  101. data/lib/beaker/host/unix/group.rb +1 -1
  102. data/lib/beaker/host/unix/pkg.rb +154 -417
  103. data/lib/beaker/host/unix/user.rb +2 -2
  104. data/lib/beaker/host/unix.rb +8 -11
  105. data/lib/beaker/host/windows/exec.rb +17 -17
  106. data/lib/beaker/host/windows/file.rb +3 -3
  107. data/lib/beaker/host/windows/group.rb +3 -3
  108. data/lib/beaker/host/windows/pkg.rb +3 -54
  109. data/lib/beaker/host/windows/user.rb +3 -3
  110. data/lib/beaker/host/windows.rb +12 -12
  111. data/lib/beaker/host.rb +76 -133
  112. data/lib/beaker/host_prebuilt_steps.rb +93 -198
  113. data/lib/beaker/hypervisor/noop.rb +2 -4
  114. data/lib/beaker/hypervisor.rb +44 -61
  115. data/lib/beaker/local_connection.rb +2 -4
  116. data/lib/beaker/logger.rb +68 -76
  117. data/lib/beaker/logger_junit.rb +21 -25
  118. data/lib/beaker/network_manager.rb +39 -42
  119. data/lib/beaker/options/command_line_parser.rb +12 -23
  120. data/lib/beaker/options/hosts_file_parser.rb +16 -24
  121. data/lib/beaker/options/options_file_parser.rb +3 -6
  122. data/lib/beaker/options/options_hash.rb +2 -7
  123. data/lib/beaker/options/parser.rb +86 -102
  124. data/lib/beaker/options/presets.rb +114 -123
  125. data/lib/beaker/options/subcommand_options_file_parser.rb +3 -6
  126. data/lib/beaker/options/validator.rb +26 -31
  127. data/lib/beaker/perf.rb +22 -27
  128. data/lib/beaker/platform.rb +38 -46
  129. data/lib/beaker/result.rb +7 -6
  130. data/lib/beaker/shared/error_handler.rb +8 -10
  131. data/lib/beaker/shared/fog_credentials.rb +5 -9
  132. data/lib/beaker/shared/host_manager.rb +36 -41
  133. data/lib/beaker/shared/options_resolver.rb +3 -7
  134. data/lib/beaker/shared/repetition.rb +2 -4
  135. data/lib/beaker/shared/semvar.rb +37 -41
  136. data/lib/beaker/shared/timed.rb +0 -3
  137. data/lib/beaker/shared.rb +1 -1
  138. data/lib/beaker/ssh_connection.rb +38 -47
  139. data/lib/beaker/subcommand.rb +17 -24
  140. data/lib/beaker/subcommands/subcommand_util.rb +4 -4
  141. data/lib/beaker/tasks/quick_start.rb +4 -9
  142. data/lib/beaker/tasks/rake_task.rb +25 -27
  143. data/lib/beaker/tasks/test.rb +4 -4
  144. data/lib/beaker/test_case.rb +15 -27
  145. data/lib/beaker/test_suite.rb +35 -39
  146. data/lib/beaker/test_suite_result.rb +45 -47
  147. data/lib/beaker/version.rb +1 -1
  148. data/lib/beaker.rb +5 -6
  149. data/spec/beaker/cli_spec.rb +121 -142
  150. data/spec/beaker/command_spec.rb +55 -59
  151. data/spec/beaker/dsl/assertions_spec.rb +36 -36
  152. data/spec/beaker/dsl/helpers/host_helpers_spec.rb +110 -131
  153. data/spec/beaker/dsl/helpers/test_helpers_spec.rb +9 -10
  154. data/spec/beaker/dsl/helpers/web_helpers_spec.rb +22 -31
  155. data/spec/beaker/dsl/outcomes_spec.rb +14 -14
  156. data/spec/beaker/dsl/roles_spec.rb +125 -130
  157. data/spec/beaker/dsl/structure_spec.rb +169 -158
  158. data/spec/beaker/dsl/test_tagging_spec.rb +89 -90
  159. data/spec/beaker/dsl/wrappers_spec.rb +32 -33
  160. data/spec/beaker/host/aix_spec.rb +14 -14
  161. data/spec/beaker/host/cisco_spec.rb +84 -94
  162. data/spec/beaker/host/eos_spec.rb +15 -36
  163. data/spec/beaker/host/freebsd/exec_spec.rb +3 -6
  164. data/spec/beaker/host/freebsd/pkg_spec.rb +24 -27
  165. data/spec/beaker/host/mac/exec_spec.rb +2 -3
  166. data/spec/beaker/host/mac/group_spec.rb +47 -56
  167. data/spec/beaker/host/mac/user_spec.rb +53 -62
  168. data/spec/beaker/host/pswindows/exec_spec.rb +30 -32
  169. data/spec/beaker/host/pswindows/file_spec.rb +16 -16
  170. data/spec/beaker/host/pswindows/user_spec.rb +17 -23
  171. data/spec/beaker/host/pswindows_spec.rb +13 -13
  172. data/spec/beaker/host/unix/exec_spec.rb +75 -80
  173. data/spec/beaker/host/unix/file_spec.rb +66 -73
  174. data/spec/beaker/host/unix/pkg_spec.rb +155 -401
  175. data/spec/beaker/host/unix_spec.rb +11 -207
  176. data/spec/beaker/host/windows/exec_spec.rb +30 -32
  177. data/spec/beaker/host/windows/file_spec.rb +18 -19
  178. data/spec/beaker/host/windows/group_spec.rb +10 -12
  179. data/spec/beaker/host/windows/pkg_spec.rb +6 -9
  180. data/spec/beaker/host/windows/user_spec.rb +17 -23
  181. data/spec/beaker/host/windows_spec.rb +39 -39
  182. data/spec/beaker/host_prebuilt_steps_spec.rb +172 -326
  183. data/spec/beaker/host_spec.rb +204 -284
  184. data/spec/beaker/hypervisor/hypervisor_spec.rb +36 -61
  185. data/spec/beaker/localhost_connection_spec.rb +10 -11
  186. data/spec/beaker/logger_junit_spec.rb +19 -30
  187. data/spec/beaker/logger_spec.rb +153 -136
  188. data/spec/beaker/network_manager_spec.rb +23 -23
  189. data/spec/beaker/options/command_line_parser_spec.rb +20 -23
  190. data/spec/beaker/options/hosts_file_parser_spec.rb +30 -32
  191. data/spec/beaker/options/options_file_parser_spec.rb +4 -7
  192. data/spec/beaker/options/options_hash_spec.rb +4 -6
  193. data/spec/beaker/options/parser_spec.rb +167 -167
  194. data/spec/beaker/options/presets_spec.rb +7 -9
  195. data/spec/beaker/options/subcommand_options_parser_spec.rb +13 -14
  196. data/spec/beaker/options/validator_spec.rb +10 -11
  197. data/spec/beaker/perf_spec.rb +18 -21
  198. data/spec/beaker/platform_spec.rb +25 -36
  199. data/spec/beaker/shared/error_handler_spec.rb +7 -16
  200. data/spec/beaker/shared/fog_credentials_spec.rb +29 -29
  201. data/spec/beaker/shared/host_manager_spec.rb +50 -84
  202. data/spec/beaker/shared/options_resolver_spec.rb +9 -12
  203. data/spec/beaker/shared/repetition_spec.rb +17 -24
  204. data/spec/beaker/shared/semvar_spec.rb +21 -26
  205. data/spec/beaker/ssh_connection_spec.rb +76 -83
  206. data/spec/beaker/subcommand/subcommand_util_spec.rb +31 -33
  207. data/spec/beaker/subcommand_spec.rb +75 -77
  208. data/spec/beaker/test_case_spec.rb +25 -50
  209. data/spec/beaker/test_suite_spec.rb +147 -154
  210. data/spec/helpers.rb +48 -53
  211. data/spec/matchers.rb +8 -7
  212. data/spec/mocks.rb +1 -6
  213. data/spec/spec_helper.rb +0 -1
  214. metadata +13 -24
  215. data/acceptance/tests/base/dsl/helpers/host_helpers/deploy_package_repo_test.rb +0 -142
  216. data/acceptance/tests/base/external_resources_test.rb +0 -31
  217. data/spec/beaker/host/mac_spec.rb +0 -113
@@ -8,7 +8,7 @@ test_name "dsl::helpers::host_helpers #shell" do
8
8
  end
9
9
 
10
10
  step "#shell makes command output available via `.stdout` on success" do
11
- output = shell(%Q{echo "echo via on"}).stdout
11
+ output = shell(%{echo "echo via on"}).stdout
12
12
  assert_equal "echo via on\n", output
13
13
  end
14
14
 
@@ -18,7 +18,7 @@ test_name "dsl::helpers::host_helpers #shell" do
18
18
  end
19
19
 
20
20
  step "#shell makes exit status available via `.exit_code`" do
21
- status = shell(%Q{echo "echo via on"}).exit_code
21
+ status = shell(%{echo "echo via on"}).exit_code
22
22
  assert_equal 0, status
23
23
  end
24
24
 
@@ -32,7 +32,7 @@ test_name "dsl::helpers::host_helpers #shell" do
32
32
 
33
33
  step "#shell with :acceptable_exit_codes will fail for other exit codes" do
34
34
  assert_raises(Beaker::Host::CommandFailure) do
35
- shell %Q{echo "echo via on"}, :acceptable_exit_codes => [127]
35
+ shell %{echo "echo via on"}, :acceptable_exit_codes => [127]
36
36
  end
37
37
  end
38
38
 
@@ -44,8 +44,8 @@ test_name "dsl::helpers::host_helpers #shell" do
44
44
  end
45
45
 
46
46
  step "#shell allows assertions to be used in the optional block" do
47
- shell %Q{echo "${RANDOM}:${RANDOM}"} do
48
- assert_match(/\d+:\d+/, stdout)
47
+ shell %{echo "${RANDOM}:${RANDOM}"} do |result|
48
+ assert_match(/\d+:\d+/, result.stdout)
49
49
  end
50
50
  end
51
51
  end
@@ -1,10 +1,8 @@
1
1
  require "helpers/test_helper"
2
2
 
3
3
  test_name "dsl::helpers::host_helpers #upgrade_package" do
4
-
5
4
  # NOTE: there does not appear to be a way to confine just to cygwin hosts
6
5
  confine_block :to, :platform => /windows/ do
7
-
8
6
  # NOTE: check_for_package on windows currently fails as follows:
9
7
  #
10
8
  # ArgumentError: wrong number of arguments (3 for 1..2)
@@ -20,7 +18,6 @@ test_name "dsl::helpers::host_helpers #upgrade_package" do
20
18
  end
21
19
 
22
20
  confine_block :to, :platform => /osx/ do
23
-
24
21
  step "#upgrade_package CURRENTLY fails with a RuntimeError on OS X" do
25
22
  # NOTE: documentation could be better on this method
26
23
  assert_raises RuntimeError do
@@ -30,8 +27,10 @@ test_name "dsl::helpers::host_helpers #upgrade_package" do
30
27
  end
31
28
 
32
29
  confine_block :except, :platform => /windows|osx/ do
33
- confine_block :to, :platform => /centos|el-\d/ do
30
+ # rsync is broken on beaker-docker
31
+ confine :except, :hypervisor => 'docker'
34
32
 
33
+ confine_block :to, :platform => /centos|el-\d/ do
35
34
  step "#upgrade_package CURRENTLY does not fail on CentOS if unknown package is specified" do
36
35
  # NOTE: I would expect this to fail with an Beaker::Host::CommandFailure,
37
36
  # but maybe it's because yum doesn't really care:
@@ -48,7 +47,6 @@ test_name "dsl::helpers::host_helpers #upgrade_package" do
48
47
  end
49
48
 
50
49
  confine_block :except, :platform => /centos|el-\d/ do
51
-
52
50
  step "#upgrade_package fails if package is not already installed" do
53
51
  assert_raises Beaker::Host::CommandFailure do
54
52
  upgrade_package default, "non-existent-package-name"
@@ -13,32 +13,29 @@ test_name "DSL::Structure::PlatformTagConfiner" do
13
13
  end
14
14
 
15
15
  step "#{pstc_method_name} can remove hosts from a test, or be skipped if empty" do
16
- assert hosts.length() > 0, "#{pstc_method_name} did not have enough hosts to test"
16
+ assert hosts.length > 0, "#{pstc_method_name} did not have enough hosts to test"
17
17
  previous_hosts = hosts.dup
18
18
 
19
19
  options[:platform_tag_confines] = [
20
20
  :platform => /#{default[:platform]}/,
21
21
  :tag_reason_hash => {
22
- 'tag1' => 'reason1'
23
- }
22
+ 'tag1' => 'reason1',
23
+ },
24
24
  ]
25
25
 
26
26
  begin
27
- tag( 'tag1' )
27
+ tag('tag1')
28
28
  rescue Beaker::DSL::Outcomes::SkipTest => e
29
- if /^No\ suitable\ hosts\ found/.match?(e.message)
30
- # SkipTest is raised in the case when there are no hosts leftover for a test
31
- # after confining. It's a very common acceptance test case where all of the
32
- # hosts involved are of the same platform, and are thus all confined
33
- # away by the code being run here. In this case, the hosts object will not
34
- # be altered, but should be considered a pass, since the fact that SkipTest
35
- # is being raised confirms that a lower number of hosts are coming out of
36
- # the confine (0) than came in (>0, according to our pre-condition assertion)
37
- else
38
- fail "#{pstc_method_name} raised unexpected SkipTest exception: #{e}"
39
- end
29
+ fail "#{pstc_method_name} raised unexpected SkipTest exception: #{e}" unless /^No\ suitable\ hosts\ found/.match?(e.message)
30
+ # SkipTest is raised in the case when there are no hosts leftover for a test
31
+ # after confining. It's a very common acceptance test case where all of the
32
+ # hosts involved are of the same platform, and are thus all confined
33
+ # away by the code being run here. In this case, the hosts object will not
34
+ # be altered, but should be considered a pass, since the fact that SkipTest
35
+ # is being raised confirms that a lower number of hosts are coming out of
36
+ # the confine (0) than came in (>0, according to our pre-condition assertion)
40
37
  else
41
- assert hosts.length() < previous_hosts.length(), "#{pstc_method_name} did not change hosts array"
38
+ assert hosts.length < previous_hosts.length, "#{pstc_method_name} did not change hosts array"
42
39
  end
43
40
 
44
41
  # cleanup
@@ -46,4 +43,4 @@ test_name "DSL::Structure::PlatformTagConfiner" do
46
43
  options[:platform_tag_confines] = nil
47
44
  @hosts = previous_hosts
48
45
  end
49
- end
46
+ end
@@ -3,11 +3,10 @@ test_name "dsl::structure" do
3
3
  begin
4
4
  @in_confine = 0
5
5
  confine_block :to, :platform => default["platform"] do
6
- @in_confine +=1
6
+ @in_confine += 1
7
7
  end
8
8
 
9
9
  assert_equal 1, @in_confine, "#confine_block did not run the supplied block"
10
-
11
10
  rescue Beaker::DSL::Outcomes::SkipTest => e
12
11
  fail "#confine_block raised unexpected SkipTest exception: #{e}"
13
12
  end
@@ -17,12 +16,11 @@ test_name "dsl::structure" do
17
16
  begin
18
17
  @in_confine = 0
19
18
  confine_block :to, :platform => default["platform"] do
20
- @in_confine +=1
19
+ @in_confine += 1
21
20
  end
22
21
 
23
22
  assert_equal 1, @in_confine, "#confine_block did not run the supplied block"
24
23
  assert_equal hosts.dup, hosts, "#confine_block did not preserve the hosts array"
25
-
26
24
  rescue Beaker::DSL::Outcomes::SkipTest => e
27
25
  fail "#confine_block raised unexpected SkipTest exception: #{e}"
28
26
  end
@@ -32,11 +30,10 @@ test_name "dsl::structure" do
32
30
  begin
33
31
  @in_confine = 0
34
32
  confine_block :except, :platform => default["platform"] do
35
- @in_confine +=1
33
+ @in_confine += 1
36
34
  end
37
35
 
38
36
  assert_equal 0, @in_confine, "#confine_block did not skip the supplied block"
39
-
40
37
  rescue Beaker::DSL::Outcomes::SkipTest => e
41
38
  fail "#confine_block raised unexpected SkipTest exception: #{e}"
42
39
  end
@@ -46,12 +43,11 @@ test_name "dsl::structure" do
46
43
  begin
47
44
  @in_confine = 0
48
45
  confine_block :except, :platform => default["platform"] do
49
- @in_confine +=1
46
+ @in_confine += 1
50
47
  end
51
48
 
52
49
  assert_equal 0, @in_confine, "#confine_block did not skip the supplied block"
53
50
  assert_equal hosts.dup, hosts, "#confine_block did not preserve the hosts array"
54
-
55
51
  rescue Beaker::DSL::Outcomes::SkipTest => e
56
52
  fail "#confine_block raised unexpected SkipTest exception: #{e}"
57
53
  end
@@ -61,7 +57,7 @@ test_name "dsl::structure" do
61
57
  begin
62
58
  @in_confine = 0
63
59
  confine_block :to, :platform => default["platform"] do
64
- @in_confine +=1
60
+ @in_confine += 1
65
61
  skip_test "this block raises a skip"
66
62
  end
67
63
  rescue Beaker::DSL::Outcomes::SkipTest => e
@@ -76,7 +72,6 @@ test_name "dsl::structure" do
76
72
  confine :to, { :platform => 'test' }
77
73
 
78
74
  fail "#confine did not skip test but should have."
79
-
80
75
  rescue Beaker::DSL::Outcomes::SkipTest => e
81
76
  assert_match(/No suitable hosts found with {:platform=>"test"}/, e.message, "#confine raised an unexpected skip_test")
82
77
  end
@@ -87,7 +82,6 @@ test_name "dsl::structure" do
87
82
  confine :except, { :platform => default['platform'] }
88
83
 
89
84
  fail "#confine did not skip test but should have."
90
-
91
85
  rescue Beaker::DSL::Outcomes::SkipTest => e
92
86
  assert_match(/No suitable hosts found without {:platform=>"#{default['platform']}"}/, e.message, "#confine raised an unexpected
93
87
  # skip_test")
@@ -21,7 +21,7 @@ test_name 'File Test' do
21
21
  tmpdir = host.tmpdir('beaker')
22
22
  # ensure we have a user to chown to
23
23
  host.chgrp('testgroup', tmpdir)
24
- assert_match(/testgroup/, host.ls_ld(tmpdir), "Should have found testgroup in `ls -ld` output: #{stdout}")
24
+ assert_match(/testgroup/, host.ls_ld(tmpdir), "Should have found testgroup in `ls -ld` output")
25
25
  end
26
26
  end
27
27
 
@@ -78,4 +78,4 @@ test_name 'File Test' do
78
78
  host.user_absent('testuser')
79
79
  host.group_absent('testgroup')
80
80
  end
81
- end
81
+ end
@@ -14,5 +14,4 @@ test_name 'Group Test' do
14
14
  end
15
15
  end
16
16
  end
17
-
18
17
  end
@@ -34,7 +34,7 @@ hosts.each do |host|
34
34
  env_value1 = "#{env_prefix}_v1"
35
35
 
36
36
  host.clear_env_var(env_param1)
37
- host.add_env_var(env_param1,env_value1)
37
+ host.add_env_var(env_param1, env_value1)
38
38
 
39
39
  val = host.get_env_var(env_param1)
40
40
 
@@ -57,12 +57,12 @@ hosts.each do |host|
57
57
  host.clear_env_var(env_param1)
58
58
  host.clear_env_var(env_param2)
59
59
  host.clear_env_var(env_param3)
60
- host.add_env_var(env_param1,env_value1)
61
- host.add_env_var(env_param1,env_value2)
62
- host.add_env_var(env_param1,env_value3)
60
+ host.add_env_var(env_param1, env_value1)
61
+ host.add_env_var(env_param1, env_value2)
62
+ host.add_env_var(env_param1, env_value3)
63
63
 
64
64
  val = host.get_env_var(env_id)
65
- assert('' == val,'get_env_var should not match a partial env key name')
65
+ assert('' == val, 'get_env_var should not match a partial env key name')
66
66
  end
67
67
 
68
68
  step "#get_env_var : should not return a match from a key\'s value"
@@ -72,10 +72,10 @@ hosts.each do |host|
72
72
  env_value1 = "#{env_prefix}_v1"
73
73
 
74
74
  host.clear_env_var(env_param1)
75
- host.add_env_var(env_param1,env_value1)
75
+ host.add_env_var(env_param1, env_value1)
76
76
 
77
77
  val = host.get_env_var(env_value1)
78
- assert('' == val,'get_env_var should not return a match from a key\'s value')
78
+ assert('' == val, 'get_env_var should not return a match from a key\'s value')
79
79
  end
80
80
 
81
81
  step "#clear_env_var : should only remove the specified key"
@@ -92,9 +92,9 @@ hosts.each do |host|
92
92
  env_param3 = "#{env_id}"
93
93
  env_value3 = "#{env_id}"
94
94
 
95
- host.add_env_var(env_param1,env_value1)
96
- host.add_env_var(env_param2,env_value2)
97
- host.add_env_var(env_param3,env_value3)
95
+ host.add_env_var(env_param1, env_value1)
96
+ host.add_env_var(env_param2, env_value2)
97
+ host.add_env_var(env_param3, env_value3)
98
98
 
99
99
  host.clear_env_var(env_param3)
100
100
 
@@ -103,7 +103,7 @@ hosts.each do |host|
103
103
  val = host.get_env_var(env_param2)
104
104
  assert_match(/^#{env_param2}=#{env_value2}$/, val, "#{env_param2} should exist after calling clear_env_var")
105
105
  val = host.get_env_var(env_param3)
106
- assert('' == val,"#{env_param3} should not exist after calling clear_env_var")
106
+ assert('' == val, "#{env_param3} should not exist after calling clear_env_var")
107
107
  end
108
108
 
109
109
  step "#add_env_var : can add a unique environment variable"
@@ -121,9 +121,9 @@ hosts.each do |host|
121
121
  host.clear_env_var(env_param1)
122
122
  host.clear_env_var(env_param2)
123
123
  host.clear_env_var(env_param3)
124
- host.add_env_var(env_param1,env_value1)
125
- host.add_env_var(env_param2,env_value2)
126
- host.add_env_var(env_param3,env_value3)
124
+ host.add_env_var(env_param1, env_value1)
125
+ host.add_env_var(env_param2, env_value2)
126
+ host.add_env_var(env_param3, env_value3)
127
127
 
128
128
  val = host.get_env_var(env_param1)
129
129
  assert_match(/^#{env_param1}=#{env_value1}$/, val, "#{env_param1} should exist")
@@ -150,23 +150,27 @@ hosts.each do |host|
150
150
  assert_match(/TEST=3(;|:)2(;|:)1$/, val, "add_env_var can correctly add env vars")
151
151
  end
152
152
 
153
- step "#add_env_var : can preserve an environment between ssh connections"
154
- hosts.each do |host|
155
- host.clear_env_var("TEST")
156
- logger.debug("add TEST=1")
157
- host.add_env_var("TEST", "1")
158
- logger.debug("add TEST=1 again (shouldn't create duplicate entry)")
159
- host.add_env_var("TEST", "1")
160
- logger.debug("add TEST=2")
161
- host.add_env_var("TEST", "2")
162
- logger.debug("ensure that TEST env var has correct setting")
163
- logger.debug("add TEST=3")
164
- host.add_env_var("TEST", "3")
165
- logger.debug("close the connection")
166
- host.close
167
- logger.debug("ensure that TEST env var has correct setting")
168
- val = host.get_env_var("TEST")
169
- assert_match(/TEST=3(;|:)2(;|:)1$/, val, "can preserve an environment between ssh connections")
153
+ step "#add_env_var : can preserve an environment between ssh connections" do
154
+ # beaker-docker can't deal with closing the connection
155
+ confine :except, :hypervisor => 'docker'
156
+
157
+ hosts.each do |host|
158
+ host.clear_env_var("TEST")
159
+ logger.debug("add TEST=1")
160
+ host.add_env_var("TEST", "1")
161
+ logger.debug("add TEST=1 again (shouldn't create duplicate entry)")
162
+ host.add_env_var("TEST", "1")
163
+ logger.debug("add TEST=2")
164
+ host.add_env_var("TEST", "2")
165
+ logger.debug("ensure that TEST env var has correct setting")
166
+ logger.debug("add TEST=3")
167
+ host.add_env_var("TEST", "3")
168
+ logger.debug("close the connection")
169
+ host.close
170
+ logger.debug("ensure that TEST env var has correct setting")
171
+ val = host.get_env_var("TEST")
172
+ assert_match(/TEST=3(;|:)2(;|:)1$/, val, "can preserve an environment between ssh connections")
173
+ end
170
174
  end
171
175
 
172
176
  step "#delete_env_var : can delete an environment"
@@ -187,9 +191,9 @@ end
187
191
 
188
192
  step "#mkdir_p : can recursively create a directory structure on a host"
189
193
  hosts.each do |host|
190
- #clean up first!
194
+ # clean up first!
191
195
  host.rm_rf("test1")
192
- #test dir construction
196
+ # test dir construction
193
197
  logger.debug("create test1/test2/test3/test4")
194
198
  assert_equal(true, host.mkdir_p("test1/test2/test3/test4"), "can create directory structure")
195
199
  logger.debug("should be able to create a file in the new dir")
@@ -197,23 +201,23 @@ hosts.each do |host|
197
201
  end
198
202
 
199
203
  step "#do_scp_to : can copy a directory to the host with no ignores"
200
- current_dir = File.dirname(__FILE__)
204
+ current_dir = __dir__
201
205
  module_fixture = File.join(current_dir, "../../../fixtures/module")
202
206
  hosts.each do |host|
203
207
  logger.debug("can recursively copy a module over")
204
- #make sure that we are clean on the test host
208
+ # make sure that we are clean on the test host
205
209
  host.rm_rf("module")
206
210
  host.do_scp_to(module_fixture, ".", {})
207
211
  Dir.mktmpdir do |tmp_dir|
208
- #grab copy from host
212
+ # grab copy from host
209
213
  host.do_scp_from("module", tmp_dir, {})
210
- #compare to local copy
214
+ # compare to local copy
211
215
  local_paths = Dir.glob(File.join(module_fixture, "**/*")).select { |f| File.file?(f) }
212
216
  host_paths = Dir.glob(File.join(File.join(tmp_dir, "module"), "**/*")).select { |f| File.file?(f) }
213
- #each local file should have a single match on the host
217
+ # each local file should have a single match on the host
214
218
  local_paths.each do |path|
215
- search_name = path.gsub(/^.*fixtures\//, '') #reduce down to the path that should match
216
- matched = host_paths.select{ |check| /#{Regexp.escape(search_name)}$/.match?(check) }
219
+ search_name = path.gsub(/^.*fixtures\//, '') # reduce down to the path that should match
220
+ matched = host_paths.select { |check| /#{Regexp.escape(search_name)}$/.match?(check) }
217
221
  assert_equal(1, matched.length, "should have found a single instance of path #{search_name}, found #{matched.length}: \n #{matched}")
218
222
  host_paths = host_paths - matched
219
223
  end
@@ -222,24 +226,24 @@ hosts.each do |host|
222
226
  end
223
227
 
224
228
  step "#do_scp_to with :ignore : can copy a dir to the host, excluding ignored patterns that DO NOT appear in the source absolute path"
225
- current_dir = File.dirname(__FILE__)
229
+ current_dir = __dir__
226
230
  module_fixture = File.expand_path(File.join(current_dir, "../../../fixtures/module"))
227
231
  hosts.each do |host|
228
232
  logger.debug("can recursively copy a module over, ignoring some files/dirs")
229
- #make sure that we are clean on the test host
233
+ # make sure that we are clean on the test host
230
234
  host.rm_rf("module")
231
- host.do_scp_to(module_fixture, ".", {:ignore => ['tests', 'Gemfile']})
235
+ host.do_scp_to(module_fixture, ".", { :ignore => %w[tests Gemfile] })
232
236
  Dir.mktmpdir do |tmp_dir|
233
- #grab copy from host
237
+ # grab copy from host
234
238
  host.do_scp_from("module", tmp_dir, {})
235
- #compare to local copy
239
+ # compare to local copy
236
240
  local_paths = Dir.glob(File.join(module_fixture, "**/*")).select { |f| File.file?(f) }
237
241
  host_paths = Dir.glob(File.join(File.join(tmp_dir, "module"), "**/*")).select { |f| File.file?(f) }
238
- #each local file should have a single match on the host
242
+ # each local file should have a single match on the host
239
243
  local_paths.each do |path|
240
- search_name = path.gsub(/^.*fixtures\//, '') #reduce down to the path that should match
241
- matched = host_paths.select{ |check| /#{Regexp.escape(search_name)}$/.match?(check) }
242
- re = /((\/|\A)tests(\/|\z))|((\/|\A)Gemfile(\/|\z))/
244
+ search_name = path.gsub(/^.*fixtures\//, '') # reduce down to the path that should match
245
+ matched = host_paths.select { |check| /#{Regexp.escape(search_name)}$/.match?(check) }
246
+ re = /((\/|\A)tests(\/|\z))|((\/|\A)Gemfile(\/|\z))/
243
247
  if !path&.match?(re)
244
248
  assert_equal(1, matched.length, "should have found a single instance of path #{search_name}, found #{matched.length}: \n #{matched}")
245
249
  else
@@ -252,24 +256,25 @@ hosts.each do |host|
252
256
  end
253
257
 
254
258
  step "#do_scp_to with :ignore : can copy a dir to the host, excluding ignored patterns that DO appear in the source absolute path"
255
- current_dir = File.dirname(__FILE__)
259
+ current_dir = __dir__
256
260
  module_fixture = File.expand_path(File.join(current_dir, "../../../fixtures/module"))
257
261
  hosts.each do |host|
258
262
  logger.debug("can recursively copy a module over, ignoring some sub-files/sub-dirs that also appear in the absolute path")
259
- #make sure that we are clean on the test host
263
+ # make sure that we are clean on the test host
260
264
  host.rm_rf("module")
261
- host.do_scp_to(module_fixture, ".", {:ignore => ['module', 'Gemfile']})
265
+ host.do_scp_to(module_fixture, ".", { :ignore => %w[module Gemfile] })
262
266
  Dir.mktmpdir do |tmp_dir|
263
- #grab copy from host
267
+ # grab copy from host
264
268
  host.do_scp_from("module", tmp_dir, {})
265
- #compare to local copy
269
+ # compare to local copy
266
270
  local_paths = Dir.glob(File.join(module_fixture, "**/*")).select { |f| File.file?(f) }
267
271
  host_paths = Dir.glob(File.join(File.join(tmp_dir, "module"), "**/*")).select { |f| File.file?(f) }
268
- #each local file should have a single match on the host
272
+ # each local file should have a single match on the host
269
273
  local_paths.each do |path|
270
- search_name = path.gsub(/^.*fixtures\/module\//, '') #reduce down to the path that should match
271
- matched = host_paths.select{ |check| check =~ /#{Regexp.escape(search_name)}$/ }
272
- re = /((\/|\A)module(\/|\z))|((\/|\A)Gemfile(\/|\z))/
274
+ search_name = path.gsub(/^.*fixtures\/module\//, '') # reduce down to the path that should match
275
+ search_name_regex = /#{Regexp.escape(search_name)}$/
276
+ matched = host_paths.select { |check| search_name_regex.match?(check) }
277
+ re = /((\/|\A)module(\/|\z))|((\/|\A)Gemfile(\/|\z))/
273
278
  if !path.gsub(/^.*module\//, '')&.match?(re)
274
279
  assert_equal(1, matched.length, "should have found a single instance of path #{search_name}, found #{matched.length}: \n #{matched}")
275
280
  else
@@ -282,9 +287,10 @@ hosts.each do |host|
282
287
  end
283
288
 
284
289
  step "Ensure scp errors close the ssh connection" do
290
+ # beaker-docker can't deal with closing the connection
291
+ confine :except, :hypervisor => 'docker'
285
292
 
286
293
  step 'Attempt to generate a remote file that does not exist' do
287
-
288
294
  # This assert relies on the behavior of the net-scp library to
289
295
  # raise an error when #channel.on_close is called, which is called by
290
296
  # indirectly called by beaker's own SshConnection #close mehod. View
@@ -301,7 +307,6 @@ step "Ensure scp errors close the ssh connection" do
301
307
  end
302
308
 
303
309
  step 'Attempt to scp from a resource on the SUT that does not exist' do
304
-
305
310
  # This assert relies on the behavior of the net-scp library to
306
311
  # use the Dir.mkdir method in the #download_start_state method.
307
312
  # See the source for further info:
@@ -318,7 +323,7 @@ step "Ensure scp errors close the ssh connection" do
318
323
  end
319
324
 
320
325
  step 'Ensure that a long 128+ character string with UTF-8 characters does not break net-ssh' do
321
- long_string = 'a' * 128 + "\u06FF"
326
+ long_string = ('a' * 128) + "\u06FF"
322
327
  on(default, "mkdir /tmp/#{long_string}")
323
328
  result = on(default, 'ls /tmp')
324
329
  assert(result.stdout.include?(long_string), 'Error in folder creation with long string + UTF-8 characters')
@@ -327,6 +332,4 @@ step 'Ensure that a long 128+ character string with UTF-8 characters does not br
327
332
  on(default, "rm -rf /tmp/#{long_string}")
328
333
  result = on(default, 'ls /tmp')
329
334
  assert(!result.stdout.include?(long_string), 'Error in folder deletion with long string + UTF-8 characters')
330
-
331
335
  end
332
-
@@ -22,7 +22,6 @@ def get_host_pkg(host)
22
22
  else
23
23
  Beaker::HostPrebuiltSteps::UNIX_PACKAGES
24
24
  end
25
-
26
25
  end
27
26
 
28
27
  step '#check_for_command : can determine where a command exists'
@@ -49,6 +48,7 @@ hosts.each do |host|
49
48
  # a lot of dependencies.
50
49
  # skipping this test for windows since it requires a restart
51
50
  next if host['platform'].include?('windows')
51
+
52
52
  package = 'zsh'
53
53
  package = 'CSWzsh' if host['platform'].include?('solaris-10')
54
54
  package = 'git' if /opensuse|sles/.match?(host['platform'])
@@ -78,5 +78,4 @@ hosts.each do |host|
78
78
  assert_equal(false, host.check_for_package(package), "'#{package}' should not be installed")
79
79
  end
80
80
  end
81
-
82
81
  end
@@ -1,62 +1,7 @@
1
1
  test_name 'confirm unix-specific package methods work'
2
2
  confine :except, :platform => %w(windows solaris osx)
3
3
 
4
- current_dir = File.dirname(__FILE__)
5
- pkg_fixtures = File.expand_path(File.join(current_dir, '../../../fixtures/package'))
6
- pkg_name = 'puppetserver'
7
-
8
- def clean_file(host, file)
9
- unless file.nil?
10
- filename = pkg_file(host, file)
11
-
12
- if !filename.nil? && host.file_exist?(filename)
13
- on(host, "rm -rf #{filename}")
14
- end
15
- end
16
- end
17
-
18
- def pkg_file(host, pkg_name)
19
- if /debian|ubuntu/.match?(host['platform'])
20
- "/etc/apt/sources.list.d/#{pkg_name}.list"
21
- elsif host['platform'].include?('el')
22
- "/etc/yum.repos.d/#{pkg_name}.repo"
23
- else
24
- nil
25
- end
26
- end
27
-
28
4
  step '#update_apt_if_needed : can execute without raising an error'
29
5
  hosts.each do |host|
30
6
  host.update_apt_if_needed
31
7
  end
32
-
33
- step '#deploy_apt_repo : deploy puppet-server nightly repo'
34
- hosts.each do |host|
35
-
36
- if /debian|ubuntu/.match?(host['platform'])
37
- clean_file(host, pkg_name)
38
- host.deploy_apt_repo(pkg_fixtures, pkg_name, 'latest')
39
- assert(host.file_exist?(pkg_file(host, pkg_name)), 'apt file should exist')
40
- clean_file(host, pkg_name)
41
- end
42
-
43
- end
44
-
45
- step '#deploy_yum_repo : deploy puppet-server nightly repo'
46
- hosts.each do |host|
47
-
48
- if host['platform'].include?('el')
49
- clean_file(host, pkg_name)
50
- host.deploy_yum_repo(pkg_fixtures, pkg_name, 'latest')
51
- assert(host.file_exist?(pkg_file(host, pkg_name)), 'yum file should exist')
52
- clean_file(host, pkg_name)
53
- end
54
-
55
- end
56
-
57
- step '#deploy_package_repo : deploy puppet-server nightly repo'
58
- hosts.each do |host|
59
- next if host['platform'].variant == 'sles' && Integer(host['platform'].version) < 12
60
- host.deploy_package_repo(pkg_fixtures, pkg_name, 'latest')
61
- clean_file(host, pkg_name)
62
- end
@@ -14,5 +14,4 @@ test_name 'User Test' do
14
14
  end
15
15
  end
16
16
  end
17
-
18
17
  end
@@ -1,5 +1,4 @@
1
1
  test_name "confirm host prebuilt steps behave correctly" do
2
-
3
2
  confine_block :except, :platform => /f5|windows/ do
4
3
  step "confirm ssh environment file existence" do
5
4
  hosts.each do |host|
@@ -29,4 +28,4 @@ test_name "confirm host prebuilt steps behave correctly" do
29
28
  end
30
29
  end
31
30
  end
32
- end
31
+ end
@@ -1,13 +1,10 @@
1
1
  test_name 'ensure tests can export arbitrary data' do
2
-
3
2
  step 'export nested hash' do
4
- export({'middle earth' => {
5
- 'Hobbits' => ['Bilbo', 'Frodo'],
6
- 'Elves' => 'Arwen',
7
- :total => {'numbers' => 42}
8
- }
9
- })
10
- export({'another' => 'author'})
3
+ export({ 'middle earth' => {
4
+ 'Hobbits' => %w[Bilbo Frodo],
5
+ 'Elves' => 'Arwen',
6
+ :total => { 'numbers' => 42 },
7
+ } })
8
+ export({ 'another' => 'author' })
11
9
  end
12
-
13
10
  end
@@ -6,15 +6,13 @@ step 'install arbitrary msi via url' do
6
6
  hosts.each do |host|
7
7
  if host['platform'].include?('win')
8
8
  # this should be implemented at the host/win/pkg.rb level someday
9
- generic_install_msi_on(host, 'https://releases.hashicorp.com/vagrant/1.8.4/vagrant_1.8.4.msi', {}, {:debug => true})
9
+ generic_install_msi_on(host, 'https://releases.hashicorp.com/vagrant/1.8.4/vagrant_1.8.4.msi', {}, { :debug => true })
10
10
  end
11
11
  end
12
12
  end
13
13
 
14
14
  step 'install arbitrary dmg via url' do
15
15
  hosts.each do |host|
16
- if host['platform'].include?('osx')
17
- host.generic_install_dmg('https://releases.hashicorp.com/vagrant/1.8.4/vagrant_1.8.4.dmg', 'Vagrant', 'Vagrant.pkg')
18
- end
16
+ host.generic_install_dmg('https://releases.hashicorp.com/vagrant/1.8.4/vagrant_1.8.4.dmg', 'Vagrant', 'Vagrant.pkg') if host['platform'].include?('osx')
19
17
  end
20
18
  end
@@ -5,6 +5,6 @@
5
5
  begin
6
6
  require 'helpers/test_helper'
7
7
  rescue LoadError
8
- $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
8
+ $LOAD_PATH << File.expand_path(File.join(__dir__, '..', 'lib'))
9
9
  require 'helpers/test_helper'
10
10
  end