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
@@ -9,24 +9,22 @@ class ClassMixedWithDSLHelpers
9
9
  def logger
10
10
  RSpec::Mocks::Double.new('logger').as_null_object
11
11
  end
12
-
13
12
  end
14
13
 
15
14
  describe ClassMixedWithDSLHelpers do
16
- let( :opts ) { Beaker::Options::Presets.env_vars }
17
- let( :command ){ 'ls' }
18
- let( :host ) { double.as_null_object }
19
- let( :result ) { Beaker::Result.new( host, command ) }
20
-
21
- let( :master ) { make_host( 'master', :roles => %w( master agent default) ) }
22
- let( :agent ) { make_host( 'agent', :roles => %w( agent ) ) }
23
- let( :custom ) { make_host( 'custom', :roles => %w( custom agent ) ) }
24
- let( :dash ) { make_host( 'console', :roles => %w( dashboard agent ) ) }
25
- let( :db ) { make_host( 'db', :roles => %w( database agent ) ) }
26
- let( :hosts ) { [ master, agent, dash, db, custom ] }
15
+ let(:opts) { Beaker::Options::Presets.env_vars }
16
+ let(:command) { 'ls' }
17
+ let(:host) { double.as_null_object }
18
+ let(:result) { Beaker::Result.new(host, command) }
19
+
20
+ let(:master) { make_host('master', :roles => %w(master agent default)) }
21
+ let(:agent) { make_host('agent', :roles => %w(agent)) }
22
+ let(:custom) { make_host('custom', :roles => %w(custom agent)) }
23
+ let(:dash) { make_host('console', :roles => %w(dashboard agent)) }
24
+ let(:db) { make_host('db', :roles => %w(database agent)) }
25
+ let(:hosts) { [master, agent, dash, db, custom] }
27
26
 
28
27
  describe '#on' do
29
-
30
28
  before do
31
29
  result.stdout = 'stdout'
32
30
  result.stderr = 'stderr'
@@ -34,175 +32,156 @@ describe ClassMixedWithDSLHelpers do
34
32
  end
35
33
 
36
34
  it 'allows the environment the command is run within to be specified' do
37
- allow( subject ).to receive( :hosts ).and_return( hosts )
35
+ allow(subject).to receive(:hosts).and_return(hosts)
38
36
 
39
- expect( Beaker::Command ).to receive( :new ).
40
- with( 'ls ~/.bin', [], {'ENV' => { :HOME => '/tmp/test_home' }} )
37
+ expect(Beaker::Command).to receive(:new)
38
+ .with('ls ~/.bin', [], { 'ENV' => { :HOME => '/tmp/test_home' } })
41
39
 
42
- subject.on( host, 'ls ~/.bin', :environment => {:HOME => '/tmp/test_home' } )
40
+ subject.on(host, 'ls ~/.bin', :environment => { :HOME => '/tmp/test_home' })
43
41
  end
44
42
 
45
43
  describe 'with a beaker command object passed in as the command argument' do
46
- let( :command ) { Beaker::Command.new('commander command', [], :environment => {:HOME => 'default'}) }
44
+ let(:command) { Beaker::Command.new('commander command', [], :environment => { :HOME => 'default' }) }
47
45
 
48
46
  it 'overwrites the command environment with the environment specified in #on' do
49
- expect( host ).to receive( :exec ) do |command|
50
- expect(command.environment).to eq({:HOME => 'override'})
47
+ expect(host).to receive(:exec) do |command|
48
+ expect(command.environment).to eq({ :HOME => 'override' })
51
49
  end
52
- subject.on( host, command, :environment => {:HOME => 'override'})
50
+ subject.on(host, command, :environment => { :HOME => 'override' })
53
51
  end
54
52
 
55
53
  it 'uses the command environment if there is no overriding argument in #on' do
56
- expect( host ).to receive( :exec ) do |command|
57
- expect(command.environment).to eq({:HOME => 'default'})
54
+ expect(host).to receive(:exec) do |command|
55
+ expect(command.environment).to eq({ :HOME => 'default' })
58
56
  end
59
- subject.on( host, command )
57
+ subject.on(host, command)
60
58
  end
61
-
62
59
  end
63
60
 
64
61
  it 'if the host is a String Object, finds the matching hosts with that String as role' do
