beaker 4.41.2 → 5.0.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.
Files changed (218) 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 +16 -52
  8. data/Gemfile +12 -7
  9. data/HISTORY.md +605 -0
  10. data/Rakefile +99 -111
  11. data/acceptance/config/acceptance-options.rb +1 -1
  12. data/acceptance/config/base/acceptance-options.rb +2 -2
  13. data/acceptance/config/hypervisor/acceptance-options.rb +2 -2
  14. data/acceptance/config/subcommands/acceptance-options.rb +2 -2
  15. data/acceptance/fixtures/module/Rakefile +1 -1
  16. data/acceptance/fixtures/module/spec/acceptance/demo_spec.rb +8 -12
  17. data/acceptance/fixtures/module/spec/classes/init_spec.rb +0 -1
  18. data/acceptance/fixtures/module/spec/spec_helper_acceptance.rb +3 -5
  19. data/acceptance/lib/helpers/test_helper.rb +6 -5
  20. data/acceptance/pre_suite/subcommands/05_install_ruby.rb +2 -3
  21. data/acceptance/pre_suite/subcommands/08_install_beaker.rb +1 -2
  22. data/acceptance/tests/base/dsl/helpers/configuration_test.rb +4 -4
  23. data/acceptance/tests/base/dsl/helpers/hocon_helpers_test.rb +1 -2
  24. data/acceptance/tests/base/dsl/helpers/host_helpers/add_system32_hosts_entry_test.rb +0 -3
  25. data/acceptance/tests/base/dsl/helpers/host_helpers/archive_file_from_test.rb +3 -1
  26. data/acceptance/tests/base/dsl/helpers/host_helpers/backup_the_file_test.rb +9 -9
  27. data/acceptance/tests/base/dsl/helpers/host_helpers/check_for_package_test.rb +0 -4
  28. data/acceptance/tests/base/dsl/helpers/host_helpers/create_remote_file_test.rb +19 -26
  29. data/acceptance/tests/base/dsl/helpers/host_helpers/curl_on_test.rb +2 -2
  30. data/acceptance/tests/base/dsl/helpers/host_helpers/curl_with_retries_test.rb +0 -1
  31. data/acceptance/tests/base/dsl/helpers/host_helpers/on_test.rb +18 -13
  32. data/acceptance/tests/base/dsl/helpers/host_helpers/retry_on_test.rb +3 -3
  33. data/acceptance/tests/base/dsl/helpers/host_helpers/rsync_to_test.rb +22 -27
  34. data/acceptance/tests/base/dsl/helpers/host_helpers/run_cron_on_test.rb +12 -16
  35. data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_on_test.rb +3 -4
  36. data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_test.rb +3 -3
  37. data/acceptance/tests/base/dsl/helpers/host_helpers/scp_from_test.rb +4 -4
  38. data/acceptance/tests/base/dsl/helpers/host_helpers/scp_to_test.rb +3 -4
  39. data/acceptance/tests/base/dsl/helpers/host_helpers/shell_test.rb +5 -5
  40. data/acceptance/tests/base/dsl/helpers/host_helpers/upgrade_package_test.rb +3 -5
  41. data/acceptance/tests/base/dsl/platform_tag_confiner_test.rb +14 -17
  42. data/acceptance/tests/base/dsl/structure_test.rb +5 -11
  43. data/acceptance/tests/base/host/file_test.rb +2 -2
  44. data/acceptance/tests/base/host/group_test.rb +0 -1
  45. data/acceptance/tests/base/host/host_test.rb +66 -63
  46. data/acceptance/tests/base/host/packages.rb +1 -2
  47. data/acceptance/tests/base/host/packages_unix.rb +0 -55
  48. data/acceptance/tests/base/host/user_test.rb +0 -1
  49. data/acceptance/tests/base/host_prebuilt_steps/ssh_environment_test.rb +1 -2
  50. data/acceptance/tests/base/test_suite/export.rb +6 -9
  51. data/acceptance/tests/install/from_file.rb +2 -4
  52. data/acceptance/tests/load_path_bootstrap.rb +1 -1
  53. data/acceptance/tests/subcommands/destroy.rb +19 -21
  54. data/acceptance/tests/subcommands/exec.rb +0 -1
  55. data/acceptance/tests/subcommands/init.rb +2 -3
  56. data/acceptance/tests/subcommands/provision.rb +0 -1
  57. data/beaker.gemspec +4 -7
  58. data/docs/concepts/argument_processing_and_precedence.md +1 -10
  59. data/docs/how_to/debug_beaker_tests.md +12 -12
  60. data/docs/how_to/hosts/eos.md +2 -12
  61. data/docs/how_to/install_puppet.md +0 -18
  62. data/docs/how_to/the_beaker_dsl.md +0 -2
  63. data/lib/beaker/cli.rb +59 -68
  64. data/lib/beaker/command.rb +20 -28
  65. data/lib/beaker/command_factory.rb +3 -2
  66. data/lib/beaker/dsl/assertions.rb +6 -18
  67. data/lib/beaker/dsl/helpers/hocon_helpers.rb +3 -7
  68. data/lib/beaker/dsl/helpers/host_helpers.rb +62 -123
  69. data/lib/beaker/dsl/helpers/test_helpers.rb +3 -5
  70. data/lib/beaker/dsl/helpers/web_helpers.rb +19 -39
  71. data/lib/beaker/dsl/helpers.rb +2 -4
  72. data/lib/beaker/dsl/outcomes.rb +13 -15
  73. data/lib/beaker/dsl/patterns.rb +1 -3
  74. data/lib/beaker/dsl/roles.rb +17 -20
  75. data/lib/beaker/dsl/structure.rb +53 -65
  76. data/lib/beaker/dsl/test_tagging.rb +7 -10
  77. data/lib/beaker/dsl/wrappers.rb +15 -16
  78. data/lib/beaker/dsl.rb +2 -3
  79. data/lib/beaker/host/aix/exec.rb +1 -1
  80. data/lib/beaker/host/aix/file.rb +0 -1
  81. data/lib/beaker/host/aix/group.rb +1 -1
  82. data/lib/beaker/host/aix/user.rb +1 -1
  83. data/lib/beaker/host/aix.rb +3 -4
  84. data/lib/beaker/host/cisco.rb +27 -39
  85. data/lib/beaker/host/eos.rb +4 -30
  86. data/lib/beaker/host/freebsd/exec.rb +1 -1
  87. data/lib/beaker/host/freebsd/pkg.rb +3 -3
  88. data/lib/beaker/host/freebsd.rb +9 -12
  89. data/lib/beaker/host/mac/exec.rb +4 -4
  90. data/lib/beaker/host/mac/group.rb +7 -7
  91. data/lib/beaker/host/mac/pkg.rb +3 -106
  92. data/lib/beaker/host/mac/user.rb +2 -2
  93. data/lib/beaker/host/mac.rb +8 -9
  94. data/lib/beaker/host/pswindows/exec.rb +66 -70
  95. data/lib/beaker/host/pswindows/file.rb +3 -5
  96. data/lib/beaker/host/pswindows/group.rb +3 -3
  97. data/lib/beaker/host/pswindows/pkg.rb +12 -12
  98. data/lib/beaker/host/pswindows/user.rb +3 -3
  99. data/lib/beaker/host/pswindows.rb +4 -3
  100. data/lib/beaker/host/unix/exec.rb +81 -83
  101. data/lib/beaker/host/unix/file.rb +40 -45
  102. data/lib/beaker/host/unix/group.rb +1 -1
  103. data/lib/beaker/host/unix/pkg.rb +138 -401
  104. data/lib/beaker/host/unix/user.rb +2 -2
  105. data/lib/beaker/host/unix.rb +8 -11
  106. data/lib/beaker/host/windows/exec.rb +17 -17
  107. data/lib/beaker/host/windows/file.rb +3 -3
  108. data/lib/beaker/host/windows/group.rb +3 -3
  109. data/lib/beaker/host/windows/pkg.rb +3 -54
  110. data/lib/beaker/host/windows/user.rb +3 -3
  111. data/lib/beaker/host/windows.rb +12 -12
  112. data/lib/beaker/host.rb +76 -133
  113. data/lib/beaker/host_prebuilt_steps.rb +88 -196
  114. data/lib/beaker/hypervisor/noop.rb +2 -4
  115. data/lib/beaker/hypervisor.rb +44 -61
  116. data/lib/beaker/local_connection.rb +2 -4
  117. data/lib/beaker/logger.rb +68 -76
  118. data/lib/beaker/logger_junit.rb +21 -25
  119. data/lib/beaker/network_manager.rb +39 -42
  120. data/lib/beaker/options/command_line_parser.rb +12 -23
  121. data/lib/beaker/options/hosts_file_parser.rb +16 -25
  122. data/lib/beaker/options/options_file_parser.rb +3 -6
  123. data/lib/beaker/options/options_hash.rb +2 -7
  124. data/lib/beaker/options/parser.rb +86 -102
  125. data/lib/beaker/options/presets.rb +114 -123
  126. data/lib/beaker/options/subcommand_options_file_parser.rb +3 -6
  127. data/lib/beaker/options/validator.rb +26 -31
  128. data/lib/beaker/perf.rb +25 -30
  129. data/lib/beaker/platform.rb +26 -37
  130. data/lib/beaker/result.rb +7 -6
  131. data/lib/beaker/shared/error_handler.rb +8 -10
  132. data/lib/beaker/shared/fog_credentials.rb +5 -9
  133. data/lib/beaker/shared/host_manager.rb +36 -41
  134. data/lib/beaker/shared/options_resolver.rb +3 -7
  135. data/lib/beaker/shared/repetition.rb +2 -4
  136. data/lib/beaker/shared/semvar.rb +37 -41
  137. data/lib/beaker/shared/timed.rb +0 -3
  138. data/lib/beaker/shared.rb +1 -1
  139. data/lib/beaker/ssh_connection.rb +38 -47
  140. data/lib/beaker/subcommand.rb +17 -24
  141. data/lib/beaker/subcommands/subcommand_util.rb +4 -4
  142. data/lib/beaker/tasks/quick_start.rb +4 -9
  143. data/lib/beaker/tasks/rake_task.rb +25 -27
  144. data/lib/beaker/tasks/test.rb +4 -4
  145. data/lib/beaker/test_case.rb +16 -28
  146. data/lib/beaker/test_suite.rb +35 -39
  147. data/lib/beaker/test_suite_result.rb +45 -47
  148. data/lib/beaker/version.rb +1 -1
  149. data/lib/beaker.rb +6 -7
  150. data/spec/beaker/cli_spec.rb +121 -142
  151. data/spec/beaker/command_spec.rb +55 -59
  152. data/spec/beaker/dsl/assertions_spec.rb +36 -36
  153. data/spec/beaker/dsl/helpers/host_helpers_spec.rb +110 -131
  154. data/spec/beaker/dsl/helpers/test_helpers_spec.rb +9 -10
  155. data/spec/beaker/dsl/helpers/web_helpers_spec.rb +22 -31
  156. data/spec/beaker/dsl/outcomes_spec.rb +14 -14
  157. data/spec/beaker/dsl/roles_spec.rb +125 -130
  158. data/spec/beaker/dsl/structure_spec.rb +172 -161
  159. data/spec/beaker/dsl/test_tagging_spec.rb +89 -90
  160. data/spec/beaker/dsl/wrappers_spec.rb +32 -33
  161. data/spec/beaker/host/aix_spec.rb +14 -14
  162. data/spec/beaker/host/cisco_spec.rb +84 -94
  163. data/spec/beaker/host/eos_spec.rb +15 -36
  164. data/spec/beaker/host/freebsd/exec_spec.rb +3 -6
  165. data/spec/beaker/host/freebsd/pkg_spec.rb +24 -27
  166. data/spec/beaker/host/mac/exec_spec.rb +2 -3
  167. data/spec/beaker/host/mac/group_spec.rb +48 -57
  168. data/spec/beaker/host/mac/user_spec.rb +54 -63
  169. data/spec/beaker/host/pswindows/exec_spec.rb +30 -32
  170. data/spec/beaker/host/pswindows/file_spec.rb +16 -16
  171. data/spec/beaker/host/pswindows/user_spec.rb +17 -23
  172. data/spec/beaker/host/pswindows_spec.rb +13 -13
  173. data/spec/beaker/host/unix/exec_spec.rb +75 -80
  174. data/spec/beaker/host/unix/file_spec.rb +66 -71
  175. data/spec/beaker/host/unix/pkg_spec.rb +150 -411
  176. data/spec/beaker/host/unix_spec.rb +11 -207
  177. data/spec/beaker/host/windows/exec_spec.rb +30 -32
  178. data/spec/beaker/host/windows/file_spec.rb +18 -19
  179. data/spec/beaker/host/windows/group_spec.rb +10 -12
  180. data/spec/beaker/host/windows/pkg_spec.rb +6 -9
  181. data/spec/beaker/host/windows/user_spec.rb +17 -23
  182. data/spec/beaker/host/windows_spec.rb +39 -39
  183. data/spec/beaker/host_prebuilt_steps_spec.rb +168 -349
  184. data/spec/beaker/host_spec.rb +204 -284
  185. data/spec/beaker/hypervisor/hypervisor_spec.rb +36 -61
  186. data/spec/beaker/localhost_connection_spec.rb +10 -11
  187. data/spec/beaker/logger_junit_spec.rb +19 -30
  188. data/spec/beaker/logger_spec.rb +153 -136
  189. data/spec/beaker/network_manager_spec.rb +23 -23
  190. data/spec/beaker/options/command_line_parser_spec.rb +20 -23
  191. data/spec/beaker/options/hosts_file_parser_spec.rb +30 -32
  192. data/spec/beaker/options/options_file_parser_spec.rb +4 -7
  193. data/spec/beaker/options/options_hash_spec.rb +4 -6
  194. data/spec/beaker/options/parser_spec.rb +167 -167
  195. data/spec/beaker/options/presets_spec.rb +7 -9
  196. data/spec/beaker/options/subcommand_options_parser_spec.rb +13 -14
  197. data/spec/beaker/options/validator_spec.rb +10 -11
  198. data/spec/beaker/perf_spec.rb +18 -21
  199. data/spec/beaker/platform_spec.rb +25 -50
  200. data/spec/beaker/shared/error_handler_spec.rb +7 -16
  201. data/spec/beaker/shared/fog_credentials_spec.rb +29 -29
  202. data/spec/beaker/shared/host_manager_spec.rb +50 -84
  203. data/spec/beaker/shared/options_resolver_spec.rb +9 -12
  204. data/spec/beaker/shared/repetition_spec.rb +17 -24
  205. data/spec/beaker/shared/semvar_spec.rb +21 -26
  206. data/spec/beaker/ssh_connection_spec.rb +76 -83
  207. data/spec/beaker/subcommand/subcommand_util_spec.rb +31 -33
  208. data/spec/beaker/subcommand_spec.rb +75 -77
  209. data/spec/beaker/test_case_spec.rb +25 -50
  210. data/spec/beaker/test_suite_spec.rb +147 -154
  211. data/spec/helpers.rb +39 -45
  212. data/spec/matchers.rb +8 -7
  213. data/spec/mocks.rb +1 -6
  214. data/spec/spec_helper.rb +0 -1
  215. metadata +8 -24
  216. data/acceptance/tests/base/dsl/helpers/host_helpers/deploy_package_repo_test.rb +0 -142
  217. data/acceptance/tests/base/external_resources_test.rb +0 -31
  218. data/spec/beaker/host/mac_spec.rb +0 -113
