beaker 4.40.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 (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 +17 -28
  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 +6 -5
  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 +16 -28
  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 +6 -7
  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 +172 -161
  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 +48 -57
  167. data/spec/beaker/host/mac/user_spec.rb +54 -63
  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 +7 -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
@@ -4,24 +4,24 @@ module Beaker
4
4
  describe Host do
5
5
  let(:options) { @options ? @options : {} }
6
6
  let(:platform) { @platform ? { :platform => @platform } : {} }
7
- let(:host) { make_host( 'name', options.merge(platform) ) }
7
+ let(:host) { make_host('name', options.merge(platform)) }
8
8
 
9
9
  it 'creates a windows host given a windows config' do
10
10
  @platform = 'windows'
11
- expect( host ).to be_a_kind_of Windows::Host
11
+ expect(host).to be_a Windows::Host
12
12
  end
13
13
 
14
14
  it 'defaults to a unix host' do
15
- expect( host ).to be_a_kind_of Unix::Host
15
+ expect(host).to be_a Unix::Host
16
16
  end
17
17
 
18
18
  it 'can be read like a hash' do
19
- expect{ host['value'] }.not_to raise_error
19
+ expect { host['value'] }.not_to raise_error
20
20
  end
21
21
 
22
22
  it 'can be written like a hash' do
23
23
  host['value'] = 'blarg'
24
- expect( host['value'] ).to be === 'blarg'
24
+ expect(host['value']).to be === 'blarg'
25
25
  end
26
26
 
27
27
  describe "host types" do
@@ -30,38 +30,15 @@ module Beaker
30
30
  it "can be a pe host" do
31
31
  options['type'] = 'pe'
32
32
  expect(host).to be_is_pe
33
- expect(host).to be_use_service_scripts
34
- expect(host).to be_is_using_passenger
35
- expect(host).not_to be_graceful_restarts
36
33
  end
37
34
 
38
35
  it "can be a foss-source host" do
39
36
  expect(host).not_to be_is_pe
40
- expect(host).not_to be_use_service_scripts
41
- expect(host).not_to be_is_using_passenger
42
- end
43
-
44
- it "can be a foss-package host" do
45
- options['use-service'] = true
46
- expect(host).not_to be_is_pe
47
- expect(host).to be_use_service_scripts
48
- expect(host).not_to be_is_using_passenger
49
- expect(host).not_to be_graceful_restarts
50
- end
51
-
52
- it "can be a foss-packaged host using passenger" do
53
- host.uses_passenger!
54
- expect(host).not_to be_is_pe
55
- expect(host).to be_use_service_scripts
56
- expect(host).to be_is_using_passenger
57
- expect(host).to be_graceful_restarts
58
37
  end
59
38
 
60
39
  it 'can be an AIO host' do
61
40
  options['type'] = 'aio'
62
41
  expect(host).not_to be_is_pe
63
- expect(host).not_to be_use_service_scripts
64
- expect(host).not_to be_is_using_passenger
65
42
  end
66
43
 
67
44
  it 'sets the paths correctly for an AIO host' do
@@ -70,52 +47,6 @@ module Beaker
70
47
  end
71
48
  end
72
49
 
73
- describe "uses_passenger!" do
74
- it "sets passenger property" do
75
- host.uses_passenger!
76
- expect(host['passenger']).to be_truthy
77
- expect(host).to be_is_using_passenger
78
- end
79
-
80
- it "sets puppetservice" do
81
- host.uses_passenger!('servicescript')
82
- expect(host['puppetservice']).to eq('servicescript')
83
- end
84
-
85
- it "sets puppetservice to apache2 by default" do
86
- host.uses_passenger!
87
- expect(host['puppetservice']).to eq('apache2')
88
- end
89
- end
90
-
91
- describe "graceful_restarts?" do
92
- it "is true if graceful-restarts property is set true" do
93
- options['graceful-restarts'] = true
94
- expect(host).to be_graceful_restarts
95
- end
96
-
97
- it "is false if graceful-restarts property is set false" do
98
- options['graceful-restarts'] = false
99
- expect(host).not_to be_graceful_restarts
100
- end
101
-
102
- it "is false if is_pe and graceful-restarts is nil" do
103
- options['type'] = 'pe'
104
- expect(host).not_to be_graceful_restarts
105
- end
106
-
107
- it "is true if is_pe and graceful-restarts is true" do
108
- options['type'] = 'pe'
109
- options['graceful-restarts'] = true
110
- expect(host).to be_graceful_restarts
111
- end
112
-
113
- it "falls back to passenger property if not pe and graceful-restarts is nil" do
114
- host.uses_passenger!
115
- expect(host).to be_graceful_restarts
116
- end
117
- end
118
-
119
50
  describe "windows hosts" do
120
51
  describe "install_package" do
121
52
  let(:cygwin) { 'setup-x86.exe' }
@@ -123,14 +54,13 @@ module Beaker
123
54
  let(:package) { 'foo' }
124
55
 
125
56
  context "testing osarchitecture" do
126
-
127
57
  context "64 bit" do
128
58
  before do
129
59
  @platform = Beaker::Platform.new('windows-2008r2-64')
130
60
  end
131
61
 
132
62
  it "uses 64 bit cygwin" do
133
- expect( host ).to receive(:execute).with(/#{cygwin64}.*#{package}/)
63
+ expect(host).to receive(:execute).with(/#{cygwin64}.*#{package}/)
134
64
  host.install_package(package)
135
65
  end
136
66
  end
@@ -141,22 +71,20 @@ module Beaker
141
71
  end
142
72
 
143
73
  it "uses 32 bit cygwin" do
144
- expect( host ).to receive(:execute).with(/#{cygwin}.*#{package}/)
74
+ expect(host).to receive(:execute).with(/#{cygwin}.*#{package}/)
145
75
  host.install_package(package)
146
76
  end
147
77
  end
148
78
  end
149
-
150
79
  end
151
80
  end
152
81
 
153
82
  describe "#add_env_var" do
154
-
155
83
  it "does nothing if the key/value pair already exists" do
156
84
  result = Beaker::Result.new(host, '')
157
85
  result.exit_code = 0
158
- expect( Beaker::Command ).to receive(:new).with("grep ^key=.*\\/my\\/first\\/value ~/.ssh/environment")
159
- expect( host ).to receive(:exec).once.and_return(result)
86
+ expect(Beaker::Command).to receive(:new).with("grep ^key=.*\\/my\\/first\\/value ~/.ssh/environment")
87
+ expect(host).to receive(:exec).once.and_return(result)
160
88
 
161
89
  host.add_env_var('key', '/my/first/value')
162
90
  end
@@ -164,37 +92,35 @@ module Beaker
164
92
  it "adds new line to environment file if no env var of that name already exists" do
165
93
  result = Beaker::Result.new(host, '')
166
94
  result.exit_code = 1
167
- expect( Beaker::Command ).to receive(:new).with("grep ^key=.*\\/my\\/first\\/value ~/.ssh/environment")
168
- expect( host ).to receive(:exec).and_return(result)
169
- expect( Beaker::Command ).to receive(:new).with(/grep \^key= ~\/\.ssh\/environment/)
170
- expect( host ).to receive(:exec).and_return(result)
171
- expect( Beaker::Command ).to receive(:new).with("echo \"key=/my/first/value\" >> ~/.ssh/environment")
95
+ expect(Beaker::Command).to receive(:new).with("grep ^key=.*\\/my\\/first\\/value ~/.ssh/environment")
96
+ expect(host).to receive(:exec).and_return(result)
97
+ expect(Beaker::Command).to receive(:new).with(/grep \^key= ~\/\.ssh\/environment/)
98
+ expect(host).to receive(:exec).and_return(result)
99
+ expect(Beaker::Command).to receive(:new).with("echo \"key=/my/first/value\" >> ~/.ssh/environment")
172
100
  host.add_env_var('key', '/my/first/value')
173
101
  end
174
102
 
175
103
  it "updates existing line in environment file when adding additional value to existing variable" do
176
104
  result = Beaker::Result.new(host, '')
177
105
  result.exit_code = 1
178
- expect( Beaker::Command ).to receive(:new).with("grep ^key=.*\\/my\\/first\\/value ~/.ssh/environment")
179
- expect( host ).to receive(:exec).and_return(result)
106
+ expect(Beaker::Command).to receive(:new).with("grep ^key=.*\\/my\\/first\\/value ~/.ssh/environment")
107
+ expect(host).to receive(:exec).and_return(result)
180
108
  result = Beaker::Result.new(host, '')
181
109
  result.exit_code = 0
182
- expect( Beaker::Command ).to receive(:new).with(/grep \^key= ~\/\.ssh\/environment/)
183
- expect( host ).to receive(:exec).and_return(result)
184
- expect( Beaker::SedCommand ).to receive(:new).with('unix', 's/^key=/key=\\/my\\/first\\/value:/', '~/.ssh/environment')
110
+ expect(Beaker::Command).to receive(:new).with(/grep \^key= ~\/\.ssh\/environment/)
111
+ expect(host).to receive(:exec).and_return(result)
112
+ expect(Beaker::SedCommand).to receive(:new).with('unix', 's/^key=/key=\\/my\\/first\\/value:/', '~/.ssh/environment')
185
113
  host.add_env_var('key', '/my/first/value')
186
114
  end
187
-
188
115
  end
189
116
 
190
117
  describe "#delete_env_var" do
191
118
  it "deletes env var" do
192
- expect( Beaker::SedCommand ).to receive(:new).with('unix', '/key=\\/my\\/first\\/value$/d', '~/.ssh/environment')
193
- expect( Beaker::SedCommand ).to receive(:new).with("unix", "s/key=\\(.*\\)[;:]\\/my\\/first\\/value/key=\\1/", "~/.ssh/environment")
194
- expect( Beaker::SedCommand ).to receive(:new).with("unix", "s/key=\\/my\\/first\\/value[;:]/key=/", "~/.ssh/environment")
119
+ expect(Beaker::SedCommand).to receive(:new).with('unix', '/key=\\/my\\/first\\/value$/d', '~/.ssh/environment')
120
+ expect(Beaker::SedCommand).to receive(:new).with("unix", "s/key=\\(.*\\)[;:]\\/my\\/first\\/value/key=\\1/", "~/.ssh/environment")
121
+ expect(Beaker::SedCommand).to receive(:new).with("unix", "s/key=\\/my\\/first\\/value[;:]/key=/", "~/.ssh/environment")
195
122
  host.delete_env_var('key', '/my/first/value')
196
123
  end
197
-
198
124
  end
199
125
 
200
126
  describe "executing commands" do
@@ -207,33 +133,33 @@ module Beaker
207
133
  result.stderr = 'stderr'
208
134
 
209
135
  logger = double(:logger)
210
- allow( logger ).to receive(:host_output)
211
- allow( logger ).to receive(:debug)
212
- allow( logger ).to receive(:with_indent).and_yield
136
+ allow(logger).to receive(:host_output)
137
+ allow(logger).to receive(:debug)
138
+ allow(logger).to receive(:with_indent).and_yield
213
139
  host.instance_variable_set :@logger, logger
214
140
  conn = double(:connection)
215
- allow( conn ).to receive(:execute).and_return(result)
216
- allow( conn ).to receive(:ip).and_return(host['ip'])
217
- allow( conn ).to receive(:vmhostname).and_return(host['vmhostname'])
218
- allow( conn ).to receive(:hostname).and_return(host.name)
141
+ allow(conn).to receive(:execute).and_return(result)
142
+ allow(conn).to receive(:ip).and_return(host['ip'])
143
+ allow(conn).to receive(:vmhostname).and_return(host['vmhostname'])
144
+ allow(conn).to receive(:hostname).and_return(host.name)
219
145
  host.instance_variable_set :@connection, conn
220
146
  end
221
147
 
222
148
  it 'takes a command object and a hash of options' do
223
149
  result.exit_code = 0
224
- expect{ host.exec(command, {}) }.not_to raise_error
150
+ expect { host.exec(command, {}) }.not_to raise_error
225
151
  end
226
152
 
227
153
  it 'acts on the host\'s logger and connection object' do
228
154
  result.exit_code = 0
229
- expect( host.instance_variable_get(:@logger) ).to receive(:debug).at_least(:once)
230
- expect( host.instance_variable_get(:@connection) ).to receive(:execute).once
155
+ expect(host.instance_variable_get(:@logger)).to receive(:debug).at_least(:once)
156
+ expect(host.instance_variable_get(:@connection)).to receive(:execute).once
231
157
  host.exec(command)
232
158
  end
233
159
 
234
160
  it 'returns the result object' do
235
161
  result.exit_code = 0
236
- expect( host.exec(command) ).to be === result
162
+ expect(host.exec(command)).to be === result
237
163
  end
238
164
 
239
165
  it 'logs the amount of time spent executing the command' do
@@ -241,7 +167,7 @@ module Beaker
241
167
 
242
168
  expect(host.logger).to receive(:debug).with(/executed in \d\.\d{2} seconds/)
243
169
 
244
- host.exec(command,{})
170
+ host.exec(command, {})
245
171
  end
246
172
 
247
173
  it 'raises a CommandFailure when an unacceptable exit code is returned' do
@@ -255,7 +181,7 @@ module Beaker
255
181
  result.exit_code = 7
256
182
  opts = {
257
183
  :acceptable_exit_codes => [0, 1],
258
- :accept_all_exit_codes => false
184
+ :accept_all_exit_codes => false,
259
185
  }
260
186
 
261
187
  expect { host.exec(command, opts) }.to raise_error(Beaker::Host::CommandFailure)
@@ -264,10 +190,10 @@ module Beaker
264
190
  it 'does throw an error when an unacceptable exit code is returned and the accept_all_exit_codes flag is set' do
265
191
  result.exit_code = 7
266
192
  opts = {
267
- :acceptable_exit_codes => [0, 1],
268
- :accept_all_exit_codes => true
193
+ :acceptable_exit_codes => [0, 1],
194
+ :accept_all_exit_codes => true,
269
195
  }
270
- allow( host.logger ).to receive( :warn )
196
+ allow(host.logger).to receive(:warn)
271
197
 
272
198
  expect { host.exec(command, opts) }.to raise_error
273
199
  end
@@ -275,117 +201,110 @@ module Beaker
275
201
  it 'sends a warning when both :acceptable_exit_codes & :accept_all_exit_codes are set' do
276
202
  result.exit_code = 1
277
203
  opts = {
278
- :acceptable_exit_codes => [0, 1],
279
- :accept_all_exit_codes => true
204
+ :acceptable_exit_codes => [0, 1],
205
+ :accept_all_exit_codes => true,
280
206
  }
281
- expect( host.logger ).to receive( :warn ).with( /overrides/ )
207
+ expect(host.logger).to receive(:warn).with(/overrides/)
282
208
 
283
209
  expect { host.exec(command, opts) }.not_to raise_error
284
210
  end
285
211
 
286
212
  it 'explicitly closes the connection when :reset_connection is set' do
287
- expect( host ).to receive( :close )
213
+ expect(host).to receive(:close)
288
214
  expect { host.exec(command, :reset_connection => true) }.not_to raise_error
289
215
  end
290
216
 
291
217
  context "controls the result objects logging" do
292
218
  it "and passes a test if the exit_code doesn't match the default :acceptable_exit_codes of 0" do
293
219
  result.exit_code = 0
294
- expect{ host.exec(command,{}) }.not_to raise_error
220
+ expect { host.exec(command, {}) }.not_to raise_error
295
221
  end
296
222
 
297
223
  it "and fails a test if the exit_code doesn't match the default :acceptable_exit_codes of 0" do
298
224
  result.exit_code = 1
299
- expect{ host.exec(command,{}) }.to raise_error
225
+ expect { host.exec(command, {}) }.to raise_error
300
226
  end
301
227
 
302
228
  it "and passes a test if the exit_code matches :acceptable_exit_codes" do
303
229
  result.exit_code = 0
304
- expect{ host.exec(command,{:acceptable_exit_codes => 0}) }.not_to raise_error
230
+ expect { host.exec(command, { :acceptable_exit_codes => 0 }) }.not_to raise_error
305
231
  end
306
232
 
307
233
  it "and fails a test if the exit_code doesn't match :acceptable_exit_codes" do
308
234
  result.exit_code = 0
309
- expect{ host.exec(command,{:acceptable_exit_codes => 1}) }.to raise_error
235
+ expect { host.exec(command, { :acceptable_exit_codes => 1 }) }.to raise_error
310
236
  end
311
237
 
312
238
  it "and passes a test if the exit_code matches one of the :acceptable_exit_codes" do
313
239
  result.exit_code = 127
314
- expect{ host.exec(command,{:acceptable_exit_codes => [1,127]}) }.not_to raise_error
240
+ expect { host.exec(command, { :acceptable_exit_codes => [1, 127] }) }.not_to raise_error
315
241
  end
316
242
 
317
243
  it "and passes a test if the exit_code matches one of the range of :acceptable_exit_codes" do
318
244
  result.exit_code = 1
319
- expect{ host.exec(command,{:acceptable_exit_codes => (0..127)}) }.not_to raise_error
245
+ expect { host.exec(command, { :acceptable_exit_codes => (0..127) }) }.not_to raise_error
320
246
  end
321
247
  end
322
248
  end
323
249
 
324
250
  describe "#mkdir_p" do
325
-
326
251
  it "does the right thing on a bash host, identified as is_cygwin=true" do
327
- @options = {:is_cygwin => true}
252
+ @options = { :is_cygwin => true }
328
253
  @platform = 'windows'
329
254
  result = double
330
- allow( result ).to receive( :exit_code ).and_return( 0 )
331
- allow( host ).to receive( :exec ).and_return( result )
332
-
333
- expect( Beaker::Command ).to receive(:new).with("mkdir -p \"test/test/test\"")
334
- expect( host.mkdir_p('test/test/test') ).to be == true
255
+ allow(result).to receive(:exit_code).and_return(0)
256
+ allow(host).to receive(:exec).and_return(result)
335
257
 
258
+ expect(Beaker::Command).to receive(:new).with("mkdir -p \"test/test/test\"")
259
+ expect(host.mkdir_p('test/test/test')).to be == true
336
260
  end
337
261
 
338
262
  it "does the right thing on a bash host, identified as is_cygwin=nil" do
339
- @options = {:is_cygwin => nil}
263
+ @options = { :is_cygwin => nil }
340
264
  @platform = 'windows'
341
265
  result = double
342
- allow( result ).to receive( :exit_code ).and_return( 0 )
343
- allow( host ).to receive( :exec ).and_return( result )
344
-
345
- expect( Beaker::Command ).to receive(:new).with("mkdir -p \"test/test/test\"")
346
- expect( host.mkdir_p('test/test/test') ).to be == true
266
+ allow(result).to receive(:exit_code).and_return(0)
267
+ allow(host).to receive(:exec).and_return(result)
347
268
 
269
+ expect(Beaker::Command).to receive(:new).with("mkdir -p \"test/test/test\"")
270
+ expect(host.mkdir_p('test/test/test')).to be == true
348
271
  end
349
272
 
350
273
  it "does the right thing on a non-bash host, identified as is_cygwin=false (powershell)" do
351
- @options = {:is_cygwin => false}
274
+ @options = { :is_cygwin => false }
352
275
  @platform = 'windows'
353
276
  result = double
354
- allow( result ).to receive( :exit_code ).and_return( 0 )
355
- allow( host ).to receive( :exec ).and_return( result )
356
-
357
- expect( Beaker::Command ).to receive(:new).
358
- with("powershell.exe", ["-ExecutionPolicy Bypass",
359
- "-InputFormat None",
360
- "-NoLogo",
361
- "-NoProfile",
362
- "-NonInteractive",
363
- "-Command New-Item -Path 'test\\test\\test' -ItemType 'directory'"])
364
- expect( host.mkdir_p('test/test/test') ).to be == true
365
-
277
+ allow(result).to receive(:exit_code).and_return(0)
278
+ allow(host).to receive(:exec).and_return(result)
279
+
280
+ expect(Beaker::Command).to receive(:new)
281
+ .with("powershell.exe", ["-ExecutionPolicy Bypass",
282
+ "-InputFormat None",
283
+ "-NoLogo",
284
+ "-NoProfile",
285
+ "-NonInteractive",
286
+ "-Command New-Item -Path 'test\\test\\test' -ItemType 'directory'",])
287
+ expect(host.mkdir_p('test/test/test')).to be == true
366
288
  end
367
-
368
289
  end
369
290
 
370
291
  describe "#touch" do
371
-
372
292
  it "generates the right absolute command for a windows host" do
373
293
  @platform = 'windows'
374
- expect( host.touch('touched_file') ).to be == "c:\\\\windows\\\\system32\\\\cmd.exe /c echo. 2> touched_file"
294
+ expect(host.touch('touched_file')).to be == "c:\\\\windows\\\\system32\\\\cmd.exe /c echo. 2> touched_file"
375
295
  end
376
296
 
377
- ['centos','redhat'].each do |platform|
297
+ %w[centos redhat].each do |platform|
378
298
  it "generates the right absolute command for a #{platform} host" do
379
299
  @platform = platform
380
- expect( host.touch('touched_file') ).to be == "/bin/touch touched_file"
300
+ expect(host.touch('touched_file')).to be == "/bin/touch touched_file"
381
301
  end
382
302
  end
383
303
 
384
304
  it "generates the right absolute command for an osx host" do
385
305
  @platform = 'osx'
386
- expect( host.touch('touched_file') ).to be == "/usr/bin/touch touched_file"
306
+ expect(host.touch('touched_file')).to be == "/usr/bin/touch touched_file"
387
307
  end
388
-
389
308
  end
390
309
 
391
310
  context 'do_scp_to' do
@@ -397,14 +316,14 @@ module Beaker
397
316
  conn = double(:connection)
398
317
  @options = { :logger => logger }
399
318
  host.instance_variable_set :@connection, conn
400
- args = [ '/source', 'target', {} ]
319
+ args = ['/source', 'target', {}]
401
320
  conn_args = args
402
321
 
403
- expect( logger ).to receive(:trace)
404
- expect( conn ).to receive(:scp_to).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
405
- allow( conn ).to receive(:ip).and_return(host['ip'])
406
- allow( conn ).to receive(:vmhostname).and_return(host['vmhostname'])
407
- allow( conn ).to receive(:hostname).and_return(host.name)
322
+ expect(logger).to receive(:trace)
323
+ expect(conn).to receive(:scp_to).with(*conn_args).and_return(Beaker::Result.new(host, 'output!'))
324
+ allow(conn).to receive(:ip).and_return(host['ip'])
325
+ allow(conn).to receive(:vmhostname).and_return(host['vmhostname'])
326
+ allow(conn).to receive(:hostname).and_return(host.name)
408
327
 
409
328
  host.do_scp_to(*args)
410
329
  end
@@ -415,17 +334,17 @@ module Beaker
415
334
  conn = double(:connection)
416
335
  @options = { :logger => logger }
417
336
  host.instance_variable_set :@connection, conn
418
- args = [ '/source', 'target', {} ]
337
+ args = ['/source', 'target', {}]
419
338
  conn_args = args
420
339
 
421
- allow( logger ).to receive(:trace)
422
- expect( conn ).to receive(:scp_to).ordered.with(
423
- *conn_args
340
+ allow(logger).to receive(:trace)
341
+ expect(conn).to receive(:scp_to).ordered.with(
342
+ *conn_args,
424
343
  ).and_return(Beaker::Result.new(host, 'output!'))
425
- allow( conn ).to receive(:ip).and_return(host['ip'])
426
- allow( conn ).to receive(:vmhostname).and_return(host['vmhostname'])
427
- allow( conn ).to receive(:hostname).and_return(host.name)
428
- expect( host ).to receive( :scp_post_operations ).ordered
344
+ allow(conn).to receive(:ip).and_return(host['ip'])
345
+ allow(conn).to receive(:vmhostname).and_return(host['vmhostname'])
346
+ allow(conn).to receive(:hostname).and_return(host.name)
347
+ expect(host).to receive(:scp_post_operations).ordered
429
348
 
430
349
  host.do_scp_to(*args)
431
350
  end
@@ -435,24 +354,25 @@ module Beaker
435
354
  end
436
355
 
437
356
  context "using an ignore array with an absolute source path" do
438
- let( :source_path ) { '/repos/puppetlabs-inifile' }
439
- let( :target_path ) { '/etc/puppetlabs/modules/inifile' }
357
+ let(:source_path) { '/repos/puppetlabs-inifile' }
358
+ let(:target_path) { '/etc/puppetlabs/modules/inifile' }
440
359
 
441
360
  before do
442
361
  test_dir = "#{source_path}/tests"
443
362
  other_test_dir = "#{source_path}/tests2"
444
363
 
445
364
  files = [
446
- '00_EnvSetup.rb', '035_StopFirewall.rb', '05_HieraSetup.rb',
447
- '01_TestSetup.rb', '03_PuppetMasterSanity.rb',
448
- '06_InstallModules.rb','02_PuppetUserAndGroup.rb',
449
- '04_ValidateSignCert.rb', '07_InstallCACerts.rb' ]
365
+ '00_EnvSetup.rb', '035_StopFirewall.rb', '05_HieraSetup.rb',
366
+ '01_TestSetup.rb', '03_PuppetMasterSanity.rb',
367
+ '06_InstallModules.rb', '02_PuppetUserAndGroup.rb',
368
+ '04_ValidateSignCert.rb', '07_InstallCACerts.rb',
369
+ ]
450
370
 
451
- @fileset1 = files.shuffle.map {|file| test_dir + '/' + file }
452
- @fileset2 = files.shuffle.map {|file| other_test_dir + '/' + file }
371
+ @fileset1 = files.shuffle.map { |file| test_dir + '/' + file }
372
+ @fileset2 = files.shuffle.map { |file| other_test_dir + '/' + file }
453
373
 
454
- create_files( @fileset1 )
455
- create_files( @fileset2 )
374
+ create_files(@fileset1)
375
+ create_files(@fileset2)
456
376
  end
457
377
 
458
378
  it 'can take an ignore list that excludes all files and not call scp_to' do
@@ -460,11 +380,11 @@ module Beaker
460
380
  conn = double(:connection)
461
381
  @options = { :logger => logger }
462
382
  host.instance_variable_set :@connection, conn
463
- args = [ source_path, target_path, {:ignore => ['tests', 'tests2']} ]
383
+ args = [source_path, target_path, { :ignore => %w[tests tests2] }]
464
384
 
465
- expect( logger ).to receive(:trace)
466
- expect( host ).to receive( :mkdir_p ).exactly(0).times
467
- expect( conn ).to receive(:scp_to).exactly(0).times
385
+ expect(logger).to receive(:trace)
386
+ expect(host).to receive(:mkdir_p).exactly(0).times
387
+ expect(conn).to receive(:scp_to).exactly(0).times
468
388
 
469
389
  host.do_scp_to(*args)
470
390
  end
@@ -476,36 +396,36 @@ module Beaker
476
396
  conn = double(:connection)
477
397
  @options = { :logger => logger }
478
398
  host.instance_variable_set :@connection, conn
479
- args = [ source_path, target_path, {:ignore => [exclude_file], :dry_run => false} ]
399
+ args = [source_path, target_path, { :ignore => [exclude_file], :dry_run => false }]
480
400
 
481
- allow( Dir ).to receive( :glob ).and_return( @fileset1 + @fileset2 )
401
+ allow(Dir).to receive(:glob).and_return(@fileset1 + @fileset2)
482
402
 
483
- expect( logger ).to receive(:trace)
484
- expect( host ).to receive( :mkdir_p ).with("#{created_target_path}/tests")
485
- expect( host ).to receive( :mkdir_p ).with("#{created_target_path}/tests2")
403
+ expect(logger).to receive(:trace)
404
+ expect(host).to receive(:mkdir_p).with("#{created_target_path}/tests")
405
+ expect(host).to receive(:mkdir_p).with("#{created_target_path}/tests2")
486
406
 
487
407
  (@fileset1 + @fileset2).each do |file|
488
408
  if !/#{exclude_file}/.match?(file)
489
- file_args = [ file, File.join(created_target_path, File.dirname(file).gsub(source_path,'')), {:ignore => [exclude_file], :dry_run => false} ]
409
+ file_args = [file, File.join(created_target_path, File.dirname(file).gsub(source_path, '')), { :ignore => [exclude_file], :dry_run => false }]
490
410
  conn_args = file_args
491
- expect( conn ).to receive(:scp_to).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
411
+ expect(conn).to receive(:scp_to).with(*conn_args).and_return(Beaker::Result.new(host, 'output!'))
492
412
  else
493
- file_args = [ file, File.join(created_target_path, File.dirname(file).gsub(source_path,'')), {:ignore => [exclude_file], :dry_run => false} ]
413
+ file_args = [file, File.join(created_target_path, File.dirname(file).gsub(source_path, '')), { :ignore => [exclude_file], :dry_run => false }]
494
414
  conn_args = file_args
495
- expect( conn ).not_to receive(:scp_to).with( *conn_args )
415
+ expect(conn).not_to receive(:scp_to).with(*conn_args)
496
416
  end
497
417
  end
498
- allow( conn ).to receive(:ip).and_return(host['ip'])
499
- allow( conn ).to receive(:vmhostname).and_return(host['vmhostname'])
500
- allow( conn ).to receive(:hostname).and_return(host.name)
418
+ allow(conn).to receive(:ip).and_return(host['ip'])
419
+ allow(conn).to receive(:vmhostname).and_return(host['vmhostname'])
420
+ allow(conn).to receive(:hostname).and_return(host.name)
501
421
 
502
422
  host.do_scp_to(*args)
503
423
  end
504
424
  end
505
425
 
506
426
  context "using an ignore array with an absolute source path in host root" do
507
- let( :source_path ) { '/puppetlabs-inifile' }
508
- let( :target_path ) { '/etc/puppetlabs/modules/inifile' }
427
+ let(:source_path) { '/puppetlabs-inifile' }
428
+ let(:target_path) { '/etc/puppetlabs/modules/inifile' }
509
429
 
510
430
  before do
511
431
  test_dir = "#{source_path}/tests"
@@ -513,18 +433,19 @@ module Beaker
513
433
  another_test_dir = "#{source_path}/tests/tests3"
514
434
 
515
435
  files = [
516
- '00_EnvSetup.rb', '035_StopFirewall.rb', '05_HieraSetup.rb',
517
- '01_TestSetup.rb', '03_PuppetMasterSanity.rb',
518
- '06_InstallModules.rb','02_PuppetUserAndGroup.rb',
519
- '04_ValidateSignCert.rb', '07_InstallCACerts.rb' ]
520
-
521
- @fileset1 = files.shuffle.map {|file| test_dir + '/' + file }
522
- @fileset2 = files.shuffle.map {|file| other_test_dir + '/' + file }
523
- @fileset3 = files.shuffle.map {|file| another_test_dir + '/' + file }
524
-
525
- create_files( @fileset1 )
526
- create_files( @fileset2 )
527
- create_files( @fileset3 )
436
+ '00_EnvSetup.rb', '035_StopFirewall.rb', '05_HieraSetup.rb',
437
+ '01_TestSetup.rb', '03_PuppetMasterSanity.rb',
438
+ '06_InstallModules.rb', '02_PuppetUserAndGroup.rb',
439
+ '04_ValidateSignCert.rb', '07_InstallCACerts.rb',
440
+ ]
441
+
442
+ @fileset1 = files.shuffle.map { |file| test_dir + '/' + file }
443
+ @fileset2 = files.shuffle.map { |file| other_test_dir + '/' + file }
444
+ @fileset3 = files.shuffle.map { |file| another_test_dir + '/' + file }
445
+
446
+ create_files(@fileset1)
447
+ create_files(@fileset2)
448
+ create_files(@fileset3)
528
449
  end
529
450
 
530
451
  it "creates target dirs with correct path seperator" do
@@ -534,37 +455,36 @@ module Beaker
534
455
  conn = double(:connection)
535
456
  @options = { :logger => logger }
536
457
  host.instance_variable_set :@connection, conn
537
- args = [ source_path, target_path, {:ignore => [exclude_file]} ]
458
+ args = [source_path, target_path, { :ignore => [exclude_file] }]
538
459
  conn_args = args
539
460
 
540
- allow( Dir ).to receive( :glob ).and_return( @fileset1 + @fileset2 + @fileset3)
461
+ allow(Dir).to receive(:glob).and_return(@fileset1 + @fileset2 + @fileset3)
541
462
 
542
463
  created_target_path = File.join(target_path, File.basename(source_path))
543
- expect( host ).to receive( :mkdir_p ).with("#{created_target_path}/tests")
544
- expect( host ).to receive( :mkdir_p ).with("#{created_target_path}/tests/tests2")
545
- expect( host ).to receive( :mkdir_p ).with("#{created_target_path}/tests/tests3")
464
+ expect(host).to receive(:mkdir_p).with("#{created_target_path}/tests")
465
+ expect(host).to receive(:mkdir_p).with("#{created_target_path}/tests/tests2")
466
+ expect(host).to receive(:mkdir_p).with("#{created_target_path}/tests/tests3")
546
467
 
547
468
  (@fileset1 + @fileset2 + @fileset3).each do |file|
548
469
  if !/#{exclude_file}/.match?(file)
549
- file_args = [ file, File.join(created_target_path, File.dirname(file).gsub(source_path,'')), {:ignore => [exclude_file], :dry_run => false} ]
470
+ file_args = [file, File.join(created_target_path, File.dirname(file).gsub(source_path, '')), { :ignore => [exclude_file], :dry_run => false }]
550
471
  conn_args = file_args
551
- expect( conn ).to receive(:scp_to).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
472
+ expect(conn).to receive(:scp_to).with(*conn_args).and_return(Beaker::Result.new(host, 'output!'))
552
473
  else
553
- file_args = [ file, File.join(created_target_path, File.dirname(file).gsub(source_path,'')), {:ignore => [exclude_file], :dry_run => false} ]
474
+ file_args = [file, File.join(created_target_path, File.dirname(file).gsub(source_path, '')), { :ignore => [exclude_file], :dry_run => false }]
554
475
  conn_args = file_args
555
- expect( conn ).not_to receive(:scp_to).with( *conn_args )
476
+ expect(conn).not_to receive(:scp_to).with(*conn_args)
556
477
  end
557
478
  end
558
- allow( conn ).to receive(:ip).and_return(host['ip'])
559
- allow( conn ).to receive(:vmhostname).and_return(host['vmhostname'])
560
- allow( conn ).to receive(:hostname).and_return(host.name)
479
+ allow(conn).to receive(:ip).and_return(host['ip'])
480
+ allow(conn).to receive(:vmhostname).and_return(host['vmhostname'])
481
+ allow(conn).to receive(:hostname).and_return(host.name)
561
482
 
562
483
  host.do_scp_to(*args)
563
484
  end
564
485
  end
565
486
 
566
487
  context "using an ignore array" do
567
-
568
488
  before do
569
489
  test_dir = 'tmp/tests'
570
490
  other_test_dir = 'tmp/tests2'
@@ -572,14 +492,15 @@ module Beaker
572
492
  files = [
573
493
  '00_EnvSetup.rb', '035_StopFirewall.rb', '05_HieraSetup.rb',
574
494
  '01_TestSetup.rb', '03_PuppetMasterSanity.rb',
575
- '06_InstallModules.rb','02_PuppetUserAndGroup.rb',
576
- '04_ValidateSignCert.rb', '07_InstallCACerts.rb' ]
495
+ '06_InstallModules.rb', '02_PuppetUserAndGroup.rb',
496
+ '04_ValidateSignCert.rb', '07_InstallCACerts.rb',
497
+ ]
577
498
 
578
- @fileset1 = files.shuffle.map {|file| test_dir + '/' + file }
579
- @fileset2 = files.shuffle.map {|file| other_test_dir + '/' + file }
499
+ @fileset1 = files.shuffle.map { |file| test_dir + '/' + file }
500
+ @fileset2 = files.shuffle.map { |file| other_test_dir + '/' + file }
580
501
 
581
- create_files( @fileset1 )
582
- create_files( @fileset2 )
502
+ create_files(@fileset1)
503
+ create_files(@fileset2)
583
504
  end
584
505
 
585
506
  it 'can take an ignore list that excludes all files and not call scp_to' do
@@ -587,11 +508,11 @@ module Beaker
587
508
  conn = double(:connection)
588
509
  @options = { :logger => logger }
589
510
  host.instance_variable_set :@connection, conn
590
- args = [ 'tmp', 'target', {:ignore => ['tests', 'tests2']} ]
511
+ args = ['tmp', 'target', { :ignore => %w[tests tests2] }]
591
512
 
592
- expect( logger ).to receive(:trace)
593
- expect( host ).to receive( :mkdir_p ).exactly(0).times
594
- expect( conn ).to receive(:scp_to).exactly(0).times
513
+ expect(logger).to receive(:trace)
514
+ expect(host).to receive(:mkdir_p).exactly(0).times
515
+ expect(conn).to receive(:scp_to).exactly(0).times
595
516
 
596
517
  host.do_scp_to(*args)
597
518
  end
@@ -602,27 +523,27 @@ module Beaker
602
523
  conn = double(:connection)
603
524
  @options = { :logger => logger }
604
525
  host.instance_variable_set :@connection, conn
605
- args = [ 'tmp', 'target', {:ignore => [exclude_file], :dry_run => false} ]
526
+ args = ['tmp', 'target', { :ignore => [exclude_file], :dry_run => false }]
606
527
 
607
- allow( Dir ).to receive( :glob ).and_return( @fileset1 + @fileset2 )
528
+ allow(Dir).to receive(:glob).and_return(@fileset1 + @fileset2)
608
529
 
609
- expect( logger ).to receive(:trace)
610
- expect( host ).to receive( :mkdir_p ).with('target/tmp/tests')
611
- expect( host ).to receive( :mkdir_p ).with('target/tmp/tests2')
530
+ expect(logger).to receive(:trace)
531
+ expect(host).to receive(:mkdir_p).with('target/tmp/tests')
532
+ expect(host).to receive(:mkdir_p).with('target/tmp/tests2')
612
533
  (@fileset1 + @fileset2).each do |file|
613
534
  if !/#{exclude_file}/.match?(file)
614
- file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file], :dry_run => false} ]
535
+ file_args = [file, File.join('target', File.dirname(file)), { :ignore => [exclude_file], :dry_run => false }]
615
536
  conn_args = file_args