65
- allow( subject ).to receive( :hosts ).and_return( hosts )
62
+ allow(subject).to receive(:hosts).and_return(hosts)
66
63
 
67
- expect( master ).to receive( :exec ).once
64
+ expect(master).to receive(:exec).once
68
65
 
69
- subject.on( 'master', 'echo hello')
66
+ subject.on('master', 'echo hello')
70
67
  end
71
68
 
72
69
  it 'if the host is a Symbol Object, finds the matching hosts with that Symbol as role' do
73
- allow( subject ).to receive( :hosts ).and_return( hosts )
70
+ allow(subject).to receive(:hosts).and_return(hosts)
74
71
 
75
- expect( master ).to receive( :exec ).once
72
+ expect(master).to receive(:exec).once
76
73
 
77
- subject.on( :master, 'echo hello')
74
+ subject.on(:master, 'echo hello')
78
75
  end
79
76
 
80
77
  it 'executes in parallel if run_in_parallel=true' do
81
78
  InParallel::InParallelExecutor.logger = logger
82
79
  FakeFS.deactivate!
83
- allow( subject ).to receive( :hosts ).and_return( hosts )
80
+ allow(subject).to receive(:hosts).and_return(hosts)
84
81
  expected = []
85
82
  hosts.each_with_index do |host, i|
86
83
  expected << i
87
- allow( host ).to receive( :exec ).and_return( i )
84
+ allow(host).to receive(:exec).and_return(i)
88
85
  end
89
86
 
90
87
  # This will only get hit if forking processes is supported and at least 2 items are being submitted to run in parallel
91
- expect( InParallel::InParallelExecutor ).to receive(:_execute_in_parallel).with(any_args).and_call_original.exactly(5).times
92
- results = subject.on( hosts, command, {:run_in_parallel => true})
93
- expect( results ).to be == expected
88
+ expect(InParallel::InParallelExecutor).to receive(:_execute_in_parallel).with(any_args).and_call_original.exactly(5).times
89
+ results = subject.on(hosts, command, { :run_in_parallel => true })
90
+ expect(results).to be == expected
94
91
  end
95
92
 
96
93
  it 'delegates to itself for each host passed' do
97
- allow( subject ).to receive( :hosts ).and_return( hosts )
94
+ allow(subject).to receive(:hosts).and_return(hosts)
98
95
  expected = []
99
96
  hosts.each_with_index do |host, i|
100
97
  expected << i
101
- expect( host ).to receive( :exec ).and_return( i )
98
+ expect(host).to receive(:exec).and_return(i)
102
99
  end
103
100
 
104
- results = subject.on( hosts, command )
105
- expect( results ).to be == expected
101
+ results = subject.on(hosts, command)
102
+ expect(results).to be == expected
106
103
  end
107
104
 
108
105
  context 'upon command completion' do
109
106
  before do
110
- allow( subject ).to receive( :hosts ).and_return( hosts )
111
- expect( host ).to receive( :exec ).and_return( result )
112
- @res = subject.on( host, command )
107
+ allow(subject).to receive(:hosts).and_return(hosts)
108
+ expect(host).to receive(:exec).and_return(result)
109
+ @res = subject.on(host, command)
113
110
  end
114
111
 
115
112
  it 'returns the result of the action' do
116
- expect( @res ).to be == result
113
+ expect(@res).to be == result
117
114
  end
118
115
 
119
116
  it 'provides access to stdout' do
120
- expect( @res.stdout ).to be == 'stdout'
117
+ expect(@res.stdout).to be == 'stdout'
121
118
  end
122
119
 
123
120
  it 'provides access to stderr' do
124
- expect( @res.stderr ).to be == 'stderr'
121
+ expect(@res.stderr).to be == 'stderr'
125
122
  end
126
123
 
127
124
  it 'provides access to exit_code' do
128
- expect( @res.exit_code ).to be == 0
125
+ expect(@res.exit_code).to be == 0
129
126
  end
130
127
  end
131
128
 
132
129
  context 'when passed a block with arity of 1' do
133
130
  before do
134
- allow( subject ).to receive( :hosts ).and_return( hosts )
135
- expect( host ).to receive( :exec ).and_return( result )
131
+ allow(subject).to receive(:hosts).and_return(hosts)
132
+ expect(host).to receive(:exec).and_return(result)
136
133
  end
