beaker 4.39.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (217) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +9 -0
  3. data/.github/workflows/release.yml +2 -2
  4. data/.github/workflows/test.yml +26 -13
  5. data/.rubocop.yml +23 -10
  6. data/.rubocop_todo.yml +34 -10
  7. data/CHANGELOG.md +16 -0
  8. data/Gemfile +12 -7
  9. data/Rakefile +99 -111
  10. data/acceptance/config/acceptance-options.rb +1 -1
  11. data/acceptance/config/base/acceptance-options.rb +2 -2
  12. data/acceptance/config/hypervisor/acceptance-options.rb +2 -2
  13. data/acceptance/config/subcommands/acceptance-options.rb +2 -2
  14. data/acceptance/fixtures/module/Rakefile +1 -1
  15. data/acceptance/fixtures/module/spec/acceptance/demo_spec.rb +8 -12
  16. data/acceptance/fixtures/module/spec/classes/init_spec.rb +0 -1
  17. data/acceptance/fixtures/module/spec/spec_helper_acceptance.rb +3 -5
  18. data/acceptance/lib/helpers/test_helper.rb +4 -3
  19. data/acceptance/pre_suite/subcommands/05_install_ruby.rb +2 -3
  20. data/acceptance/pre_suite/subcommands/08_install_beaker.rb +1 -2
  21. data/acceptance/tests/base/dsl/helpers/configuration_test.rb +4 -4
  22. data/acceptance/tests/base/dsl/helpers/hocon_helpers_test.rb +1 -2
  23. data/acceptance/tests/base/dsl/helpers/host_helpers/add_system32_hosts_entry_test.rb +0 -3
  24. data/acceptance/tests/base/dsl/helpers/host_helpers/archive_file_from_test.rb +3 -1
  25. data/acceptance/tests/base/dsl/helpers/host_helpers/backup_the_file_test.rb +9 -9
  26. data/acceptance/tests/base/dsl/helpers/host_helpers/check_for_package_test.rb +0 -4
  27. data/acceptance/tests/base/dsl/helpers/host_helpers/create_remote_file_test.rb +19 -26
  28. data/acceptance/tests/base/dsl/helpers/host_helpers/curl_on_test.rb +2 -2
  29. data/acceptance/tests/base/dsl/helpers/host_helpers/curl_with_retries_test.rb +0 -1
  30. data/acceptance/tests/base/dsl/helpers/host_helpers/on_test.rb +18 -13
  31. data/acceptance/tests/base/dsl/helpers/host_helpers/retry_on_test.rb +3 -3
  32. data/acceptance/tests/base/dsl/helpers/host_helpers/rsync_to_test.rb +22 -27
  33. data/acceptance/tests/base/dsl/helpers/host_helpers/run_cron_on_test.rb +12 -16
  34. data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_on_test.rb +3 -4
  35. data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_test.rb +3 -3
  36. data/acceptance/tests/base/dsl/helpers/host_helpers/scp_from_test.rb +4 -4
  37. data/acceptance/tests/base/dsl/helpers/host_helpers/scp_to_test.rb +3 -4
  38. data/acceptance/tests/base/dsl/helpers/host_helpers/shell_test.rb +5 -5
  39. data/acceptance/tests/base/dsl/helpers/host_helpers/upgrade_package_test.rb +3 -5
  40. data/acceptance/tests/base/dsl/platform_tag_confiner_test.rb +14 -17
  41. data/acceptance/tests/base/dsl/structure_test.rb +5 -11
  42. data/acceptance/tests/base/host/file_test.rb +2 -2
  43. data/acceptance/tests/base/host/group_test.rb +0 -1
  44. data/acceptance/tests/base/host/host_test.rb +66 -63
  45. data/acceptance/tests/base/host/packages.rb +1 -2
  46. data/acceptance/tests/base/host/packages_unix.rb +0 -55
  47. data/acceptance/tests/base/host/user_test.rb +0 -1
  48. data/acceptance/tests/base/host_prebuilt_steps/ssh_environment_test.rb +1 -2
  49. data/acceptance/tests/base/test_suite/export.rb +6 -9
  50. data/acceptance/tests/install/from_file.rb +2 -4
  51. data/acceptance/tests/load_path_bootstrap.rb +1 -1
  52. data/acceptance/tests/subcommands/destroy.rb +19 -21
  53. data/acceptance/tests/subcommands/exec.rb +0 -1
  54. data/acceptance/tests/subcommands/init.rb +2 -3
  55. data/acceptance/tests/subcommands/provision.rb +0 -1
  56. data/beaker.gemspec +4 -8
  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 -27
  70. data/lib/beaker/dsl/helpers.rb +2 -4
  71. data/lib/beaker/dsl/outcomes.rb +13 -15
  72. data/lib/beaker/dsl/patterns.rb +1 -3
  73. data/lib/beaker/dsl/roles.rb +17 -20
  74. data/lib/beaker/dsl/structure.rb +53 -65
  75. data/lib/beaker/dsl/test_tagging.rb +7 -10
  76. data/lib/beaker/dsl/wrappers.rb +15 -16
  77. data/lib/beaker/dsl.rb +2 -3
  78. data/lib/beaker/host/aix/exec.rb +1 -1
  79. data/lib/beaker/host/aix/file.rb +0 -1
  80. data/lib/beaker/host/aix/group.rb +1 -1
  81. data/lib/beaker/host/aix/user.rb +1 -1
  82. data/lib/beaker/host/aix.rb +3 -4
  83. data/lib/beaker/host/cisco.rb +27 -39
  84. data/lib/beaker/host/eos.rb +4 -30
  85. data/lib/beaker/host/freebsd/exec.rb +1 -1
  86. data/lib/beaker/host/freebsd/pkg.rb +3 -3
  87. data/lib/beaker/host/freebsd.rb +9 -12
  88. data/lib/beaker/host/mac/exec.rb +4 -4
  89. data/lib/beaker/host/mac/group.rb +7 -7
  90. data/lib/beaker/host/mac/pkg.rb +3 -106
  91. data/lib/beaker/host/mac/user.rb +2 -2
  92. data/lib/beaker/host/mac.rb +8 -9
  93. data/lib/beaker/host/pswindows/exec.rb +66 -70
  94. data/lib/beaker/host/pswindows/file.rb +3 -5
  95. data/lib/beaker/host/pswindows/group.rb +3 -3
  96. data/lib/beaker/host/pswindows/pkg.rb +12 -12
  97. data/lib/beaker/host/pswindows/user.rb +3 -3
  98. data/lib/beaker/host/pswindows.rb +4 -3
  99. data/lib/beaker/host/unix/exec.rb +80 -82
  100. data/lib/beaker/host/unix/file.rb +38 -43
  101. data/lib/beaker/host/unix/group.rb +1 -1
  102. data/lib/beaker/host/unix/pkg.rb +154 -417
  103. data/lib/beaker/host/unix/user.rb +2 -2
  104. data/lib/beaker/host/unix.rb +8 -11
  105. data/lib/beaker/host/windows/exec.rb +17 -17
  106. data/lib/beaker/host/windows/file.rb +3 -3
  107. data/lib/beaker/host/windows/group.rb +3 -3
  108. data/lib/beaker/host/windows/pkg.rb +3 -54
  109. data/lib/beaker/host/windows/user.rb +3 -3
  110. data/lib/beaker/host/windows.rb +12 -12
  111. data/lib/beaker/host.rb +76 -133
  112. data/lib/beaker/host_prebuilt_steps.rb +93 -198
  113. data/lib/beaker/hypervisor/noop.rb +2 -4
  114. data/lib/beaker/hypervisor.rb +44 -61
  115. data/lib/beaker/local_connection.rb +2 -4
  116. data/lib/beaker/logger.rb +68 -76
  117. data/lib/beaker/logger_junit.rb +21 -25
  118. data/lib/beaker/network_manager.rb +39 -42
  119. data/lib/beaker/options/command_line_parser.rb +12 -23
  120. data/lib/beaker/options/hosts_file_parser.rb +16 -24
  121. data/lib/beaker/options/options_file_parser.rb +3 -6
  122. data/lib/beaker/options/options_hash.rb +2 -7
  123. data/lib/beaker/options/parser.rb +86 -102
  124. data/lib/beaker/options/presets.rb +114 -123
  125. data/lib/beaker/options/subcommand_options_file_parser.rb +3 -6
  126. data/lib/beaker/options/validator.rb +26 -31
  127. data/lib/beaker/perf.rb +22 -27
  128. data/lib/beaker/platform.rb +38 -46
  129. data/lib/beaker/result.rb +7 -6
  130. data/lib/beaker/shared/error_handler.rb +8 -10
  131. data/lib/beaker/shared/fog_credentials.rb +5 -9
  132. data/lib/beaker/shared/host_manager.rb +36 -41
  133. data/lib/beaker/shared/options_resolver.rb +3 -7
  134. data/lib/beaker/shared/repetition.rb +2 -4
  135. data/lib/beaker/shared/semvar.rb +37 -41
  136. data/lib/beaker/shared/timed.rb +0 -3
  137. data/lib/beaker/shared.rb +1 -1
  138. data/lib/beaker/ssh_connection.rb +38 -47
  139. data/lib/beaker/subcommand.rb +17 -24
  140. data/lib/beaker/subcommands/subcommand_util.rb +4 -4
  141. data/lib/beaker/tasks/quick_start.rb +4 -9
  142. data/lib/beaker/tasks/rake_task.rb +25 -27
  143. data/lib/beaker/tasks/test.rb +4 -4
  144. data/lib/beaker/test_case.rb +15 -27
  145. data/lib/beaker/test_suite.rb +35 -39
  146. data/lib/beaker/test_suite_result.rb +45 -47
  147. data/lib/beaker/version.rb +1 -1
  148. data/lib/beaker.rb +5 -6
  149. data/spec/beaker/cli_spec.rb +121 -142
  150. data/spec/beaker/command_spec.rb +55 -59
  151. data/spec/beaker/dsl/assertions_spec.rb +36 -36
  152. data/spec/beaker/dsl/helpers/host_helpers_spec.rb +110 -131
  153. data/spec/beaker/dsl/helpers/test_helpers_spec.rb +9 -10
  154. data/spec/beaker/dsl/helpers/web_helpers_spec.rb +28 -34
  155. data/spec/beaker/dsl/outcomes_spec.rb +14 -14
  156. data/spec/beaker/dsl/roles_spec.rb +125 -130
  157. data/spec/beaker/dsl/structure_spec.rb +169 -158
  158. data/spec/beaker/dsl/test_tagging_spec.rb +89 -90
  159. data/spec/beaker/dsl/wrappers_spec.rb +32 -33
  160. data/spec/beaker/host/aix_spec.rb +14 -14
  161. data/spec/beaker/host/cisco_spec.rb +84 -94
  162. data/spec/beaker/host/eos_spec.rb +15 -36
  163. data/spec/beaker/host/freebsd/exec_spec.rb +3 -6
  164. data/spec/beaker/host/freebsd/pkg_spec.rb +24 -27
  165. data/spec/beaker/host/mac/exec_spec.rb +2 -3
  166. data/spec/beaker/host/mac/group_spec.rb +47 -56
  167. data/spec/beaker/host/mac/user_spec.rb +53 -62
  168. data/spec/beaker/host/pswindows/exec_spec.rb +30 -32
  169. data/spec/beaker/host/pswindows/file_spec.rb +16 -16
  170. data/spec/beaker/host/pswindows/user_spec.rb +17 -23
  171. data/spec/beaker/host/pswindows_spec.rb +13 -13
  172. data/spec/beaker/host/unix/exec_spec.rb +75 -80
  173. data/spec/beaker/host/unix/file_spec.rb +66 -73
  174. data/spec/beaker/host/unix/pkg_spec.rb +155 -401
  175. data/spec/beaker/host/unix_spec.rb +11 -207
  176. data/spec/beaker/host/windows/exec_spec.rb +30 -32
  177. data/spec/beaker/host/windows/file_spec.rb +18 -19
  178. data/spec/beaker/host/windows/group_spec.rb +10 -12
  179. data/spec/beaker/host/windows/pkg_spec.rb +6 -9
  180. data/spec/beaker/host/windows/user_spec.rb +17 -23
  181. data/spec/beaker/host/windows_spec.rb +39 -39
  182. data/spec/beaker/host_prebuilt_steps_spec.rb +172 -326
  183. data/spec/beaker/host_spec.rb +204 -284
  184. data/spec/beaker/hypervisor/hypervisor_spec.rb +36 -61
  185. data/spec/beaker/localhost_connection_spec.rb +10 -11
  186. data/spec/beaker/logger_junit_spec.rb +19 -30
  187. data/spec/beaker/logger_spec.rb +153 -136
  188. data/spec/beaker/network_manager_spec.rb +23 -23
  189. data/spec/beaker/options/command_line_parser_spec.rb +20 -23
  190. data/spec/beaker/options/hosts_file_parser_spec.rb +30 -32
  191. data/spec/beaker/options/options_file_parser_spec.rb +4 -7
  192. data/spec/beaker/options/options_hash_spec.rb +4 -6
  193. data/spec/beaker/options/parser_spec.rb +167 -167
  194. data/spec/beaker/options/presets_spec.rb +7 -9
  195. data/spec/beaker/options/subcommand_options_parser_spec.rb +13 -14
  196. data/spec/beaker/options/validator_spec.rb +10 -11
  197. data/spec/beaker/perf_spec.rb +18 -21
  198. data/spec/beaker/platform_spec.rb +25 -36
  199. data/spec/beaker/shared/error_handler_spec.rb +7 -16
  200. data/spec/beaker/shared/fog_credentials_spec.rb +29 -29
  201. data/spec/beaker/shared/host_manager_spec.rb +50 -84
  202. data/spec/beaker/shared/options_resolver_spec.rb +9 -12
  203. data/spec/beaker/shared/repetition_spec.rb +17 -24
  204. data/spec/beaker/shared/semvar_spec.rb +21 -26
  205. data/spec/beaker/ssh_connection_spec.rb +76 -83
  206. data/spec/beaker/subcommand/subcommand_util_spec.rb +31 -33
  207. data/spec/beaker/subcommand_spec.rb +75 -77
  208. data/spec/beaker/test_case_spec.rb +25 -50
  209. data/spec/beaker/test_suite_spec.rb +147 -154
  210. data/spec/helpers.rb +48 -53
  211. data/spec/matchers.rb +8 -7
  212. data/spec/mocks.rb +1 -6
  213. data/spec/spec_helper.rb +0 -1
  214. metadata +12 -37
  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
