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
@@ -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