137
134
 
138
135
  it 'yields result' do
139
136
  subject.on host, command do |containing_class|
140
- expect( containing_class ).
141
- to be_an_instance_of( Beaker::Result )
137
+ expect(containing_class)
138
+ .to be_an_instance_of(Beaker::Result)
142
139
  end
143
140
  end
144
141
 
145
142
  it 'provides access to stdout' do
146
143
  subject.on host, command do |containing_class|
147
- expect( containing_class.stdout ).to be == 'stdout'
144
+ expect(containing_class.stdout).to be == 'stdout'
148
145
  end
149
146
  end
150
147
 
151
148
  it 'provides access to stderr' do
152
149
  subject.on host, command do |containing_class|
153
- expect( containing_class.stderr ).to be == 'stderr'
150
+ expect(containing_class.stderr).to be == 'stderr'
154
151
  end
155
152
  end
156
153
 
157
154
  it 'provides access to exit_code' do
158
155
  subject.on host, command do |containing_class|
159
- expect( containing_class.exit_code ).to be == 0
156
+ expect(containing_class.exit_code).to be == 0
160
157
  end
161
158
  end
162
159
  end
163
160
 
164
161
  context 'when passed a block with arity of 0' do
165
162
  before do
166
- allow( subject ).to receive( :hosts ).and_return( hosts )
167
- expect( host ).to receive( :exec ).and_return( result )
163
+ allow(subject).to receive(:hosts).and_return(hosts)
164
+ expect(host).to receive(:exec).and_return(result)
168
165
  end
169
166
 
170
167
  it 'yields self' do
171
168
  subject.on host, command do
172
- expect( subject ).
173
- to be_an_instance_of( described_class )
174
- end
175
- end
176
-
177
- it 'provides access to stdout' do
178
- subject.on host, command do
179
- expect( subject.stdout ).to be == 'stdout'
180
- end
181
- end
182
-
183
- it 'provides access to stderr' do
184
- subject.on host, command do
185
- expect( subject.stderr ).to be == 'stderr'
186
- end
187
- end
188
-
189
- it 'provides access to exit_code' do
190
- subject.on host, command do
191
- expect( subject.exit_code ).to be == 0
169
+ expect(subject)
170
+ .to be_an_instance_of(described_class)
192
171
  end
193
172
  end
194
173
  end
195
174
 
196
175
  it 'errors if command is not a String or Beaker::Command' do
197
- expect {
198
- subject.on( host, Object.new )
199
- }.to raise_error( ArgumentError, /called\ with\ a\ String\ or\ Beaker/ )
176
+ expect do
177
+ subject.on(host, Object.new)
178
+ end.to raise_error(ArgumentError, /called\ with\ a\ String\ or\ Beaker/)
200
179
  end
201
180
 
202
181
  it 'executes the passed Beaker::Command if given as command argument' do
203
- command_test = Beaker::Command.new( 'echo face_testing' )
204
- expect( master ).to receive( :exec ).with( command_test, anything )
205
- subject.on( master, command_test )
182
+ command_test = Beaker::Command.new('echo face_testing')
183
+ expect(master).to receive(:exec).with(command_test, anything)
184
+ subject.on(master, command_test)
206
185
  end
207
186
  end
208
187
 
@@ -215,12 +194,12 @@ describe ClassMixedWithDSLHelpers do
215
194
  retries = 5
216
195
 
217
196
  opts = {
218
- :max_retries => retries,
197
+ :max_retries => retries,
219
198
  :retry_interval => 0.0001,
220
199
  }
221
200
 
222
- allow( subject ).to receive(:on).and_return(result)
223
- expect( subject ).to receive(:on).exactly(retries+2)
201
+ allow(subject).to receive(:on).and_return(result)
202
+ expect(subject).to receive(:on).exactly(retries + 2)
224
203
  expect { subject.retry_on(host, command, opts) }.to raise_error(RuntimeError)
225
204
  end
226
205
 
@@ -230,12 +209,12 @@ describe ClassMixedWithDSLHelpers do
230
209
  result.exit_code = 0
231
210
 