@@ -2,199 +2,165 @@ require 'spec_helper'
2
2
 
3
3
  module Beaker
4
4
  module Shared
5
-
6
5
  config = RSpec::Mocks.configuration
7
6
 
8
7
  config.patch_marshal_to_support_partial_doubles = true
9
8
 
10
9
  describe HostManager do
11
10
  # The logger double as nil object doesn't work with marshal.load and marshal.unload needed for run_in_parallel.
12
- let( :logger ) { double('logger') }
13
- let( :host_handler ) { described_class }
14
- let( :spec_block ) { Proc.new { |arr| arr } }
15
- let( :platform ) { @platform || 'unix' }
16
- let( :role0 ) { "role0" }
17
- let( :role1 ) { :role1 }
18
- let( :role2 ) { :role2 }
19
- let( :hosts ) { hosts = make_hosts( { :platform => platform } )
20
- hosts[0][:roles] = ['agent', role0]
21
- hosts[1][:roles] = ['master', 'dashboard', 'agent', 'database', role1]
22
- hosts[2][:roles] = ['agent', role2]
23
- hosts }
11
+ let(:logger) { double('logger') }
12
+ let(:host_handler) { described_class }
13
+ let(:spec_block) { Proc.new { |arr| arr } }
14
+ let(:platform) { @platform || 'unix' }
15
+ let(:role0) { "role0" }
16
+ let(:role1) { :role1 }
17
+ let(:role2) { :role2 }
18
+ let(:hosts) do
19
+ hosts = make_hosts({ :platform => platform })
20
+ hosts[0][:roles] = ['agent', role0]
21
+ hosts[1][:roles] = ['master', 'dashboard', 'agent', 'database', role1]
22
+ hosts[2][:roles] = ['agent', role2]
23
+ hosts
24
+ end
24
25
 