@@ -3,14 +3,14 @@ require "helpers/test_helper"
3
3
  test_name "dsl::helpers::host_helpers #backup_the_file" do
4
4
  step "#backup_the_file CURRENTLY will return nil if the file does not exist in the source directory" do
5
5
  # NOTE: would expect this to fail with Beaker::Host::CommandFailure
6
- remote_source = default.tmpdir()
7
- remote_destination = default.tmpdir()
6
+ remote_source = default.tmpdir
7
+ remote_destination = default.tmpdir
8
8
  result = backup_the_file default, remote_source, remote_destination
9
9
  assert_nil result
10
10
  end
11
11
 
12
12
  step "#backup_the_file will fail if the destination directory does not exist" do
13
- remote_source = default.tmpdir()
13
+ remote_source = default.tmpdir
14
14
  create_remote_file_from_fixture("simple_text_file", default, remote_source, "puppet.conf")
15
15
 
16
16
  assert_raises Beaker::Host::CommandFailure do
@@ -19,10 +19,10 @@ test_name "dsl::helpers::host_helpers #backup_the_file" do
19
19
  end
20
20
 
21
21
  step "#backup_the_file copies `puppet.conf` from the source to the destination directory" do
22
- remote_source = default.tmpdir()
22
+ remote_source = default.tmpdir
23
23
  _remote_filename, contents = create_remote_file_from_fixture("simple_text_file", default, remote_source, "puppet.conf")