232
211
  opts = {
233
- :max_retries => 5,
212
+ :max_retries => 5,
234
213
  :retry_interval => 0.0001,
235
214
  }
236
215
 
237
- allow( subject ).to receive(:on).and_return(result)
238
- expect( subject ).to receive(:on).once
216
+ allow(subject).to receive(:on).and_return(result)
217
+ expect(subject).to receive(:on).once
239
218
 
240
219
  result_given = subject.retry_on(host, command, opts)
241
220
  expect(result_given.exit_code).to be === 0
@@ -246,18 +225,18 @@ describe ClassMixedWithDSLHelpers do
246
225
  result.stderr = 'stderr'
247
226
 
248
227
  opts = {
249
- :max_retries => 10,
228
+ :max_retries => 10,
250
229
  :retry_interval => 0.1,
251
230
  }
252
231
 
253
232
  reps_num = 4
254
233
  count = 0
255
- allow( subject ).to receive(:on) do
234
+ allow(subject).to receive(:on) do
256
235
  result.exit_code = count > reps_num ? 0 : 1
257
236
  count += 1
258
237
  result
259
238
  end
260
- expect( subject ).to receive(:on).exactly(reps_num + 2)
239
+ expect(subject).to receive(:on).exactly(reps_num + 2)
261
240
 
262
241
  result_given = subject.retry_on(host, command, opts)
263
242
  expect(result_given.exit_code).to be === 0
@@ -266,51 +245,51 @@ describe ClassMixedWithDSLHelpers do
266
245
 
267
246
  describe "shell" do
268
247
  it 'delegates to #on with the default host' do
269
- allow( subject ).to receive( :hosts ).and_return( hosts )
248
+ allow(subject).to receive(:hosts).and_return(hosts)
270
249
 
271
- expect( subject ).to receive( :on ).with( master, "echo hello", {}).once
250
+ expect(subject).to receive(:on).with(master, "echo hello", {}).once
272
251
 
273
- subject.shell( "echo hello" )
252
+ subject.shell("echo hello")
274
253
  end
275
254
  end
276
255
 
277
256
  describe '#scp_from' do
278
257
  it 'delegates to the host' do
279
- allow( subject ).to receive( :hosts ).and_return( hosts )
280
- expect( subject ).to receive( :logger ).exactly( hosts.length ).times
281
- expect( result ).to receive( :log ).exactly( hosts.length ).times
258
+ allow(subject).to receive(:hosts).and_return(hosts)
259
+ expect(subject).to receive(:logger).exactly(hosts.length).times
260
+ expect(result).to receive(:log).exactly(hosts.length).times
282
261
 
283
262
  hosts.each do |host|
284
- expect( host ).to receive( :do_scp_from ).and_return( result )
263
+ expect(host).to receive(:do_scp_from).and_return(result)
285
264
  end
286
265
 
287
- subject.scp_from( hosts, '/var/log/my.log', 'log/my.log' )
266
+ subject.scp_from(hosts, '/var/log/my.log', 'log/my.log')
288
267
  end
289
268
  end
290
269
 
291
270
  describe '#scp_to' do
292
271
  it 'delegates to the host' do
293
- allow( subject ).to receive( :hosts ).and_return( hosts )
294
- expect( subject ).to receive( :logger ).exactly( hosts.length ).times
295
- expect( result ).to receive( :log ).exactly( hosts.length ).times
272
+ allow(subject).to receive(:hosts).and_return(hosts)
273
+ expect(subject).to receive(:logger).exactly(hosts.length).times
274
+ expect(result).to receive(:log).exactly(hosts.length).times
296
275
 
297
276
  hosts.each do |host|
298
- expect( host ).to receive( :do_scp_to ).and_return( result )
277
+ expect(host).to receive(:do_scp_to).and_return(result)
299
278
  end
300
279
 
301
- subject.scp_to( hosts, '/var/log/my.log', 'log/my.log' )
280
+ subject.scp_to(hosts, '/var/log/my.log', 'log/my.log')
302
281
  end
303
282
  end
304
283
 
305
284
  describe '#rsync_to' do
306
285
  it 'delegates to the host' do
307
- allow( subject ).to receive( :hosts ).and_return( hosts )
286
+ allow(subject).to receive(:hosts).and_return(hosts)
308
287
 