25
26
  describe "#hosts_with_name" do
26
-
27
27
  it "can identify the host by name" do
28
-
29
- expect( host_handler.hosts_with_name( hosts, 'vm1' )).to be === [hosts[0]]
30
-
28
+ expect(host_handler.hosts_with_name(hosts, 'vm1')).to be === [hosts[0]]
31
29
  end
32
30
 
33
31
  it "can identify the host by vmhostname" do
32
+ hosts[0][:vmhostname] = 'myname.whatever'
34
33
 
35
- hosts[0][:vmhostname] = 'myname.whatever'
36
-
37
- expect( host_handler.hosts_with_name( hosts, 'myname.whatever' )).to be === [hosts[0]]
38
-
34
+ expect(host_handler.hosts_with_name(hosts, 'myname.whatever')).to be === [hosts[0]]
39
35
  end
40
36
 
41
37
  it "can identify the host by ip" do
38
+ hosts[0][:ip] = '0.0.0.0'
42
39
 
43
- hosts[0][:ip] = '0.0.0.0'
44
-
45
- expect( host_handler.hosts_with_name( hosts, '0.0.0.0' )).to be === [hosts[0]]
46
-
40
+ expect(host_handler.hosts_with_name(hosts, '0.0.0.0')).to be === [hosts[0]]
47
41
  end