616
- expect( conn ).to receive(:scp_to).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
537
+ expect(conn).to receive(:scp_to).with(*conn_args).and_return(Beaker::Result.new(host, 'output!'))
617
538
  else
618
- file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file], :dry_run => false} ]
539
+ file_args = [file, File.join('target', File.dirname(file)), { :ignore => [exclude_file], :dry_run => false }]
619
540
  conn_args = file_args
620
- expect( conn ).not_to receive(:scp_to).with( *conn_args )
541
+ expect(conn).not_to receive(:scp_to).with(*conn_args)
621
542
  end
622
543
  end
623
- allow( conn ).to receive(:ip).and_return(host['ip'])
624
- allow( conn ).to receive(:vmhostname).and_return(host['vmhostname'])
625
- allow( conn ).to receive(:hostname).and_return(host.name)
544
+ allow(conn).to receive(:ip).and_return(host['ip'])
545
+ allow(conn).to receive(:vmhostname).and_return(host['vmhostname'])
546
+ allow(conn).to receive(:hostname).and_return(host.name)
626
547
  host.do_scp_to(*args)
627
548
  end
628
549
 
@@ -632,27 +553,27 @@ module Beaker
632
553
  conn = double(:connection)
633
554
  @options = { :logger => logger }
634
555
  host.instance_variable_set :@connection, conn