309
288
  hosts.each do |host|
310
- expect( host ).to receive( :do_rsync_to ).and_return( result )
289
+ expect(host).to receive(:do_rsync_to).and_return(result)
311
290
  end
312
291
 
313
- subject.rsync_to( hosts, '/var/log/my.log', 'log/my.log' )
292
+ subject.rsync_to(hosts, '/var/log/my.log', 'log/my.log')
314
293
  end
315
294
  end
316
295
 
@@ -319,17 +298,17 @@ describe ClassMixedWithDSLHelpers do
319
298
  my_opts = { :silent => true }
320
299
  tmpfile = double
321
300
 
322
- expect( tmpfile ).to receive( :path ).twice.
323
- and_return( '/local/path/to/blah' )
301
+ expect(tmpfile).to receive(:path).twice
302
+ .and_return('/local/path/to/blah')
324
303
 
325
- expect( Tempfile ).to receive( :open ).and_yield( tmpfile )
304
+ expect(Tempfile).to receive(:open).and_yield(tmpfile)
326
305
 
327
- expect( File ).to receive( :open )
306
+ expect(File).to receive(:open)
328
307
 
329
- expect( subject ).to receive( :scp_to ).
330
- with( hosts, '/local/path/to/blah', '/remote/path', my_opts )
308
+ expect(subject).to receive(:scp_to)
309
+ .with(hosts, '/local/path/to/blah', '/remote/path', my_opts)
331
310
 
332
- subject.create_remote_file( hosts, '/remote/path', 'blah', my_opts )
311
+ subject.create_remote_file(hosts, '/remote/path', 'blah', my_opts)
333
312
  end
334
313
  end
335
314
 
@@ -338,49 +317,49 @@ describe ClassMixedWithDSLHelpers do
338
317
  my_opts = { :silent => true, :protocol => 'rsync' }
339
318
  tmpfile = double
340
319
 
341
- expect( tmpfile ).to receive( :path ).twice.
342
- and_return( '/local/path/to/blah' )
320
+ expect(tmpfile).to receive(:path).twice
321
+ .and_return('/local/path/to/blah')
343
322
 
344
- expect( Tempfile ).to receive( :open ).and_yield( tmpfile )
323
+ expect(Tempfile).to receive(:open).and_yield(tmpfile)
345
324
 
346
- expect( File ).to receive( :open )
325
+ expect(File).to receive(:open)
347
326
 
348
- expect( subject ).to receive( :rsync_to ).
349
- with( hosts, '/local/path/to/blah', '/remote/path', my_opts )
327
+ expect(subject).to receive(:rsync_to)
328
+ .with(hosts, '/local/path/to/blah', '/remote/path', my_opts)
350
329
 
351
- subject.create_remote_file( hosts, '/remote/path', 'blah', my_opts )
330
+ subject.create_remote_file(hosts, '/remote/path', 'blah', my_opts)
352
331
  end
353
332
  end
354
333
 
355
334
  describe '#run_script_on' do
356
335
  it 'scps the script to a tmpdir and executes it on host(s)' do
357
- expect( subject ).to receive( :scp_to )
358
- expect( subject ).to receive( :on )
359
- subject.run_script_on( 'host', '~/.bin/make-enterprisy' )
336
+ expect(subject).to receive(:scp_to)
337
+ expect(subject).to receive(:on)
338
+ subject.run_script_on('host', '~/.bin/make-enterprisy')
360
339
  end
361
340
  end
362
341
 
363
342
  describe '#run_script' do
364
343
  it 'delegates to #run_script_on with the default host' do
365
- allow( subject ).to receive( :hosts ).and_return( hosts )
344
+ allow(subject).to receive(:hosts).and_return(hosts)
366
345
 
367
- expect( subject ).to receive( :run_script_on ).with( master, "/tmp/test.sh", {}).once
346
+ expect(subject).to receive(:run_script_on).with(master, "/tmp/test.sh", {}).once
368
347
 
369
- subject.run_script( '/tmp/test.sh' )
348
+ subject.run_script('/tmp/test.sh')
370
349
  end
371
350
  end
372
351
 
373
352
  describe '#install_package' do
374
353
  it 'delegates to Host#install_package with arguments on the passed Host' do