24
24
 
25
- remote_destination = default.tmpdir()
25
+ remote_destination = default.tmpdir
26
26
  remote_destination_filename = File.join(remote_destination, "puppet.conf.bak")
27
27
 
28
28
  result = backup_the_file default, remote_source, remote_destination
@@ -33,10 +33,10 @@ test_name "dsl::helpers::host_helpers #backup_the_file" do
33
33
  end
34
34
 
35
35
  step "#backup_the_file copies a named file from the source to the destination directory" do
36
- remote_source = default.tmpdir()
36
+ remote_source = default.tmpdir
37
37
  _remote_filename, contents = create_remote_file_from_fixture("simple_text_file", default, remote_source, "testfile.txt")
38
38
 
39
- remote_destination = default.tmpdir()
39
+ remote_destination = default.tmpdir
40
40
  remote_destination_filename = File.join(remote_destination, "testfile.txt.bak")
41
41
 
42
42
  result = backup_the_file default, remote_source, remote_destination, "testfile.txt"
@@ -47,9 +47,9 @@ test_name "dsl::helpers::host_helpers #backup_the_file" do
47
47
  end
48
48
 
49
49
  step "#backup_the_file CURRENTLY will fail if given a hosts array" do
50
- remote_source = default.tmpdir()
50
+ remote_source = default.tmpdir
51
51
  create_remote_file_from_fixture("simple_text_file", default, remote_source, "testfile.txt")
52
- remote_destination = default.tmpdir()
52
+ remote_destination = default.tmpdir
53
53
 
54
54
  assert_raises NoMethodError do