635
- args = [ 'tmp', 'target', {:ignore => [exclude_file], :dry_run => false} ]
556
+ args = ['tmp', 'target', { :ignore => [exclude_file], :dry_run => false }]
636
557
 
637
- allow( Dir ).to receive( :glob ).and_return( @fileset1 + @fileset2 )
558
+ allow(Dir).to receive(:glob).and_return(@fileset1 + @fileset2)
638
559
 
639
- expect( logger ).to receive(:trace)
640
- expect( host ).not_to receive( :mkdir_p ).with('target/tmp/tests')
641
- expect( host ).to receive( :mkdir_p ).with('target/tmp/tests2')
560
+ expect(logger).to receive(:trace)
561
+ expect(host).not_to receive(:mkdir_p).with('target/tmp/tests')
562
+ expect(host).to receive(:mkdir_p).with('target/tmp/tests2')
642
563
  (@fileset1).each do |file|
643
- file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file], :dry_run => false} ]
564
+ file_args = [file, File.join('target', File.dirname(file)), { :ignore => [exclude_file], :dry_run => false }]
644
565
  conn_args = file_args
645
- expect( conn ).not_to receive(:scp_to).with( *conn_args )
566
+ expect(conn).not_to receive(:scp_to).with(*conn_args)
646
567
  end