48
42
 
49
43
  it "returns [] when no match is found in a set of hosts" do
44
+ hosts[0][:ip] = '0.0.0.0'
45
+ hosts[0][:vmhostname] = 'myname.whatever'
50
46
 
51
- hosts[0][:ip] = '0.0.0.0'
52
- hosts[0][:vmhostname] = 'myname.whatever'
53
-
54
- expect( host_handler.hosts_with_name( hosts, 'surprise' )).to be === []
55
-
47
+ expect(host_handler.hosts_with_name(hosts, 'surprise')).to be === []
56
48
  end
57
-
58
-
59
-
60
49
  end
61
50
 
62
51
  describe "#hosts_with_role" do
63
52
  it "can find the master in a set of hosts" do
64
-
65
- expect( host_handler.hosts_with_role( hosts, 'master' ) ).to be === [hosts[1]]
66
-
53
+ expect(host_handler.hosts_with_role(hosts, 'master')).to be === [hosts[1]]
67
54
  end
68
55
 
69
56
  it "can find all agents in a set of hosts" do
70
-
71
- expect( host_handler.hosts_with_role( hosts, 'agent' ) ).to be === hosts
72
-
57
+ expect(host_handler.hosts_with_role(hosts, 'agent')).to be === hosts
73
58
  end
74
59
 
75
60
  it "returns [] when no match is found in a set of hosts" do
76
-
77
- expect( host_handler.hosts_with_role( hosts, 'surprise' ) ).to be === []
78
-
61
+ expect(host_handler.hosts_with_role(hosts, 'surprise')).to be === []
79
62
  end
80
-
81
63
  end
82
64
 
83
65
  describe "#only_host_with_role" do
84
66
  it "can find the single master in a set of hosts" do
85
-
86
- expect( host_handler.only_host_with_role( hosts, 'master' ) ).to be === hosts[1]
87
-
67
+ expect(host_handler.only_host_with_role(hosts, 'master')).to be === hosts[1]
88
68
  end
89
69
 
90
70
  it "throws an error when more than one host with matching role is found" do
91
-
92
- expect{ host_handler.only_host_with_role( hosts, 'agent' ) }.to raise_error(ArgumentError)
93
-
71
+ expect { host_handler.only_host_with_role(hosts, 'agent') }.to raise_error(ArgumentError)
94
72
  end
95
73
 
96
74
  it "throws an error when no host is found matching the role" do
97
-
98
- expect{ host_handler.only_host_with_role( hosts, 'surprise' ) }.to raise_error(ArgumentError)
99
-
75
+ expect { host_handler.only_host_with_role(hosts, 'surprise') }.to raise_error(ArgumentError)
100
76
  end