55
55
  backup_the_file hosts, remote_source, remote_destination
@@ -15,10 +15,8 @@ def known_installed_package
15
15
  end
16
16
 
17
17
  test_name "dsl::helpers::host_helpers #check_for_package" do
18
-
19
18
  # NOTE: there does not appear to be a way to confine just to cygwin hosts
20
19
  confine_block :to, :platform => /windows/ do
21
-
22
20
  # NOTE: check_for_package on windows currently fails as follows:
23
21
  #
24
22
  # ArgumentError: wrong number of arguments (3 for 1..2)
@@ -43,7 +41,6 @@ test_name "dsl::helpers::host_helpers #check_for_package" do
43
41
  end
44
42
 
45
43
  confine_block :to, :platform => /solaris/ do
46
-
47
44
  step "#check_for_package will return false if the specified package is not installed on the remote host" do
48
45
  result = check_for_package default, "non-existent-package-name"
49
46
  assert !result
@@ -70,7 +67,6 @@ test_name "dsl::helpers::host_helpers #check_for_package" do
70
67
  end
71
68
 
72
69
  confine_block :except, :platform => /windows|solaris|osx/ do
73
-
74
70
  step "#check_for_package will return false if the specified package is not installed on the remote host" do
75
71
  result = check_for_package default, "non-existent-package-name"
76
72
  assert !result
@@ -1,23 +1,16 @@
1
1
  require "helpers/test_helper"
2
2
 
3
3
  test_name "dsl::helpers::host_helpers #create_remote_file" do
4
-
5
- def create_remote_file_with_backups host, remote_filename, contents, opts={}
4
+ def create_remote_file_with_backups host, remote_filename, contents, opts = {}
6
5
  result = nil
7
6
  repeat_fibonacci_style_for(10) do
8
7
  begin
9
8
  result = create_remote_file(
10
9
  host, remote_filename, contents, opts
11
10
  ) # return of block is whether or not we're done repeating
12
- if result.is_a?(Rsync::Result) || result.is_a?(Beaker::Result)
13
- return result.success?
14
- end
11
+ return result.success? if result.is_a?(Rsync::Result) || result.is_a?(Beaker::Result)
15
12
 
16
- result.each do |individual_result|
17
- next if individual_result.success?
18
- return false
19
- end
20
- true
13
+ result.all? { |individual_result| individual_result.success? }
21
14
  rescue Beaker::Host::CommandFailure => e
22
15
  logger.info("create_remote_file threw command failure, details: ")
23
16
  logger.info(" #{e}")
@@ -102,13 +95,15 @@ test_name "dsl::helpers::host_helpers #create_remote_file" do
102
95
  end
103
96
  end
104
97
 
105
-
106
98
  confine_block :except, :platform => /windows/ do
107
99
  # these tests exercise the rsync backend
108
100
  # NOTE: rsync works fine on Windows as long as you use POSIX-style paths.
109
101
  # However, these tests use Host#tmpdir which outputs mixed-style paths
110
102
  # e.g. C:/cygwin64/tmp/beaker.Rp9G6L - Fix me with BKR-1503
111
103
 
104
+ # rsync is broken on beaker-docker
105
+ confine :except, :hypervisor => 'docker'
106
+
112
107
  confine_block :except, :platform => /osx/ do
113
108
  # packages are unsupported on OSX
114
109
  step "installing rsync on hosts if needed" do
@@ -138,19 +133,18 @@ test_name "dsl::helpers::host_helpers #create_remote_file" do
138
133
  remote_filename = File.join(remote_tmpdir, "testfile.txt")
139
134
  contents = fixture_contents("simple_text_file")
140
135
 
141
- create_remote_file_with_backups(
136
+ result = create_remote_file_with_backups(
142
137
  default, remote_filename, contents, { :protocol => "rsync" }
143
138
  )
144
139
 
145
140
  fails_intermittently("https://tickets.puppetlabs.com/browse/BKR-612",
146
- "default" => default,
147
- "remote_tmpdir" => remote_tmpdir,
148
- "remote_filename" => remote_filename,
149
- "contents" => contents,
150
- "result" => result
151
- ) do
152
- remote_contents = on(default, "cat #{remote_filename}").stdout
153
- assert_equal contents, remote_contents
141
+ "default" => default,
142
+ "remote_tmpdir" => remote_tmpdir,
143
+ "remote_filename" => remote_filename,
144
+ "contents" => contents,
145
+ "result" => result) do
146
+ remote_contents = on(default, "cat #{remote_filename}").stdout
147
+ assert_equal contents, remote_contents
154
148
  end
155
149
  end
156
150
 
@@ -171,12 +165,11 @@ test_name "dsl::helpers::host_helpers #create_remote_file" do
171
165
 
172
166
  hosts.each do |host|
173
167
  fails_intermittently("https://tickets.puppetlabs.com/browse/BKR-612",
174
- "host" => host,
175
- "remote_tmpdir" => remote_tmpdir,
176
- "remote_filename" => remote_filename,
177
- "contents" => contents,
178
- "result" => result
179
- ) do
168
+ "host" => host,
169
+ "remote_tmpdir" => remote_tmpdir,
170
+ "remote_filename" => remote_filename,
171
+ "contents" => contents,
172
+ "result" => result) do
180
173
  remote_contents = on(host, "cat #{remote_filename}").stdout
181
174
  assert_equal contents, remote_contents
182
175
  end
@@ -17,7 +17,7 @@ test_name "dsl::helpers::host_helpers #curl_on" do
17
17
  end
18
18
 
19
19
  step "#curl_on can retrieve the contents of a URL, using standard curl options" do
20
- remote_tmpdir = default.tmpdir()
20
+ remote_tmpdir = default.tmpdir
21
21
  remote_filename, contents = create_remote_file_from_fixture("simple_text_file", default, remote_tmpdir, "testfile.txt")
22
22
  remote_targetfilename = File.join remote_tmpdir, "outfile.txt"
23
23
 
@@ -29,7 +29,7 @@ test_name "dsl::helpers::host_helpers #curl_on" do
29
29
  end
30
30
 
31
31
  step "#curl_on can retrieve the contents of a URL, when given a hosts array" do