647
568
  (@fileset2).each do |file|
648
- file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file], :dry_run => false} ]
569
+ file_args = [file, File.join('target', File.dirname(file)), { :ignore => [exclude_file], :dry_run => false }]
649
570
  conn_args = file_args
650
- expect( conn ).to receive(:scp_to).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
571
+ expect(conn).to receive(:scp_to).with(*conn_args).and_return(Beaker::Result.new(host, 'output!'))
651
572
  end
652
573
 
653
- allow( conn ).to receive(:ip).and_return(host['ip'])
654
- allow( conn ).to receive(:vmhostname).and_return(host['vmhostname'])
655
- allow( conn ).to receive(:hostname).and_return(host.name)
574
+ allow(conn).to receive(:ip).and_return(host['ip'])
575
+ allow(conn).to receive(:vmhostname).and_return(host['vmhostname'])
576
+ allow(conn).to receive(:hostname).and_return(host.name)
656
577
  host.do_scp_to(*args)
657
578
  end
658
579
  end
@@ -664,15 +585,15 @@ module Beaker
664
585
  conn = double(:connection)
665
586
  @options = { :logger => logger }
666
587
  host.instance_variable_set :@connection, conn
667
- args = [ 'source', 'target', {} ]
588
+ args = ['source', 'target', {}]
668
589
  conn_args = args