101
77
 
102
78
  it "throws an error when role = nil" do
103
- expect{ host_handler.find_at_most_one_host_with_role( hosts, nil ) }.to raise_error(ArgumentError)
79
+ expect { host_handler.find_at_most_one_host_with_role(hosts, nil) }.to raise_error(ArgumentError)
104
80
  end
105
81
  end
106
82
 
107
83
  describe "#find_at_most_one_host_with_role" do
108
84
  it "can find the single master in a set of hosts" do
109
-
110
- expect( host_handler.find_at_most_one_host_with_role( hosts, 'master' ) ).to be === hosts[1]
111
-
85
+ expect(host_handler.find_at_most_one_host_with_role(hosts, 'master')).to be === hosts[1]
112
86
  end
113
87
 
114
88
  it "throws an error when more than one host with matching role is found" do
115
-
116
- expect{ host_handler.find_at_most_one_host_with_role( hosts, 'agent' ) }.to raise_error(ArgumentError)
117
-
89
+ expect { host_handler.find_at_most_one_host_with_role(hosts, 'agent') }.to raise_error(ArgumentError)
118
90
  end
119
91
 
120
92
  it "returns nil when no host is found matching the role" do
121
-
122
- expect( host_handler.find_at_most_one_host_with_role( hosts, 'surprise' ) ).to be_nil
123
-
93
+ expect(host_handler.find_at_most_one_host_with_role(hosts, 'surprise')).to be_nil
124
94
  end
125
95
 
126
96
  it "throws an error when role = nil" do
127
- expect{ host_handler.find_at_most_one_host_with_role( hosts, nil ) }.to raise_error(ArgumentError)
97
+ expect { host_handler.find_at_most_one_host_with_role(hosts, nil) }.to raise_error(ArgumentError)
128
98
  end
129
99
  end
130
100
 
131
101
  describe "#run_block_on" do
132
102
  it "can execute a block against hosts identified by a string" do
133
- myhosts = host_handler.run_block_on( hosts, role0 ) do |hosts|
103
+ myhosts = host_handler.run_block_on(hosts, role0) do |hosts|
134
104
  hosts
135
105
  end
136
- expect( myhosts ).to be === hosts[0]
106
+ expect(myhosts).to be === hosts[0]
137
107
  end
138
108
 
139
109
  it "can execute a block against hosts identified by a hostname" do
140
- myhosts = host_handler.run_block_on( hosts, hosts[0].name ) do |hosts|
110
+ myhosts = host_handler.run_block_on(hosts, hosts[0].name) do |hosts|
141
111
  hosts
142
112
  end
143
- expect( myhosts ).to be === hosts[0]
113
+ expect(myhosts).to be === hosts[0]
144
114
  end
145
115
 
146
116
  it "can execute a block against an array of hosts" do
147
- myhosts = host_handler.run_block_on( hosts ) do |hosts|
117
+ myhosts = host_handler.run_block_on(hosts) do |hosts|
148
118
  hosts
149
119
  end
150
- expect( myhosts ).to be === hosts
120
+ expect(myhosts).to be === hosts
151
121
  end
152
122
 
153
123
  it "can execute a block against an array of hosts in parallel" do
154
124
  InParallel::InParallelExecutor.logger = Logger.new(STDOUT)
155
125
  FakeFS.deactivate!
156
126
 
157
- expect( InParallel::InParallelExecutor ).to receive(:_execute_in_parallel).with(any_args).and_call_original.exactly(3).times
127
+ expect(InParallel::InParallelExecutor).to receive(:_execute_in_parallel).with(any_args).and_call_original.exactly(3).times
158
128
 
159
- myhosts = host_handler.run_block_on( hosts, nil, { :run_in_parallel => true } ) do |host|
129
+ myhosts = host_handler.run_block_on(hosts, nil, { :run_in_parallel => true }) do |host|
160
130
  # kind of hacky workaround to remove logger which contains a singleton method injected by rspec
161
-
162
- host.instance_eval("remove_instance_variable(:@logger)")
131
+ host.send(:remove_instance_variable, :@logger)
163
132
  host
164
133
  end
165
134
 
166
135
  # After marshal load and marshal unload, the logger option (an rspec double) is no longer 'equal' to the original.
167
136
  # Array of results can be in different order.
168
- new_host = myhosts.find{ |host| host.name == hosts[0].name}
169
- hosts[0].options.each { |option|
137
+ new_host = myhosts.find { |host| host.name == hosts[0].name }
138
+ hosts[0].options.each do |option|
170
139
  expect(option[1]).to eq(new_host.options[option[0]]) unless option[0] == :logger
171
- }
140
+ end
172
141
  end
173
142
 
174
143
  it "will ignore run_in_parallel global option" do
175
- myhosts = host_handler.run_block_on( hosts, nil, { :run_in_parallel => [] } ) do |host|
144
+ myhosts = host_handler.run_block_on(hosts, nil, { :run_in_parallel => [] }) do |host|
176
145
  host
177
146
  end
178
- expect( InParallel::InParallelExecutor ).not_to receive(:_execute_in_parallel).with(any_args)
147
+ expect(InParallel::InParallelExecutor).not_to receive(:_execute_in_parallel).with(any_args)
179
148
  expect(myhosts).to eq(hosts)