32
- remote_tmpdir = default.tmpdir()
32
+ remote_tmpdir = default.tmpdir
33
33
  on hosts, "mkdir -p #{remote_tmpdir}"
34
34
 
35
35
  remote_filename = contents = nil
@@ -1,7 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
3
  test_name "dsl::helpers::host_helpers #curl_with_retries" do
4
-
5
4
  step "#curl_with_retries CURRENTLY fails with a RuntimeError if retries are exhausted without fetching the specified URL" do
6
5
  # NOTE: would expect that this would raise Beaker::Host::CommandFailure
7
6
 
@@ -1,7 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
3
  test_name "dsl::helpers::host_helpers #on" do
4
-
5
4
  step "#on raises an exception when remote command fails" do
6
5
  assert_raises(Beaker::Host::CommandFailure) do
7
6
  on default, "/bin/nonexistent-command"
@@ -9,7 +8,7 @@ test_name "dsl::helpers::host_helpers #on" do
9
8
  end
10
9
 
11
10
  step "#on makes command output available via `.stdout` on success" do
12
- output = on(default, %Q{echo "echo via on"}).stdout
11
+ output = on(default, %{echo "echo via on"}).stdout
13
12
  assert_equal "echo via on\n", output
14
13
  end
15
14
 
@@ -19,7 +18,7 @@ test_name "dsl::helpers::host_helpers #on" do
19
18
  end
20
19
 
21
20
  step "#on makes exit status available via `.exit_code`" do
22
- status = on(default, %Q{echo "echo via on"}).exit_code
21
+ status = on(default, %{echo "echo via on"}).exit_code
23
22
  assert_equal 0, status
24
23
  end
25
24
 
@@ -33,7 +32,7 @@ test_name "dsl::helpers::host_helpers #on" do
33
32
 
34
33
  step "#on with :acceptable_exit_codes will fail for other exit codes" do
35
34
  assert_raises(Beaker::Host::CommandFailure) do
36
- on default, %Q{echo "echo via on"}, :acceptable_exit_codes => [127]
35
+ on default, %{echo "echo via on"}, :acceptable_exit_codes => [127]
37
36
  end
38
37
  end
39
38
 
@@ -48,7 +47,7 @@ test_name "dsl::helpers::host_helpers #on" do
48
47
  # Run a command which is (basically) guaranteed to have distinct output
49
48
  # on every host, and only requires bash to be present to run on any of
50
49
  # our platforms.
51
- results = on hosts, %Q{echo "${RANDOM}:${RANDOM}:${RANDOM}"}
50
+ results = on hosts, %{echo "${RANDOM}:${RANDOM}:${RANDOM}"}
52
51
 
53
52
  # assert that we got results back for every host
54
53
  assert_equal hosts.size, results.size
@@ -67,7 +66,7 @@ test_name "dsl::helpers::host_helpers #on" do
67
66
  # Run a command which is (basically) guaranteed to have distinct output
68
67
  # on every host, and only requires bash to be present to run on any of
69
68
  # our platforms.
70
- results = on :agent, %Q{echo "${RANDOM}:${RANDOM}:${RANDOM}"}
69
+ results = on :agent, %{echo "${RANDOM}:${RANDOM}:${RANDOM}"}
71
70
 
72
71
  # assert that we got results back for every host
73
72
  assert_equal hosts.size, results.size
@@ -86,7 +85,7 @@ test_name "dsl::helpers::host_helpers #on" do
86
85
  # Run a command which is (basically) guaranteed to have distinct output
87
86
  # on every host, and only requires bash to be present to run on any of
88
87
  # our platforms.
89
- results = on "agent", %Q{echo "${RANDOM}:${RANDOM}:${RANDOM}"}
88
+ results = on "agent", %{echo "${RANDOM}:${RANDOM}:${RANDOM}"}
90
89
 
91
90
  # assert that we got results back for every host
92
91
  assert_equal hosts.size, results.size
@@ -102,16 +101,19 @@ test_name "dsl::helpers::host_helpers #on" do
102
101
  end
103
102
 
104
103
  step "#on allows assertions to be used in the optional block" do
105
- on hosts, %Q{echo "${RANDOM}:${RANDOM}"} do
106
- assert_match(/\d+:\d+/, stdout)
104
+ on hosts, %{echo "${RANDOM}:${RANDOM}"} do |result|
105
+ assert_match(/\d+:\d+/, result.stdout)
107
106
  end
108
107
  end
109
108
 
110
109
  step "#on executes in parallel with :run_in_parallel => true" do
110
+ # beaker-docker can't deal with closing the connection
111
+ confine :except, :hypervisor => 'docker'
112
+
111
113
  parent_pid = Process.pid
112
- results = on( hosts, %Q{echo "${RANDOM}:${RANDOM}:${RANDOM}"}, :run_in_parallel => true) {
114
+ results = on(hosts, %{echo "${RANDOM}:${RANDOM}:${RANDOM}"}, :run_in_parallel => true) do
113
115
  assert(Process.pid != parent_pid)
114
- }
116
+ end
115
117
 
116
118
  # assert that we got results back for every host
117
119
  assert_equal hosts.size, results.size
@@ -127,14 +129,17 @@ test_name "dsl::helpers::host_helpers #on" do
127
129
  end
128
130
 
129
131
  step "#on in parallel exits after all processes complete if an exception is raised in one process" do
132
+ # beaker-docker can't deal with closing the connection
133
+ confine :except, :hypervisor => 'docker'
134
+
130
135
  start = Time.now
131
136
 
132
137
  tmp = nil
133
138
  assert_raises NoMethodError do
134
- on( hosts, %Q{echo "blah"}, :run_in_parallel => true) {
139
+ on(hosts, %{echo "blah"}, :run_in_parallel => true) do
135
140
  sleep(1)
136
141
  tmp.blah
137
- }
142
+ end
138
143
  end
139
144
  assert(Time.now > start + 1)
140
145
  end
@@ -4,7 +4,7 @@ test_name "dsl::helpers::host_helpers #retry_on" do
4
4
  step "#retry_on CURRENTLY fails with a RuntimeError if command does not pass after all retries" do
5
5
  # NOTE: would have expected this to fail with Beaker::Hosts::CommandFailure
6
6
 
7
- remote_tmpdir = default.tmpdir()
7
+ remote_tmpdir = default.tmpdir
8
8
  remote_script_file = File.join(remote_tmpdir, "test.sh")