669
590
 
670
- expect( logger ).to receive(:debug)
671
- expect( conn ).to receive(:scp_from).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
591
+ expect(logger).to receive(:debug)
592
+ expect(conn).to receive(:scp_from).with(*conn_args).and_return(Beaker::Result.new(host, 'output!'))
672
593
 
673
- allow( conn ).to receive(:ip).and_return(host['ip'])
674
- allow( conn ).to receive(:vmhostname).and_return(host['vmhostname'])
675
- allow( conn ).to receive(:hostname).and_return(host.name)
594
+ allow(conn).to receive(:ip).and_return(host['ip'])
595
+ allow(conn).to receive(:vmhostname).and_return(host['vmhostname'])
596
+ allow(conn).to receive(:hostname).and_return(host.name)
676
597
  host.do_scp_from(*args)
677
598
  end
678
599
  end
@@ -682,16 +603,16 @@ module Beaker
682
603
  create_files(['source'])
683
604
  logger = host[:logger]
684
605
  @options = { :logger => logger }
685
- args = [ 'source', 'target', {:ignore => ['.bundle']} ]
606
+ args = ['source', 'target', { :ignore => ['.bundle'] }]
686
607
 
687
608
  key = host['ssh']['keys'].first
688
- expect( File ).to receive( :exist? ).with( key ).and_return true
609
+ expect(File).to receive(:exist?).with(key).and_return true
689
610
 