375
- expect( host ).to receive( :install_package ).with( 'pkg_name', '', '1.2.3' )
376
- subject.install_package( host, 'pkg_name', '1.2.3' )
354
+ expect(host).to receive(:install_package).with('pkg_name', '', '1.2.3')
355
+ subject.install_package(host, 'pkg_name', '1.2.3')
377
356
  end
378
357
  end
379
358
 
380
359
  describe '#uninstall_package' do
381
360
  it 'delegates to Host#uninstall_package on the passed Host' do
382
- expect( host ).to receive( :uninstall_package ).with( 'pkg_name' )
383
- subject.uninstall_package( host, 'pkg_name' )
361
+ expect(host).to receive(:uninstall_package).with('pkg_name')
362
+ subject.uninstall_package(host, 'pkg_name')
384
363
  end
385
364
  end
386
365
  end
@@ -9,7 +9,6 @@ class ClassMixedWithDSLHelpers
9
9
  def logger
10
10
  RSpec::Mocks::Double.new('logger').as_null_object
11
11
  end
12
-
13
12
  end
14
13
 
15
14
  describe ClassMixedWithDSLHelpers do
@@ -18,60 +17,60 @@ describe ClassMixedWithDSLHelpers do
18
17
  describe '#current_test_name' do
19
18
  it 'returns nil if the case is undefined' do
20
19
  allow(subject).to receive(:metadata).and_return(metadata)
21
- expect( subject.current_test_name ).to be_nil
20
+ expect(subject.current_test_name).to be_nil
22
21
  end
23
22
 
24
23
  it 'returns nil if the name is undefined' do
25
24
  @metadata = { :case => {} }
26
25
  allow(subject).to receive(:metadata).and_return(metadata)
27
- expect( subject.current_test_name ).to be_nil
26
+ expect(subject.current_test_name).to be_nil
28
27
  end
29
28
 
30
29
  it 'returns the set value' do
31
30
  name = 'holyGrail_testName'
32
31
  @metadata = { :case => { :name => name } }
33
32
  allow(subject).to receive(:metadata).and_return(metadata)
34
- expect( subject.current_test_name ).to be === name
33
+ expect(subject.current_test_name).to be === name
35
34
  end
36
35
  end
37
36
 
38
37
  describe '#current_test_filename' do
39
38
  it 'returns nil if the case is undefined' do
40
39
  allow(subject).to receive(:metadata).and_return(metadata)
41
- expect( subject.current_test_filename ).to be_nil
40
+ expect(subject.current_test_filename).to be_nil
42
41
  end
43
42
 
44
43
  it 'returns nil if the name is undefined' do
45
44
  @metadata = { :case => {} }
46
45
  allow(subject).to receive(:metadata).and_return(metadata)
47
- expect( subject.current_test_filename ).to be_nil
46
+ expect(subject.current_test_filename).to be_nil
48
47
  end
49
48
 
50
49
  it 'returns the set value' do
51
50
  name = 'holyGrail_testFilename'
52
51
  @metadata = { :case => { :file_name => name } }
53
52
  allow(subject).to receive(:metadata).and_return(metadata)
54
- expect( subject.current_test_filename ).to be === name
53
+ expect(subject.current_test_filename).to be === name
55
54
  end
56
55
  end
57
56
 
58
57
  describe '#current_step_name' do
59
58
  it 'returns nil if the step is undefined' do
60
59
  allow(subject).to receive(:metadata).and_return(metadata)
61
- expect( subject.current_step_name ).to be_nil
60
+ expect(subject.current_step_name).to be_nil
62
61
  end
63
62
 
64
63
  it 'returns nil if the name is undefined' do
65
64
  @metadata = { :step => {} }
66
65
  allow(subject).to receive(:metadata).and_return(metadata)
67
- expect( subject.current_step_name ).to be_nil
66
+ expect(subject.current_step_name).to be_nil
68
67
  end
69
68
 
70
69
  it 'returns the set value' do
71
70
  name = 'holyGrail_stepName'
72
71
  @metadata = { :step => { :name => name } }
73
72
  allow(subject).to receive(:metadata).and_return(metadata)
74
- expect( subject.current_step_name ).to be === name
73
+ expect(subject.current_step_name).to be === name
75
74
  end
76
75
  end
77
76
  end