9
9
  create_remote_file_from_fixture("retry_script", default, remote_tmpdir, "test.sh")
10
10
 
@@ -14,7 +14,7 @@ test_name "dsl::helpers::host_helpers #retry_on" do
14
14
  end
15
15
 
16
16
  step "#retry_on succeeds if command passes before retries are exhausted" do
17
- remote_tmpdir = default.tmpdir()
17
+ remote_tmpdir = default.tmpdir
18
18
  remote_script_file = File.join(remote_tmpdir, "test.sh")
19
19
  create_remote_file_from_fixture("retry_script", default, remote_tmpdir, "test.sh")
20
20
 
@@ -27,7 +27,7 @@ test_name "dsl::helpers::host_helpers #retry_on" do
27
27
  # NOTE: would expect this to work across hosts, or be better documented and
28
28
  # to raise Beaker::Host::CommandFailure
29
29
 
30
- remote_tmpdir = default.tmpdir()
30
+ remote_tmpdir = default.tmpdir
31
31
  remote_script_file = File.join(remote_tmpdir, "test.sh")
32
32
 
33
33
  hosts.each do |host|
@@ -2,7 +2,6 @@ require "helpers/test_helper"
2
2
  require "rsync"
3
3
 
4
4
  test_name "dsl::helpers::host_helpers #rsync_to" do
5
-
6
5
  def rsync_to_with_backups hosts, local_filename, remote_dir
7
6
  result = nil
8
7
  repeat_fibonacci_style_for(10) do
@@ -12,11 +11,7 @@ test_name "dsl::helpers::host_helpers #rsync_to" do
12
11
  ) # return of block is whether or not we're done repeating
13
12
  return result.success? if result.is_a? Rsync::Result
14
13
 
15
- result.each do |individual_result|
16
- next if individual_result.success?
17
- return false
18
- end
19
- true
14
+ result.all? { |individual_result| individual_result.success? }
20
15
  rescue Beaker::Host::CommandFailure => e
21
16
  logger.info("create_remote_file threw command failure, details: ")
22
17
  logger.info(" #{e}")
@@ -29,7 +24,6 @@ test_name "dsl::helpers::host_helpers #rsync_to" do
29
24
 
30
25
  # NOTE: there does not seem to be a reliable way to confine to cygwin hosts.
31
26
  confine_block :to, :platform => /windows/ do
32
-
33
27
  # NOTE: rsync works fine on Windows as long as you use POSIX-style paths.
34
28
  # However, these tests use Host#tmpdir which outputs mixed-style paths
35
29
  # e.g. C:/cygwin64/tmp/beaker.Rp9G6L - Fix me with BKR-1503
@@ -37,7 +31,7 @@ test_name "dsl::helpers::host_helpers #rsync_to" do
37
31
  step "#rsync_to CURRENTLY fails on windows systems" do
38
32
  Dir.mktmpdir do |local_dir|
39
33
  local_filename, _contents = create_local_file_from_fixture("simple_text_file", local_dir, "testfile.txt")
40
- remote_tmpdir = default.tmpdir()
34
+ remote_tmpdir = default.tmpdir
41
35
 
42
36
  assert_raises Beaker::Host::CommandFailure do
43
37
  rsync_to default, local_filename, remote_tmpdir
@@ -56,8 +50,11 @@ test_name "dsl::helpers::host_helpers #rsync_to" do
56
50
  # However, these tests use Host#tmpdir which outputs mixed-style paths
57
51
  # e.g. C:/cygwin64/tmp/beaker.Rp9G6L - Fix me with BKR-1503
58
52
 
53
+ # rsync is broken on beaker-docker
54
+ confine :except, :hypervisor => 'docker'
55
+
59
56
  step "#rsync_to fails if the local file cannot be found" do
60
- remote_tmpdir = default.tmpdir()
57
+ remote_tmpdir = default.tmpdir
61
58
  assert_raises IOError do
62
59
  rsync_to default, "/non/existent/file.txt", remote_tmpdir
63
60
  end
@@ -119,20 +116,19 @@ test_name "dsl::helpers::host_helpers #rsync_to" do
119
116
  step "#rsync_to creates the file on the remote system" do
120
117
  Dir.mktmpdir do |local_dir|
121
118
  local_filename, contents = create_local_file_from_fixture("simple_text_file", local_dir, "testfile.txt")
122
- remote_tmpdir = default.tmpdir()
119
+ remote_tmpdir = default.tmpdir
123
120
  remote_filename = File.join(remote_tmpdir, "testfile.txt")
124
121
 
125
122
  result = rsync_to_with_backups default, local_filename, remote_tmpdir
126
123
 
127
124
  fails_intermittently("https://tickets.puppetlabs.com/browse/QENG-3053",
128
- "default" => default,
129
- "contents" => contents,
130
- "local_filename" => local_filename,
131
- "local_dir" => local_dir,
132
- "remote_filename" => remote_filename,
133
- "remote_tmdir" => remote_tmpdir,
134
- "result" => result.inspect,
135
- ) do
125
+ "default" => default,
126
+ "contents" => contents,
127
+ "local_filename" => local_filename,
128
+ "local_dir" => local_dir,
129
+ "remote_filename" => remote_filename,
130
+ "remote_tmdir" => remote_tmpdir,
131
+ "result" => result.inspect) do
136
132
  remote_contents = on(default, "cat #{remote_filename}").stdout
137
133
  assert_equal contents, remote_contents
138
134
  end
@@ -142,7 +138,7 @@ test_name "dsl::helpers::host_helpers #rsync_to" do
142
138
  step "#rsync_to creates the file on all remote systems when a host array is provided" do
143
139
  Dir.mktmpdir do |local_dir|
144
140
  local_filename, contents = create_local_file_from_fixture("simple_text_file", local_dir, "testfile.txt")
145
- remote_tmpdir = default.tmpdir()
141
+ remote_tmpdir = default.tmpdir
146
142
  on hosts, "mkdir -p #{remote_tmpdir}"
147
143
  remote_filename = File.join(remote_tmpdir, "testfile.txt")
148
144
 
@@ -150,14 +146,13 @@ test_name "dsl::helpers::host_helpers #rsync_to" do
150
146
 