690
- rsync_args = [ 'source', 'target', ['-az', "-e \"ssh -i #{key} -p 22 -o 'StrictHostKeyChecking no'\"", "--exclude '.bundle'"] ]
611
+ rsync_args = ['source', 'target', ['-az', "-e \"ssh -i #{key} -p 22 -o 'StrictHostKeyChecking no'\"", "--exclude '.bundle'"]]
691
612
 
692
- expect( host ).to receive(:reachable_name).and_return('default.ip.address')
613
+ expect(host).to receive(:reachable_name).and_return('default.ip.address')
693
614
 
694
- expect( Rsync ).to receive(:run).with( *rsync_args ).and_return(Rsync::Result.new('raw rsync output', 0))
615
+ expect(Rsync).to receive(:run).with(*rsync_args).and_return(Rsync::Result.new('raw rsync output', 0))
695
616
 
696
617
  host.do_rsync_to(*args)
697
618
 
@@ -703,24 +624,24 @@ module Beaker
703
624
  end
704
625
 
705
626
  it 'uses the ssh config file' do
706
- @options = {'ssh' => {:config => '/var/folders/v0/centos-64-x6420150625-48025-lu3u86'}}
627
+ @options = { 'ssh' => { :config => '/var/folders/v0/centos-64-x6420150625-48025-lu3u86' } }
707
628
  create_files(['source'])