180
149
  end
181
150
 
182
151
  it "does not run in parallel if there is only 1 host in the array" do
183
- myhosts = host_handler.run_block_on( [hosts[0]], nil, { :run_in_parallel => true } ) do |host|
152
+ myhosts = host_handler.run_block_on([hosts[0]], nil, { :run_in_parallel => true }) do |host|
184
153
  puts host
185
154
  host
186
155
  end
187
156
 
188
- expect( myhosts ).to be === [hosts[0]]
157
+ expect(myhosts).to be === [hosts[0]]
189
158
  end
190
159
 
191
160
  it "receives an ArgumentError on empty host" do
192
- expect { host_handler.run_block_on( [], role0 ) }.to raise_error(ArgumentError)
161
+ expect { host_handler.run_block_on([], role0) }.to raise_error(ArgumentError)
193
162
  end
194
-
195
163
  end
196
-
197
164
  end
198
-
199
165
  end
200
166
  end
@@ -3,45 +3,42 @@ require 'spec_helper'
3
3
  module Beaker
4
4
  module Shared
5
5
  describe OptionsResolver do
6
-
7
6
  describe 'run_in_parallel?' do
8
-
9
7
  it 'returns true if :run_in_parallel in opts is true' do
10
- expect( subject.run_in_parallel?({:run_in_parallel => true}, nil, nil) ).to be === true
8
+ expect(subject.run_in_parallel?({ :run_in_parallel => true }, nil, nil)).to be === true
11
9
  end
12
10
 
13
11
  it 'returns false if :run_in_parallel in opts is false' do
14
- expect( subject.run_in_parallel?({:run_in_parallel => false}, nil, nil) ).to be === false
12
+ expect(subject.run_in_parallel?({ :run_in_parallel => false }, nil, nil)).to be === false
15
13
  end
16
14
 
17
15
  it 'returns false if :run_in_parallel in opts is an empty array' do
18
- expect( subject.run_in_parallel?({:run_in_parallel => []}, nil, nil) ).to be === false
16
+ expect(subject.run_in_parallel?({ :run_in_parallel => [] }, nil, nil)).to be === false
19
17
  end
20
18
 
21
19
  it 'returns false if :run_in_parallel in opts is an empty array but a mode is specified in options' do
22
- expect( subject.run_in_parallel?({:run_in_parallel => []}, {:run_in_parallel => ['install']}, 'install') ).to be === false
20
+ expect(subject.run_in_parallel?({ :run_in_parallel => [] }, { :run_in_parallel => ['install'] }, 'install')).to be === false
23
21
  end
24
22
 
25
23
  it 'returns true if opts is nil but a matching mode is specified in options' do
26
- expect( subject.run_in_parallel?(nil, {:run_in_parallel => ['install']}, 'install') ).to be === true
24
+ expect(subject.run_in_parallel?(nil, { :run_in_parallel => ['install'] }, 'install')).to be === true
27
25
  end
28
26
 
29
27
  it 'returns false if opts is nil and a non matching mode is specified in options' do
30
- expect( subject.run_in_parallel?(nil, {:run_in_parallel => ['configure']}, 'install') ).to be === false
28
+ expect(subject.run_in_parallel?(nil, { :run_in_parallel => ['configure'] }, 'install')).to be === false
31
29
  end
32
30
 
33
31
  it 'returns true if opts is nil and a matching mode and a non matching mode is specified in options' do
34
- expect( subject.run_in_parallel?(nil, {:run_in_parallel => ['configure', 'install']}, 'install') ).to be === true
32
+ expect(subject.run_in_parallel?(nil, { :run_in_parallel => %w[configure install] }, 'install')).to be === true
35
33
  end
36
34
 
37
35
  it 'returns false if opts is nil and no mode is specified in options' do
38
- expect( subject.run_in_parallel?(nil, {:run_in_parallel => []}, 'install') ).to be === false
36
+ expect(subject.run_in_parallel?(nil, { :run_in_parallel => [] }, 'install')).to be === false
39
37
  end
40
38
 
41
39
  it 'returns false if opts is false but a matching mode is specified in options' do
42
- expect( subject.run_in_parallel?({:run_in_parallel => false}, {:run_in_parallel => ['install']}, 'install') ).to be === false
40
+ expect(subject.run_in_parallel?({ :run_in_parallel => false }, { :run_in_parallel => ['install'] }, 'install')).to be === false
43
41
  end
44
-
45
42
  end
46
43
  end
47
44
  end
@@ -3,54 +3,51 @@ require 'spec_helper'
3
3
  module Beaker
4
4
  module Shared
5
5
  describe Repetition do
6
-
7
6
  describe '#repeat_for' do
8
7
  it "repeats a block for 5 seconds" do
9
- allow( Time ).to receive( :now ).and_return( 0, 1, 2, 3, 4, 5, 6 )
8
+ allow(Time).to receive(:now).and_return(0, 1, 2, 3, 4, 5, 6)
10
9
 