151
147
  hosts.each do |host|
152
148
  fails_intermittently("https://tickets.puppetlabs.com/browse/QENG-3053",
153
- "host" => host,
154
- "contents" => contents,
155
- "local_filename" => local_filename,
156
- "local_dir" => local_dir,
157
- "remote_filename" => remote_filename,
158
- "remote_tmdir" => remote_tmpdir,
159
- "result" => result.inspect,
160
- ) do
149
+ "host" => host,
150
+ "contents" => contents,
151
+ "local_filename" => local_filename,
152
+ "local_dir" => local_dir,
153
+ "remote_filename" => remote_filename,
154
+ "remote_tmdir" => remote_tmpdir,
155
+ "result" => result.inspect) do
161
156
  remote_contents = on(host, "cat #{remote_filename}").stdout
162
157
  assert_equal contents, remote_contents
163
158
  end
@@ -1,9 +1,7 @@
1
1
  require "helpers/test_helper"
2
2
 
3
3
  test_name "dsl::helpers::host_helpers #run_cron_on" do
4
-
5
4
  confine_block :to, :platform => /windows/ do
6
-
7
5
  step "#run_cron_on fails on windows platforms when listing cron jobs for a user on a host" do
8
6
  assert_raises Beaker::Host::CommandFailure do
9
7
  run_cron_on default, :list, default['user']
@@ -12,7 +10,6 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
12
10
  end
13
11
 
14
12
  confine_block :to, :platform => /solaris/ do
15
-
16
13
  step "#run_cron_on CURRENTLY does nothing and returns `nil` when an unknown command is provided" do
17
14
  # NOTE: would have expected this to raise Beaker::Host::CommandFailure instead
18
15
 
@@ -39,7 +36,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
39
36
  end
40
37
 
41
38
  step "#run_cron_on CURRENTLY does not fail, but returns nil, when adding cron jobs for an unknown user" do
42
- result = run_cron_on default, :add, "nonexistentuser", %Q{* * * * * /bin/echo "hello" >/dev/null}
39
+ result = run_cron_on default, :add, "nonexistentuser", %{* * * * * /bin/echo "hello" >/dev/null}
43
40
  assert_nil result
44
41
  end
45
42
 
@@ -49,7 +46,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
49
46
  end
50
47
 
51
48
  step "#run_cron_on can add a cron job for a user on a host" do
52
- run_cron_on default, :add, default['user'], %Q{* * * * * /bin/echo "hello" >/dev/null}
49
+ run_cron_on default, :add, default['user'], %{* * * * * /bin/echo "hello" >/dev/null}
53
50
  result = run_cron_on default, :list, default['user']
54
51
  assert_equal 0, result.exit_code
55
52
  assert_match %r{/bin/echo}, result.stdout
@@ -60,13 +57,13 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
60
57
  # cron entries. See also: https://github.com/puppetlabs/beaker/pull/937#discussion_r38338494
61
58
 
62
59
  1.upto(3) do |job_number|
63
- run_cron_on default, :add, default['user'], %Q{* * * * * /bin/echo "job :#{job_number}:" >/dev/null}
60
+ run_cron_on default, :add, default['user'], %{* * * * * /bin/echo "job :#{job_number}:" >/dev/null}
64
61
  end
65
62
 
66
63
  result = run_cron_on default, :list, default['user']
67
64
 
68
- assert_no_match %r{job :1:}, result.stdout
69
- assert_no_match %r{job :2:}, result.stdout
65
+ refute_match %r{job :1:}, result.stdout
66
+ refute_match %r{job :2:}, result.stdout
70
67
  assert_match %r{job :3:}, result.stdout
71
68
  end
72
69
 
@@ -74,7 +71,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
74
71
  # NOTE: would have expected a more granular approach to removing cron jobs
75
72
  # for a user on a host. This should otherwise be better documented.
76
73
 
77
- run_cron_on default, :add, default['user'], %Q{* * * * * /bin/echo "quality: job 1" >/dev/null}
74
+ run_cron_on default, :add, default['user'], %{* * * * * /bin/echo "quality: job 1" >/dev/null}
78
75
  result = run_cron_on default, :list, default['user']
79
76
  assert_match %r{quality: job 1}, result.stdout
80
77
 
@@ -125,7 +122,6 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
125
122
  end
126
123
 
127
124
  confine_block :except, :platform => /windows|solaris/ do
128
-
129
125
  step "#run_cron_on CURRENTLY does nothing and returns `nil` when an unknown command is provided" do
130
126
  # NOTE: would have expected this to raise Beaker::Host::CommandFailure instead
131
127
 
@@ -154,7 +150,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
154
150
 
155
151
  step "#run_cron_on fails when adding cron jobs for an unknown user" do
156
152
  assert_raises Beaker::Host::CommandFailure do
157
- run_cron_on default, :add, "nonexistentuser", %Q{* * * * * /bin/echo "hello" >/dev/null}
153
+ run_cron_on default, :add, "nonexistentuser", %{* * * * * /bin/echo "hello" >/dev/null}
158
154
  end
159
155
  end
160
156
 
@@ -165,7 +161,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
165
161
  end
166
162
 
167
163
  step "#run_cron_on can add a cron job for a user on a host" do
168
- run_cron_on default, :add, default['user'], %Q{* * * * * /bin/echo "hello" >/dev/null}
164
+ run_cron_on default, :add, default['user'], %{* * * * * /bin/echo "hello" >/dev/null}
169
165
  result = run_cron_on default, :list, default['user']
170
166
  assert_equal 0, result.exit_code
171
167
  assert_match %r{/bin/echo}, result.stdout
@@ -176,13 +172,13 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
176
172
  # cron entries. See also: https://github.com/puppetlabs/beaker/pull/937#discussion_r38338494
177
173
 
178
174
  1.upto(3) do |job_number|
179
- run_cron_on default, :add, default['user'], %Q{* * * * * /bin/echo "job :#{job_number}:" >/dev/null}
175
+ run_cron_on default, :add, default['user'], %{* * * * * /bin/echo "job :#{job_number}:" >/dev/null}
180
176
  end
181
177
 
182
178
  result = run_cron_on default, :list, default['user']
183
179
 