708
- args = [ 'source', 'target',
709
- {:ignore => ['.bundle']} ]
629
+ args = ['source', 'target',
630
+ { :ignore => ['.bundle'] },]
710
631
  # since were using fakefs we need to create the file and directories
711
632
  FileUtils.mkdir_p('/var/folders/v0/')
712
633
  FileUtils.touch('/var/folders/v0/centos-64-x6420150625-48025-lu3u86')
713
- rsync_args = [ 'source', 'target', ['-az', "-e \"ssh -F /var/folders/v0/centos-64-x6420150625-48025-lu3u86 -o 'StrictHostKeyChecking no'\"", "--exclude '.bundle'"] ]
634
+ rsync_args = ['source', 'target', ['-az', "-e \"ssh -F /var/folders/v0/centos-64-x6420150625-48025-lu3u86 -o 'StrictHostKeyChecking no'\"", "--exclude '.bundle'"]]
714
635
  expect(Rsync).to receive(:run).with(*rsync_args).and_return(Rsync::Result.new('raw rsync output', 0))
715
636
  expect(host.do_rsync_to(*args).success?).to eq(true)
716
637
  end
717
638
 
718
639
  it 'does not use the ssh config file when config does not exist' do
719
- @options = {'ssh' => {:config => '/var/folders/v0/centos-64-x6420150625-48025-lu3u86'}}
640
+ @options = { 'ssh' => { :config => '/var/folders/v0/centos-64-x6420150625-48025-lu3u86' } }
720
641
  create_files(['source'])