11
- block = double( 'block' )
12
- expect( block ).to receive( :exec ).exactly( 5 ).times.and_return( false )
10
+ block = double('block')
11
+ expect(block).to receive(:exec).exactly(5).times.and_return(false)
13
12
 
14
- subject.repeat_for( 5 ) do
13
+ subject.repeat_for(5) do
15
14
  block.exec
16
15
  end
17
16
  end
18
17
 
19
18
  it "shorts circuit if the block is complete" do
20
- allow( Time ).to receive( :now ).and_return( 0, 1, 2, 3, 4, 5 )
19
+ allow(Time).to receive(:now).and_return(0, 1, 2, 3, 4, 5)
21
20
 
22
- block = double( 'block' )
23
- expect( block ).to receive( :exec ).once.and_return( true )
21
+ block = double('block')
22
+ expect(block).to receive(:exec).once.and_return(true)
24
23
 
25
- subject.repeat_for( 5 ) do
24
+ subject.repeat_for(5) do
26
25
  block.exec
27
26
  end
28
-
29
27
  end
30
-
31
28
  end
32
29
 
33
30
  describe '#repeat_fibonacci_style_for' do
34
31
  let(:block) { double("block") }
35
32
 
36
33
  it "sleeps in fibonacci increasing intervals" do
37
- expect( block ).to receive( :exec ).exactly( 5 ).times.and_return( false )
38
- allow( subject ).to receive( 'sleep' ).and_return( true )
34
+ expect(block).to receive(:exec).exactly(5).times.and_return(false)
35
+ allow(subject).to receive('sleep').and_return(true)
39
36
 
40
- expect( subject ).to receive( :sleep ).with( 1 ).twice
41
- expect( subject ).to receive( :sleep ).with( 2 ).once
42
- expect( subject ).to receive( :sleep ).with( 3 ).once
43
- expect( subject ).to receive( :sleep ).with( 5 ).once
44
- expect( subject ).not_to receive( :sleep ).with( 8 )
37
+ expect(subject).to receive(:sleep).with(1).twice
38
+ expect(subject).to receive(:sleep).with(2).once
39
+ expect(subject).to receive(:sleep).with(3).once
40
+ expect(subject).to receive(:sleep).with(5).once
41
+ expect(subject).not_to receive(:sleep).with(8)
45
42
 
46
- subject.repeat_fibonacci_style_for( 5 ) do
43
+ subject.repeat_fibonacci_style_for(5) do
47
44
  block.exec
48
45
  end
49
46
  end
50
47
 
51
48
  it "shorts circuit if the block succeeds (returns true)" do
52
49
  expect(block).to receive(:exec).and_return(false).ordered.exactly(4).times
53
- expect(block).to receive(:exec).and_return( true).ordered.once
50
+ expect(block).to receive(:exec).and_return(true).ordered.once
54
51
 
55
52
  expect(subject).to receive(:sleep).with(1).twice
56
53
  expect(subject).to receive(:sleep).with(2).once
@@ -84,11 +81,7 @@ module Beaker
84
81
  block.fake01
85
82
  end
86
83
  end
87
-
88
-
89
84
  end
90
-
91
85
  end
92
-
93
86
  end
94
87
  end
@@ -3,97 +3,92 @@ require 'spec_helper'
3
3
  module Beaker
4
4
  module Shared
5
5
  describe Semvar do
6
-
7
6
  describe 'version_is_less' do
8
-
9
7
  it 'reports 2015.3.0-rc0-8-gf80879a is less than 2016' do
10
- expect( subject.version_is_less( '2015.3.0-rc0-8-gf80879a', '2016' ) ).to be === true
8
+ expect(subject.version_is_less('2015.3.0-rc0-8-gf80879a', '2016')).to be === true
11
9
  end
12
10
 
13
11
  it 'reports 2015.3.0-rc0-8-gf80879a is less than 2015.3.0' do
14
- expect( subject.version_is_less( '2015.3.0-rc0-8-gf80879a', '2015.3.0' ) ).to be === true
12
+ expect(subject.version_is_less('2015.3.0-rc0-8-gf80879a', '2015.3.0')).to be === true
15
13
  end
16
14
 
17
15
  it 'reports that 2015.3.0-rc0 is less than 2015.3.0-rc0-8-gf80879a' do
18
- expect( subject.version_is_less( '2015.3.0-rc0', '2015.3.0-rc0-8-gf80879a' ) ).to be === true
16
+ expect(subject.version_is_less('2015.3.0-rc0', '2015.3.0-rc0-8-gf80879a')).to be === true
19
17
  end
20
18
 
21
19
  it 'reports that 2015.3.0-rc2 is less than 2015.3.0-rc10 (not using string comparison)' do
22
- expect( subject.version_is_less( '2015.3.0-rc2', '2015.3.0-rc10' ) ).to be === true
20
+ expect(subject.version_is_less('2015.3.0-rc2', '2015.3.0-rc10')).to be === true
23
21
  end
24
22
 
25
23
  it 'reports that 2015.3.0 is less than 2015.3.0-1-gabc1234' do
26
- expect( subject.version_is_less( '2015.3.0', '2015.3.0-1-gabc1234' ) ).to be === true
24
+ expect(subject.version_is_less('2015.3.0', '2015.3.0-1-gabc1234')).to be === true
27
25
  end