184
- assert_no_match %r{job :1:}, result.stdout
185
- assert_no_match %r{job :2:}, result.stdout
180
+ refute_match %r{job :1:}, result.stdout
181
+ refute_match %r{job :2:}, result.stdout
186
182
  assert_match %r{job :3:}, result.stdout
187
183
  end
188
184
 
@@ -190,7 +186,7 @@ test_name "dsl::helpers::host_helpers #run_cron_on" do
190
186
  # NOTE: would have expected a more granular approach to removing cron jobs
191
187
  # for a user on a host. This should otherwise be better documented.
192
188
 
193
- run_cron_on default, :add, default['user'], %Q{* * * * * /bin/echo "quality: job 1" >/dev/null}
189
+ run_cron_on default, :add, default['user'], %{* * * * * /bin/echo "quality: job 1" >/dev/null}
194
190
  result = run_cron_on default, :list, default['user']
195
191
  assert_match %r{quality: job 1}, result.stdout
196
192
 
@@ -1,7 +1,6 @@
1
1
  require "helpers/test_helper"
2
2
 
3
3
  test_name "dsl::helpers::host_helpers #run_script_on" do
4
-
5
4
  step "#run_script_on fails when the local script cannot be found" do
6
5
  assert_raises IOError do
7
6
  run_script_on default, "/non/existent/testfile.sh"
@@ -41,9 +40,9 @@ test_name "dsl::helpers::host_helpers #run_script_on" do
41
40
  Dir.mktmpdir do |local_dir|
42
41
  local_filename, _contents = create_local_file_from_fixture("shell_script_with_output", local_dir, "testfile.sh", "a+x")
43
42
 
44
- run_script_on default, local_filename do
45
- assert_equal 0, exit_code
46
- assert_equal "output\n", stdout
43
+ run_script_on default, local_filename do |result|
44
+ assert_equal 0, result.exit_code
45
+ assert_equal "output\n", result.stdout
47
46
  end
48
47
  end
49
48
  end
@@ -40,9 +40,9 @@ test_name "dsl::helpers::host_helpers #run_script" do
40
40
  Dir.mktmpdir do |local_dir|
41
41
  local_filename, _contents = create_local_file_from_fixture("shell_script_with_output", local_dir, "testfile.sh", "a+x")
42
42
 
43
- run_script local_filename do
44
- assert_equal 0, exit_code
45
- assert_equal "output\n", stdout
43
+ run_script local_filename do |result|
44
+ assert_equal 0, result.exit_code
45
+ assert_equal "output\n", result.stdout
46
46
  end
47
47
  end
48
48
  end
@@ -3,7 +3,7 @@ require "helpers/test_helper"
3
3
  test_name "dsl::helpers::host_helpers #scp_from" do
4
4
  if test_scp_error_on_close?
5
5
  step "#scp_from fails if the local path cannot be found" do
6
- remote_tmpdir = default.tmpdir()
6
+ remote_tmpdir = default.tmpdir
7
7
  remote_filename, _contents = create_remote_file_from_fixture("simple_text_file", default, remote_tmpdir, "testfile.txt")
8
8
 
9
9
  assert_raises Beaker::Host::CommandFailure do
@@ -22,7 +22,7 @@ test_name "dsl::helpers::host_helpers #scp_from" do
22
22
 
23
23
  step "#scp_from creates the file on the local system" do
24
24
  Dir.mktmpdir do |local_dir|
25
- remote_tmpdir = default.tmpdir()
25
+ remote_tmpdir = default.tmpdir
26
26
  remote_filename, contents = create_remote_file_from_fixture("simple_text_file", default, remote_tmpdir, "testfile.txt")
27
27
 
28
28
  scp_from default, remote_filename, local_dir
@@ -37,10 +37,10 @@ test_name "dsl::helpers::host_helpers #scp_from" do
37
37
  # file repeatedly to generate an error
38
38
 
39
39
  Dir.mktmpdir do |local_dir|
40
- remote_tmpdir = default.tmpdir()
40
+ remote_tmpdir = default.tmpdir
41
41
  remote_filename = File.join(remote_tmpdir, "testfile.txt")
42
42
  on hosts, "mkdir -p #{remote_tmpdir}"
43
- on hosts, %Q{echo "${RANDOM}:${RANDOM}:${RANDOM}" > #{remote_filename}}
43
+ on hosts, %{echo "${RANDOM}:${RANDOM}:${RANDOM}" > #{remote_filename}}
44
44
 
45
45
  scp_from hosts, remote_filename, local_dir
46
46
  remote_contents = on(hosts.last, "cat #{remote_filename}").stdout
@@ -2,7 +2,7 @@ require "helpers/test_helper"
2
2
 
3
3
  test_name "dsl::helpers::host_helpers #scp_to" do
4
4
  step "#scp_to fails if the local file cannot be found" do
5
- remote_tmpdir = default.tmpdir()
5
+ remote_tmpdir = default.tmpdir
6
6
  assert_raises IOError do
7
7
  scp_to default, "/non/existent/file.txt", remote_tmpdir
8
8
  end
@@ -24,7 +24,7 @@ test_name "dsl::helpers::host_helpers #scp_to" do
24
24
  step "#scp_to creates the file on the remote system" do
25
25
  Dir.mktmpdir do |local_dir|
26
26
  local_filename, contents = create_local_file_from_fixture("simple_text_file", local_dir, "testfile.txt")
27
- remote_tmpdir = default.tmpdir()
27
+ remote_tmpdir = default.tmpdir
28
28
 
29
29
  scp_to default, local_filename, remote_tmpdir
30
30
 
@@ -38,7 +38,7 @@ test_name "dsl::helpers::host_helpers #scp_to" do
38
38
  Dir.mktmpdir do |local_dir|
39
39
  local_filename, contents = create_local_file_from_fixture("simple_text_file", local_dir, "testfile.txt")
40
40
 
41
- remote_tmpdir = default.tmpdir()
41
+ remote_tmpdir = default.tmpdir
42
42
  on hosts, "mkdir -p #{remote_tmpdir}"
43
43
  remote_filename = File.join(remote_tmpdir, "testfile.txt")
44
44
 
@@ -50,5 +50,4 @@ test_name "dsl::helpers::host_helpers #scp_to" do
50
50
  end
51
51
  end
52
52
  end
53
-
54
53
  end