721
- args = [ 'source', 'target',
722
- {:ignore => ['.bundle']} ]
723
- rsync_args = [ 'source', 'target', ['-az', "-e \"ssh -o 'StrictHostKeyChecking no'\"", "--exclude '.bundle'"] ]
642
+ args = ['source', 'target',
643
+ { :ignore => ['.bundle'] },]
644
+ rsync_args = ['source', 'target', ['-az', "-e \"ssh -o 'StrictHostKeyChecking no'\"", "--exclude '.bundle'"]]
724
645
  expect(Rsync).to receive(:run).with(*rsync_args).and_return(Rsync::Result.new('raw rsync output', 0))
725
646
  expect(host.do_rsync_to(*args).success?).to eq(true)
726
647
  end
@@ -729,10 +650,10 @@ module Beaker
729
650
  create_files(['source'])
730
651
 
731
652
  ignore_list = ['.bundle']
732
- args = ['source', 'target', {:ignore => ignore_list}]
653
+ args = ['source', 'target', { :ignore => ignore_list }]
733
654
 
734
655
  key = host['ssh']['keys'].first
735
- expect( File ).to receive( :exist? ).with( key ).twice.and_return true
656
+ expect(File).to receive(:exist?).with(key).twice.and_return true
736
657
 
737
658
  rsync_args = ['source', 'target', ['-az', "-e \"ssh -i #{key} -p 22 -o 'StrictHostKeyChecking no'\"", "--exclude '.bundle'"]]
738
659
  expect(Rsync).to receive(:run).twice.with(*rsync_args).and_return(Rsync::Result.new('raw rsync output', 0))
@@ -743,7 +664,7 @@ module Beaker
743
664
  end
744
665
 
745
666
  it 'interpolates to its "name"' do
746
- expect( "#{host}" ).to be === 'name'
667
+ expect("#{host}").to be === 'name'
747
668
  end
748
669
 
749
670
  describe 'host close' do
@@ -761,7 +682,7 @@ module Beaker
761
682
  end
762
683
 
763
684
  describe '#get_public_ip' do
764
- let(:aws) { double('AWSmock')}
685
+ let(:aws) { double('AWSmock') }
765
686
 
766
687
  it 'calls upon the ec2 instance to get the ip address' do
767
688
  host.host_hash[:hypervisor] = 'ec2'
@@ -777,7 +698,7 @@ module Beaker
777
698
 
778
699
  it 'returns nil when no matching hypervisor is found' do
779
700
  host.host_hash[:hypervisor] = 'vmpooler'
780
- expect(host.get_public_ip).to be(nil)
701
+ expect(host.get_public_ip).to be_nil
781
702
  end
782
703
 
783
704
  it 'calls execute with curl if the host_hash[:instance] is not defined for ec2 and the host is not an instance of Windows::Host' do
@@ -811,18 +732,17 @@ module Beaker
811
732
  expect(host).to receive(:execute).with("wget http://169.254.169.254/latest/meta-data/public-ipv4").and_return('127.0.0.1')
812
733
  host.get_public_ip
813
734
  end
814
-
815
735
  end
816
736
 
817
737
  describe '#ip' do
818
738
  it 'calls #get_ip when get_public_ip returns nil' do
819
- allow( host ).to receive(:get_public_ip).and_return(nil)
739
+ allow(host).to receive(:get_public_ip).and_return(nil)
820
740
  expect(host).to receive(:get_ip).and_return('127.0.0.2')
821
741
  expect(host.ip).to eq('127.0.0.2')
822
742
  end
823
743
 
824
744
  it 'does not call get_ip when #get_public_ip returns an address' do
825
- allow( host ).to receive(:get_public_ip).and_return('127.0.0.1')
745
+ allow(host).to receive(:get_public_ip).and_return('127.0.0.1')
826
746
  expect(host).not_to receive(:get_ip)
827
747
  expect(host.ip).to eq('127.0.0.1')
828
748
  end
@@ -847,7 +767,7 @@ module Beaker
847
767
  expect(host.fips_mode?).to be false
848
768
  end
849
769
 
850
- platforms = ['el-7', 'el-8', 'centos']
770
+ platforms = %w[el-7 el-8 centos]
851
771
 
852
772
  platforms.each do |platform|
853
773
  context "on #{platform}" do