28
26
 
29
- it 'reports that 2015.3.0-rc2 is less than 2015.3.0-1-gabc1234' do
30
- expect( subject.version_is_less( '2015.3.0-rc2', '2015.3.0-1-gabc1234' ) ).to be === true
27
+ it 'reports that 2015.3.0-rc2 is less than 2015.3.0-1-gabc1234' do
28
+ expect(subject.version_is_less('2015.3.0-rc2', '2015.3.0-1-gabc1234')).to be === true
31
29
  end
32
30
 
33
31
  it 'reports 2015.3.0-rc0-8-gf80879a is not less than 3.0.0' do
34
- expect( subject.version_is_less( '2015.3.0-rc0-8-gf80879a', '3.0.0' ) ).to be === false
32
+ expect(subject.version_is_less('2015.3.0-rc0-8-gf80879a', '3.0.0')).to be === false
35
33
  end
36
34
 
37
35
  it 'reports 3.0.0-160-gac44cfb is not less than 3.0.0' do
38
- expect( subject.version_is_less( '3.0.0-160-gac44cfb', '3.0.0' ) ).to be === false
36
+ expect(subject.version_is_less('3.0.0-160-gac44cfb', '3.0.0')).to be === false
39
37
  end
40
38
 
41
39
  it 'reports 3.0.0-160-gac44cfb is not less than 2.8.2' do
42
- expect( subject.version_is_less( '3.0.0-160-gac44cfb', '2.8.2' ) ).to be === false
40
+ expect(subject.version_is_less('3.0.0-160-gac44cfb', '2.8.2')).to be === false
43
41
  end
44
42
 
45
43
  it 'reports 3.0.0 is less than 3.0.0-160-gac44cfb' do
46
- expect( subject.version_is_less( '3.0.0', '3.0.0-160-gac44cfb' ) ).to be === true
44
+ expect(subject.version_is_less('3.0.0', '3.0.0-160-gac44cfb')).to be === true
47
45
  end
48
46
 
49
47
  it 'reports 2.8.2 is less than 3.0.0-160-gac44cfb' do
50
- expect( subject.version_is_less( '2.8.2', '3.0.0-160-gac44cfb' ) ).to be === true
48
+ expect(subject.version_is_less('2.8.2', '3.0.0-160-gac44cfb')).to be === true
51
49
  end
52
50
 
53
51
  it 'reports 2.8 is less than 3.0.0-160-gac44cfb' do
54
- expect( subject.version_is_less( '2.8', '3.0.0-160-gac44cfb' ) ).to be === true
52
+ expect(subject.version_is_less('2.8', '3.0.0-160-gac44cfb')).to be === true
55
53
  end
56
54
 
57
55
  it 'reports 2.8 is less than 2.9' do
58
- expect( subject.version_is_less( '2.8', '2.9' ) ).to be === true
56
+ expect(subject.version_is_less('2.8', '2.9')).to be === true
59
57
  end
60
58
 
61
59
  it 'reports that 2015.3.0 is not less than 2015.3.0' do
62
- expect( subject.version_is_less( '2015.3.0', '2015.3.0' ) ).to be == false
60
+ expect(subject.version_is_less('2015.3.0', '2015.3.0')).to be == false
63
61
  end
64
62
  end
65
63
 
66
64
  describe 'max_version' do
67
-
68
65
  it 'returns nil if versions isn\'t defined' do
69
- expect( subject.max_version(nil) ).to be_nil
66
+ expect(subject.max_version(nil)).to be_nil
70
67
  end
71
68
 
72
69
  it 'returns nil if versions is empty' do
73
- expect( subject.max_version([]) ).to be_nil
70
+ expect(subject.max_version([])).to be_nil
74
71
  end
75
72
 
76
73
  it 'allows you to set the default, & will return it with faulty input' do
77
- expect( subject.max_version([], '5.9') ).to be === '5.9'
74
+ expect(subject.max_version([], '5.9')).to be === '5.9'
78
75
  end
79
76
 
80
77
  it 'returns the one value if given a length 1 array' do
81
- expect( subject.max_version(['7.3']) ).to be === '7.3'
78
+ expect(subject.max_version(['7.3'])).to be === '7.3'
82
79
  end
83
80
 
84
81
  it 'does not mangle the versions array passed in' do
85
82
  first_array = ['1.4.3', '8.4.5', '3.5.7', '2.7.5']
86
83
  array_to_pass = first_array.dup
87
84
  subject.max_version(array_to_pass)
88
- expect( array_to_pass ).to be === first_array
85
+ expect(array_to_pass).to be === first_array
89
86
  end
90
87
 
91
88
  it 'returns 5.8.9 from [5.8.9, 1.2.3, 0.3.5, 5.7.11]' do
92
- expect( subject.max_version(['5.8.9', '1.2.3', '0.3.5', '5.7.11']) ).to be === '5.8.9'
89
+ expect(subject.max_version(['5.8.9', '1.2.3', '0.3.5', '5.7.11'])).to be === '5.8.9'
93
90
  end
94
-
95
91
  end
96
92
  end
97
-
98
93
  end
99
94
  end