beaker 4.40.2 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +9 -0
  3. data/.github/workflows/release.yml +2 -2
  4. data/.github/workflows/test.yml +26 -13
  5. data/.rubocop.yml +23 -10
  6. data/.rubocop_todo.yml +34 -10
  7. data/CHANGELOG.md +17 -28
  8. data/Gemfile +12 -7
  9. data/Rakefile +99 -111
  10. data/acceptance/config/acceptance-options.rb +1 -1
  11. data/acceptance/config/base/acceptance-options.rb +2 -2
  12. data/acceptance/config/hypervisor/acceptance-options.rb +2 -2
  13. data/acceptance/config/subcommands/acceptance-options.rb +2 -2
  14. data/acceptance/fixtures/module/Rakefile +1 -1
  15. data/acceptance/fixtures/module/spec/acceptance/demo_spec.rb +8 -12
  16. data/acceptance/fixtures/module/spec/classes/init_spec.rb +0 -1
  17. data/acceptance/fixtures/module/spec/spec_helper_acceptance.rb +3 -5
  18. data/acceptance/lib/helpers/test_helper.rb +6 -5
  19. data/acceptance/pre_suite/subcommands/05_install_ruby.rb +2 -3
  20. data/acceptance/pre_suite/subcommands/08_install_beaker.rb +1 -2
  21. data/acceptance/tests/base/dsl/helpers/configuration_test.rb +4 -4
  22. data/acceptance/tests/base/dsl/helpers/hocon_helpers_test.rb +1 -2
  23. data/acceptance/tests/base/dsl/helpers/host_helpers/add_system32_hosts_entry_test.rb +0 -3
  24. data/acceptance/tests/base/dsl/helpers/host_helpers/archive_file_from_test.rb +3 -1
  25. data/acceptance/tests/base/dsl/helpers/host_helpers/backup_the_file_test.rb +9 -9
  26. data/acceptance/tests/base/dsl/helpers/host_helpers/check_for_package_test.rb +0 -4
  27. data/acceptance/tests/base/dsl/helpers/host_helpers/create_remote_file_test.rb +19 -26
  28. data/acceptance/tests/base/dsl/helpers/host_helpers/curl_on_test.rb +2 -2
  29. data/acceptance/tests/base/dsl/helpers/host_helpers/curl_with_retries_test.rb +0 -1
  30. data/acceptance/tests/base/dsl/helpers/host_helpers/on_test.rb +18 -13
  31. data/acceptance/tests/base/dsl/helpers/host_helpers/retry_on_test.rb +3 -3
  32. data/acceptance/tests/base/dsl/helpers/host_helpers/rsync_to_test.rb +22 -27
  33. data/acceptance/tests/base/dsl/helpers/host_helpers/run_cron_on_test.rb +12 -16
  34. data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_on_test.rb +3 -4
  35. data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_test.rb +3 -3
  36. data/acceptance/tests/base/dsl/helpers/host_helpers/scp_from_test.rb +4 -4
  37. data/acceptance/tests/base/dsl/helpers/host_helpers/scp_to_test.rb +3 -4
  38. data/acceptance/tests/base/dsl/helpers/host_helpers/shell_test.rb +5 -5
  39. data/acceptance/tests/base/dsl/helpers/host_helpers/upgrade_package_test.rb +3 -5
  40. data/acceptance/tests/base/dsl/platform_tag_confiner_test.rb +14 -17
  41. data/acceptance/tests/base/dsl/structure_test.rb +5 -11
  42. data/acceptance/tests/base/host/file_test.rb +2 -2
  43. data/acceptance/tests/base/host/group_test.rb +0 -1
  44. data/acceptance/tests/base/host/host_test.rb +66 -63
  45. data/acceptance/tests/base/host/packages.rb +1 -2
  46. data/acceptance/tests/base/host/packages_unix.rb +0 -55
  47. data/acceptance/tests/base/host/user_test.rb +0 -1
  48. data/acceptance/tests/base/host_prebuilt_steps/ssh_environment_test.rb +1 -2
  49. data/acceptance/tests/base/test_suite/export.rb +6 -9
  50. data/acceptance/tests/install/from_file.rb +2 -4
  51. data/acceptance/tests/load_path_bootstrap.rb +1 -1
  52. data/acceptance/tests/subcommands/destroy.rb +19 -21
  53. data/acceptance/tests/subcommands/exec.rb +0 -1
  54. data/acceptance/tests/subcommands/init.rb +2 -3
  55. data/acceptance/tests/subcommands/provision.rb +0 -1
  56. data/beaker.gemspec +4 -7
  57. data/docs/concepts/argument_processing_and_precedence.md +1 -10
  58. data/docs/how_to/debug_beaker_tests.md +12 -12
  59. data/docs/how_to/hosts/eos.md +2 -12
  60. data/docs/how_to/install_puppet.md +0 -18
  61. data/docs/how_to/the_beaker_dsl.md +0 -2
  62. data/lib/beaker/cli.rb +59 -68
  63. data/lib/beaker/command.rb +20 -28
  64. data/lib/beaker/command_factory.rb +3 -2
  65. data/lib/beaker/dsl/assertions.rb +6 -18
  66. data/lib/beaker/dsl/helpers/hocon_helpers.rb +3 -7
  67. data/lib/beaker/dsl/helpers/host_helpers.rb +62 -123
  68. data/lib/beaker/dsl/helpers/test_helpers.rb +3 -5
  69. data/lib/beaker/dsl/helpers/web_helpers.rb +19 -39
  70. data/lib/beaker/dsl/helpers.rb +2 -4
  71. data/lib/beaker/dsl/outcomes.rb +13 -15
  72. data/lib/beaker/dsl/patterns.rb +1 -3
  73. data/lib/beaker/dsl/roles.rb +17 -20
  74. data/lib/beaker/dsl/structure.rb +53 -65
  75. data/lib/beaker/dsl/test_tagging.rb +7 -10
  76. data/lib/beaker/dsl/wrappers.rb +15 -16
  77. data/lib/beaker/dsl.rb +2 -3
  78. data/lib/beaker/host/aix/exec.rb +1 -1
  79. data/lib/beaker/host/aix/file.rb +0 -1
  80. data/lib/beaker/host/aix/group.rb +1 -1
  81. data/lib/beaker/host/aix/user.rb +1 -1
  82. data/lib/beaker/host/aix.rb +3 -4
  83. data/lib/beaker/host/cisco.rb +27 -39
  84. data/lib/beaker/host/eos.rb +4 -30
  85. data/lib/beaker/host/freebsd/exec.rb +1 -1
  86. data/lib/beaker/host/freebsd/pkg.rb +3 -3
  87. data/lib/beaker/host/freebsd.rb +9 -12
  88. data/lib/beaker/host/mac/exec.rb +4 -4
  89. data/lib/beaker/host/mac/group.rb +7 -7
  90. data/lib/beaker/host/mac/pkg.rb +3 -106
  91. data/lib/beaker/host/mac/user.rb +2 -2
  92. data/lib/beaker/host/mac.rb +8 -9
  93. data/lib/beaker/host/pswindows/exec.rb +66 -70
  94. data/lib/beaker/host/pswindows/file.rb +3 -5
  95. data/lib/beaker/host/pswindows/group.rb +3 -3
  96. data/lib/beaker/host/pswindows/pkg.rb +12 -12
  97. data/lib/beaker/host/pswindows/user.rb +3 -3
  98. data/lib/beaker/host/pswindows.rb +4 -3
  99. data/lib/beaker/host/unix/exec.rb +80 -82
  100. data/lib/beaker/host/unix/file.rb +38 -43
  101. data/lib/beaker/host/unix/group.rb +1 -1
  102. data/lib/beaker/host/unix/pkg.rb +154 -417
  103. data/lib/beaker/host/unix/user.rb +2 -2
  104. data/lib/beaker/host/unix.rb +8 -11
  105. data/lib/beaker/host/windows/exec.rb +17 -17
  106. data/lib/beaker/host/windows/file.rb +3 -3
  107. data/lib/beaker/host/windows/group.rb +3 -3
  108. data/lib/beaker/host/windows/pkg.rb +3 -54
  109. data/lib/beaker/host/windows/user.rb +3 -3
  110. data/lib/beaker/host/windows.rb +12 -12
  111. data/lib/beaker/host.rb +76 -133
  112. data/lib/beaker/host_prebuilt_steps.rb +93 -198
  113. data/lib/beaker/hypervisor/noop.rb +2 -4
  114. data/lib/beaker/hypervisor.rb +44 -61
  115. data/lib/beaker/local_connection.rb +2 -4
  116. data/lib/beaker/logger.rb +68 -76
  117. data/lib/beaker/logger_junit.rb +21 -25
  118. data/lib/beaker/network_manager.rb +39 -42
  119. data/lib/beaker/options/command_line_parser.rb +12 -23
  120. data/lib/beaker/options/hosts_file_parser.rb +16 -24
  121. data/lib/beaker/options/options_file_parser.rb +3 -6
  122. data/lib/beaker/options/options_hash.rb +2 -7
  123. data/lib/beaker/options/parser.rb +86 -102
  124. data/lib/beaker/options/presets.rb +114 -123
  125. data/lib/beaker/options/subcommand_options_file_parser.rb +3 -6
  126. data/lib/beaker/options/validator.rb +26 -31
  127. data/lib/beaker/perf.rb +22 -27
  128. data/lib/beaker/platform.rb +38 -46
  129. data/lib/beaker/result.rb +7 -6
  130. data/lib/beaker/shared/error_handler.rb +8 -10
  131. data/lib/beaker/shared/fog_credentials.rb +5 -9
  132. data/lib/beaker/shared/host_manager.rb +36 -41
  133. data/lib/beaker/shared/options_resolver.rb +3 -7
  134. data/lib/beaker/shared/repetition.rb +2 -4
  135. data/lib/beaker/shared/semvar.rb +37 -41
  136. data/lib/beaker/shared/timed.rb +0 -3
  137. data/lib/beaker/shared.rb +1 -1
  138. data/lib/beaker/ssh_connection.rb +38 -47
  139. data/lib/beaker/subcommand.rb +17 -24
  140. data/lib/beaker/subcommands/subcommand_util.rb +4 -4
  141. data/lib/beaker/tasks/quick_start.rb +4 -9
  142. data/lib/beaker/tasks/rake_task.rb +25 -27
  143. data/lib/beaker/tasks/test.rb +4 -4
  144. data/lib/beaker/test_case.rb +16 -28
  145. data/lib/beaker/test_suite.rb +35 -39
  146. data/lib/beaker/test_suite_result.rb +45 -47
  147. data/lib/beaker/version.rb +1 -1
  148. data/lib/beaker.rb +6 -7
  149. data/spec/beaker/cli_spec.rb +121 -142
  150. data/spec/beaker/command_spec.rb +55 -59
  151. data/spec/beaker/dsl/assertions_spec.rb +36 -36
  152. data/spec/beaker/dsl/helpers/host_helpers_spec.rb +110 -131
  153. data/spec/beaker/dsl/helpers/test_helpers_spec.rb +9 -10
  154. data/spec/beaker/dsl/helpers/web_helpers_spec.rb +22 -31
  155. data/spec/beaker/dsl/outcomes_spec.rb +14 -14
  156. data/spec/beaker/dsl/roles_spec.rb +125 -130
  157. data/spec/beaker/dsl/structure_spec.rb +172 -161
  158. data/spec/beaker/dsl/test_tagging_spec.rb +89 -90
  159. data/spec/beaker/dsl/wrappers_spec.rb +32 -33
  160. data/spec/beaker/host/aix_spec.rb +14 -14
  161. data/spec/beaker/host/cisco_spec.rb +84 -94
  162. data/spec/beaker/host/eos_spec.rb +15 -36
  163. data/spec/beaker/host/freebsd/exec_spec.rb +3 -6
  164. data/spec/beaker/host/freebsd/pkg_spec.rb +24 -27
  165. data/spec/beaker/host/mac/exec_spec.rb +2 -3
  166. data/spec/beaker/host/mac/group_spec.rb +48 -57
  167. data/spec/beaker/host/mac/user_spec.rb +54 -63
  168. data/spec/beaker/host/pswindows/exec_spec.rb +30 -32
  169. data/spec/beaker/host/pswindows/file_spec.rb +16 -16
  170. data/spec/beaker/host/pswindows/user_spec.rb +17 -23
  171. data/spec/beaker/host/pswindows_spec.rb +13 -13
  172. data/spec/beaker/host/unix/exec_spec.rb +75 -80
  173. data/spec/beaker/host/unix/file_spec.rb +66 -73
  174. data/spec/beaker/host/unix/pkg_spec.rb +155 -401
  175. data/spec/beaker/host/unix_spec.rb +11 -207
  176. data/spec/beaker/host/windows/exec_spec.rb +30 -32
  177. data/spec/beaker/host/windows/file_spec.rb +18 -19
  178. data/spec/beaker/host/windows/group_spec.rb +10 -12
  179. data/spec/beaker/host/windows/pkg_spec.rb +6 -9
  180. data/spec/beaker/host/windows/user_spec.rb +17 -23
  181. data/spec/beaker/host/windows_spec.rb +39 -39
  182. data/spec/beaker/host_prebuilt_steps_spec.rb +172 -326
  183. data/spec/beaker/host_spec.rb +204 -284
  184. data/spec/beaker/hypervisor/hypervisor_spec.rb +36 -61
  185. data/spec/beaker/localhost_connection_spec.rb +10 -11
  186. data/spec/beaker/logger_junit_spec.rb +19 -30
  187. data/spec/beaker/logger_spec.rb +153 -136
  188. data/spec/beaker/network_manager_spec.rb +23 -23
  189. data/spec/beaker/options/command_line_parser_spec.rb +20 -23
  190. data/spec/beaker/options/hosts_file_parser_spec.rb +30 -32
  191. data/spec/beaker/options/options_file_parser_spec.rb +4 -7
  192. data/spec/beaker/options/options_hash_spec.rb +4 -6
  193. data/spec/beaker/options/parser_spec.rb +167 -167
  194. data/spec/beaker/options/presets_spec.rb +7 -9
  195. data/spec/beaker/options/subcommand_options_parser_spec.rb +13 -14
  196. data/spec/beaker/options/validator_spec.rb +10 -11
  197. data/spec/beaker/perf_spec.rb +18 -21
  198. data/spec/beaker/platform_spec.rb +25 -36
  199. data/spec/beaker/shared/error_handler_spec.rb +7 -16
  200. data/spec/beaker/shared/fog_credentials_spec.rb +29 -29
  201. data/spec/beaker/shared/host_manager_spec.rb +50 -84
  202. data/spec/beaker/shared/options_resolver_spec.rb +9 -12
  203. data/spec/beaker/shared/repetition_spec.rb +17 -24
  204. data/spec/beaker/shared/semvar_spec.rb +21 -26
  205. data/spec/beaker/ssh_connection_spec.rb +76 -83
  206. data/spec/beaker/subcommand/subcommand_util_spec.rb +31 -33
  207. data/spec/beaker/subcommand_spec.rb +75 -77
  208. data/spec/beaker/test_case_spec.rb +25 -50
  209. data/spec/beaker/test_suite_spec.rb +147 -154
  210. data/spec/helpers.rb +48 -53
  211. data/spec/matchers.rb +8 -7
  212. data/spec/mocks.rb +1 -6
  213. data/spec/spec_helper.rb +0 -1
  214. metadata +7 -24
  215. data/acceptance/tests/base/dsl/helpers/host_helpers/deploy_package_repo_test.rb +0 -142
  216. data/acceptance/tests/base/external_resources_test.rb +0 -31
  217. data/spec/beaker/host/mac_spec.rb +0 -113
@@ -1,50 +1,47 @@
1
- # encoding: UTF-8
2
1
  require 'spec_helper'
3
2
 
4
3
  module Beaker
5
4
  describe Logger do
6
5
  let(:my_io) { StringIO.new }
7
- let(:logger) { described_class.new(my_io, :quiet => true) }
8
- let(:basic_logger) { described_class.new(:quiet => true) }
9
- let(:test_dir) { 'tmp/tests' }
6
+ let(:logger) { described_class.new(my_io, :quiet => true) }
7
+ let(:basic_logger) { described_class.new(:quiet => true) }
8
+ let(:test_dir) { 'tmp/tests' }
10
9
  let(:dummy_prefix) { 'dummy' }
11
10
 
12
11
  describe '#convert' do
13
12
  let(:valid_utf8) { "/etc/puppet/modules\n├── jimmy-appleseed (\e[0;36mv1.1.0\e[0m)\n├── jimmy-crakorn (\e[0;36mv0.4.0\e[0m)\n└── jimmy-thelock (\e[0;36mv1.0.0\e[0m)\n" }
14
- let(:invalid_utf8) {"/etc/puppet/modules\n├── jimmy-appleseed (\e[0;36mv1.1.0\e[0m)\n├── jimmy-crakorn (\e[0;36mv0.4.0\e[0m)\n└── jimmy-thelock (\e[0;36mv1.0.0\e[0m)\xAD\n"}
13
+ let(:invalid_utf8) { "/etc/puppet/modules\n├── jimmy-appleseed (\e[0;36mv1.1.0\e[0m)\n├── jimmy-crakorn (\e[0;36mv0.4.0\e[0m)\n└── jimmy-thelock (\e[0;36mv1.0.0\e[0m)\xAD\n" }
15
14
 
16
15
  it 'preserves valid utf-8 strings' do
17
- expect( logger.convert(valid_utf8) ).to be === valid_utf8
16
+ expect(logger.convert(valid_utf8)).to be === valid_utf8
18
17
  end
19
18
 
20
19
  it 'strips out invalid utf-8 characters' do
21
- expect( logger.convert(invalid_utf8) ).to be === valid_utf8
20
+ expect(logger.convert(invalid_utf8)).to be === valid_utf8
22
21
  end
23
22
 
24
23
  it 'supports frozen strings' do
25
24
  valid_utf8.freeze
26
- expect( logger.convert(valid_utf8) ).to be === valid_utf8
25
+ expect(logger.convert(valid_utf8)).to be === valid_utf8
27
26
  end
28
27
  end
29
28
 
30
29
  describe '#generate_dated_log_folder' do
31
-
32
30
  it 'generates path for a given timestamp' do
33
31
  input_time = Time.new(2014, 6, 2, 16, 31, 22, '-07:00')
34
- expect( described_class.generate_dated_log_folder(test_dir, dummy_prefix, input_time) ).to be === File.join(test_dir, dummy_prefix, '2014-06-02_16_31_22')
32
+ expect(described_class.generate_dated_log_folder(test_dir, dummy_prefix, input_time)).to be === File.join(test_dir, dummy_prefix, '2014-06-02_16_31_22')
35
33
  end
36
34
 
37
35
  it 'generates directory for a given timestamp' do
38
36
  input_time = Time.new(2011, 6, 10, 13, 7, 55, '-09:00')
39
- expect( File ).to be_directory described_class.generate_dated_log_folder(test_dir, dummy_prefix, input_time)
37
+ expect(File).to be_directory described_class.generate_dated_log_folder(test_dir, dummy_prefix, input_time)
40
38
  end
41
39
 
42
40
  it 'generates nested directories if given as a log_prefix' do
43
41
  input_time = Time.new(2011, 6, 10, 13, 7, 55, '-09:00')
44
42
  prefix = 'a/man/a/plan/a/canal/panama'
45
- expect( File ).to be_directory described_class.generate_dated_log_folder(test_dir, prefix, input_time)
43
+ expect(File).to be_directory described_class.generate_dated_log_folder(test_dir, prefix, input_time)
46
44
  end
47
-
48
45
  end
49
46
 
50
47
  describe '#prefix_log_line' do
@@ -59,7 +56,7 @@ module Beaker
59
56
 
60
57
  def prefix_log_line_test_compare_helper(in_test, out_answer)
61
58
  logger.with_indent do
62
- expect( logger.prefix_log_line(in_test) ).to be === out_answer
59
+ expect(logger.prefix_log_line(in_test)).to be === out_answer
63
60
  end
64
61
  end
65
62
 
@@ -93,7 +90,7 @@ module Beaker
93
90
  logger.with_indent do
94
91
  logger.with_indent do
95
92
  logger.with_indent do
96
- expect( logger.prefix_log_line(line_arg) ).to be === answer
93
+ expect(logger.prefix_log_line(line_arg)).to be === answer
97
94
  end
98
95
  end
99
96
  end
@@ -112,30 +109,30 @@ module Beaker
112
109
 
113
110
  it 'steps in correctly (simple case)' do
114
111
  logger.with_indent do
115
- expect( logger.line_prefix ).to be === ' '
112
+ expect(logger.line_prefix).to be === ' '
116
113
  end
117
114
  end
118
115
 
119
- it 'sets length correctly in mixed scenario ' do
116
+ it 'sets length correctly in mixed scenario' do
120
117
  logger.with_indent do
121
118
  logger.with_indent {}
122
119
  logger.with_indent do
123
120
  logger.with_indent {}
124
- expect( logger.line_prefix ).to be === ' '
121
+ expect(logger.line_prefix).to be === ' '
125
122
  end
126
123
  end
127
124
  end
128
125
 
129
126
  it 'can handle arbitrary strings as prefixes' do
130
127
  logger.line_prefix = 'Some string:'
131
- expect( logger.line_prefix ).to be === 'Some string:'
128
+ expect(logger.line_prefix).to be === 'Some string:'
132
129
  end
133
130
 
134
131
  it 'can handle stepping in with arbitrary strings' do
135
132
  logger.line_prefix = 'Some string:'
136
133
  logger.with_indent do
137
134
  logger.with_indent do
138
- expect( logger.line_prefix ).to be === 'Some string: '
135
+ expect(logger.line_prefix).to be === 'Some string: '
139
136
  end
140
137
  end
141
138
  end
@@ -143,7 +140,7 @@ module Beaker
143
140
  it 'can handle stepping in and out with arbitrary strings' do
144
141
  logger.line_prefix = 'Some string:'
145
142
  10.times { logger.with_indent {} }
146
- expect( logger.line_prefix ).to be === 'Some string:'
143
+ expect(logger.line_prefix).to be === 'Some string:'
147
144
  end
148
145
 
149
146
  it 'restores the original prefix if an argument is raised' do
@@ -160,17 +157,21 @@ module Beaker
160
157
  context 'new' do
161
158
  it 'does not duplicate STDOUT when directly passed to it' do
162
159
  stdout_logger = described_class.new STDOUT
163
- expect( stdout_logger.destinations.size ).to be === 1
160
+ expect(stdout_logger.destinations.size).to be === 1
164
161
  end
165
162
 
166
163
  context 'default for' do
167
- its(:destinations) { is_expected.to include(STDOUT) }
168
- its(:color) { is_expected.to be_nil }
169
- its(:log_level) { is_expected.to be :verbose }
164
+ it do
165
+ expect(subject).to have_attributes(
166
+ destinations: include(STDOUT),
167
+ color: be_nil,
168
+ log_level: :verbose,
169
+ )
170
+ end
170
171
  end
171
172
 
172
173
  context 'log_colors' do
173
- original_build_number = ENV['BUILD_NUMBER']
174
+ original_build_number = ENV.fetch('BUILD_NUMBER', nil)
174
175
 
175
176
  before do
176
177
  ENV['BUILD_NUMBER'] = nil
@@ -180,29 +181,28 @@ module Beaker
180
181
  ENV['BUILD_NUMER'] = original_build_number
181
182
  end
182
183
 
183
-
184
184
  it 'has the default log_colors' do
185
185
  expect(logger.log_colors).to be == {
186
- :error=> Beaker::Logger::RED,
187
- :warn=> Beaker::Logger::BRIGHT_RED,
188
- :success=> Beaker::Logger::MAGENTA,
189
- :notify=> Beaker::Logger::BLUE,
190
- :info=> Beaker::Logger::GREEN,
191
- :debug=> Beaker::Logger::WHITE,
192
- :trace=> Beaker::Logger::BRIGHT_YELLOW,
193
- :perf=> Beaker::Logger::BRIGHT_MAGENTA,
194
- :host=> Beaker::Logger::YELLOW
186
+ :error => Beaker::Logger::RED,
187
+ :warn => Beaker::Logger::BRIGHT_RED,
188
+ :success => Beaker::Logger::MAGENTA,
189
+ :notify => Beaker::Logger::BLUE,
190
+ :info => Beaker::Logger::GREEN,
191
+ :debug => Beaker::Logger::WHITE,
192
+ :trace => Beaker::Logger::BRIGHT_YELLOW,
193
+ :perf => Beaker::Logger::BRIGHT_MAGENTA,
194
+ :host => Beaker::Logger::YELLOW,
195
195
  }
196
196
  end
197
197
 
198
198
  context 'when passing in log_color options' do
199
- let(:log_colors) {
199
+ let(:log_colors) do
200
200
  {
201
- :error => "\e[00;30m"
201
+ :error => "\e[00;30m",
202
202
  }
203
- }
203
+ end
204
204
 
205
- let(:logger) { described_class.new(my_io, :quiet => true, :log_colors => log_colors) }
205
+ let(:logger) { described_class.new(my_io, :quiet => true, :log_colors => log_colors) }
206
206
 
207
207
  it 'overrides the specified log colors' do
208
208
  expect(logger.log_colors[:error]).to be == Beaker::Logger::BLACK
@@ -229,13 +229,13 @@ module Beaker
229
229
  end
230
230
 
231
231
  context 'when overriding default log colors' do
232
- let(:log_colors) {
232
+ let(:log_colors) do
233
233
  {
234
- :error => "\e[00;30m"
234
+ :error => "\e[00;30m",
235
235
  }
236
- }
236
+ end
237
237
 
238
- let(:logger) { described_class.new(my_io, :quiet => true, :log_colors => log_colors) }
238
+ let(:logger) { described_class.new(my_io, :quiet => true, :log_colors => log_colors) }
239
239
 
240
240
  it 'overrides the specified log colors' do
241
241
  expect(logger.log_colors[:error]).to be == Beaker::Logger::BLACK
@@ -256,10 +256,10 @@ module Beaker
256
256
  context 'it can' do
257
257
  it 'open/create a file when a string is given to add_destination' do
258
258
  logger.add_destination 'my_tmp_file'
259
- expect( File ).to exist( 'my_tmp_file' )
259
+ expect(File).to exist('my_tmp_file')
260
260
 
261
- io = logger.destinations.find {|d| d.respond_to? :path }
262
- expect( io.path ).to match(/my_tmp_file/)
261
+ io = logger.destinations.find { |d| d.respond_to? :path }
262
+ expect(io.path).to match(/my_tmp_file/)
263
263
  end
264
264
 
265
265
  it 'remove destinations with the remove_destinations method' do
@@ -268,174 +268,191 @@ module Beaker
268
268
  logger.remove_destination my_io
269
269
  logger.remove_destination 'my_file'
270
270
 
271
- expect( logger.destinations ).to be_empty
271
+ expect(logger.destinations).to be_empty
272
272
  end
273
273
 
274
274
  it 'strip colors from arrays of input' do
275
- stripped = logger.strip_colors_from [ "\e[00;30m text! \e[00;00m" ]
276
- expect( stripped ).to be === [ ' text! ' ]
275
+ stripped = logger.strip_colors_from ["\e[00;30m text! \e[00;00m"]
276
+ expect(stripped).to be === [' text! ']
277
277
  end
278
278
 
279
279
  it 'colors strings if @color is set' do
280
280
  colorized_logger = described_class.new my_io, :color => true, :quiet => true
281
281
 
282
- expect( my_io ).to receive( :print ).with "\e[00;30m"
283
- expect( my_io ).to receive( :print )
284
- expect( my_io ).to receive( :puts ).with 'my string'
282
+ expect(my_io).to receive(:print).with "\e[00;30m"
283
+ expect(my_io).to receive(:print)
284
+ expect(my_io).to receive(:puts).with 'my string'
285
285
 
286
286
  colorized_logger.optionally_color "\e[00;30m", 'my string'
287
287
  end
288
288
 
289
289
  context 'at trace log_level' do
290
- subject( :trace_logger ) { described_class.new( my_io,
291
- :log_level => 'trace',
292
- :quiet => true,
293
- :color => true )
294
- }
290
+ subject(:trace_logger) do
291
+ described_class.new(my_io,
292
+ :log_level => 'trace',
293
+ :quiet => true,
294
+ :color => true)
295
+ end
295
296
 
296
- its( :is_debug? ) { is_expected.to be_truthy }
297
- its( :is_trace? ) { is_expected.to be_truthy }
298
- its( :is_warn? ) { is_expected.to be_truthy }
297
+ it do
298
+ expect(subject).to have_attributes(
299
+ :is_debug? => be_truthy,
300
+ :is_trace? => be_truthy,
301
+ :is_warn? => be_truthy,
302
+ )
303
+ end
299
304
 
300
305
  context 'but print' do
301
306
  before do
302
- allow( my_io ).to receive :puts
303
- expect( my_io ).to receive( :print ).at_least :twice
307
+ allow(my_io).to receive :puts
308
+ expect(my_io).to receive(:print).at_least :twice
304
309
  end
305
310
 
306
- it( 'warnings' ) { trace_logger.warn 'IMA WARNING!' }
307
- it( 'successes' ) { trace_logger.success 'SUCCESS!' }
308
- it( 'errors' ) { trace_logger.error 'ERROR!' }
309
- it( 'host_output' ) { trace_logger.host_output 'ERROR!' }
310
- it( 'debugs' ) { trace_logger.debug 'DEBUGGING!' }
311
- it( 'traces' ) { trace_logger.trace 'TRACING!' }
311
+ it('warnings') { trace_logger.warn 'IMA WARNING!' }
312
+ it('successes') { trace_logger.success 'SUCCESS!' }
313
+ it('errors') { trace_logger.error 'ERROR!' }
314
+ it('host_output') { trace_logger.host_output 'ERROR!' }
315
+ it('debugs') { trace_logger.debug 'DEBUGGING!' }
316
+ it('traces') { trace_logger.trace 'TRACING!' }
312
317
  end
313
318
  end
314
319
 
315
320
  context 'at verbose log_level' do
316
- subject( :verbose_logger ) { described_class.new( my_io,
317
- :log_level => 'verbose',
318
- :quiet => true,
319
- :color => true )
320
- }
321
+ subject(:verbose_logger) do
322
+ described_class.new(my_io,
323
+ :log_level => 'verbose',
324
+ :quiet => true,
325
+ :color => true)
326
+ end
321
327
 
322
- its( :is_trace? ) { is_expected.to be_falsy }
323
- its( :is_debug? ) { is_expected.to be_falsy }
324
- its( :is_verbose? ) { is_expected.to be_truthy }
325
- its( :is_warn? ) { is_expected.to be_truthy }
328
+ it do
329
+ expect(subject).to have_attributes(
330
+ :is_trace? => be_falsy,
331
+ :is_debug? => be_falsy,
332
+ :is_verbose? => be_truthy,
333
+ :is_warn? => be_truthy,
334
+ )
335
+ end
326
336
 
327
337
  context 'but print' do
328
338
  before do
329
- allow( my_io ).to receive :puts
330
- expect( my_io ).to receive( :print ).at_least :twice
339
+ allow(my_io).to receive :puts
340
+ expect(my_io).to receive(:print).at_least :twice
331
341
  end
332
342
 
333
- it( 'warnings' ) { verbose_logger.warn 'IMA WARNING!' }
334
- it( 'successes' ) { verbose_logger.success 'SUCCESS!' }
335
- it( 'errors' ) { verbose_logger.error 'ERROR!' }
336
- it( 'host_output' ) { verbose_logger.host_output 'ERROR!' }
337
- it( 'debugs' ) { verbose_logger.debug 'NOT DEBUGGING!' }
343
+ it('warnings') { verbose_logger.warn 'IMA WARNING!' }
344
+ it('successes') { verbose_logger.success 'SUCCESS!' }
345
+ it('errors') { verbose_logger.error 'ERROR!' }
346
+ it('host_output') { verbose_logger.host_output 'ERROR!' }
347
+ it('debugs') { verbose_logger.debug 'NOT DEBUGGING!' }
338
348
  end
339
349
  end
340
350
 
341
351
  context 'at debug log_level' do
342
- subject( :debug_logger ) { described_class.new( my_io,
343
- :log_level => 'debug',
344
- :quiet => true,
345
- :color => true )
346
- }
352
+ subject(:debug_logger) do
353
+ described_class.new(my_io,
354
+ :log_level => 'debug',
355
+ :quiet => true,
356
+ :color => true)
357
+ end
347
358
 
348
- its( :is_trace? ) { is_expected.to be_falsy }
349
- its( :is_debug? ) { is_expected.to be_truthy }
350
- its( :is_warn? ) { is_expected.to be_truthy }
359
+ it do
360
+ expect(subject).to have_attributes(
361
+ :is_trace? => be_falsy,
362
+ :is_debug? => be_truthy,
363
+ :is_warn? => be_truthy,
364
+ )
365
+ end
351
366
 
352
367
  context 'successfully print' do
353
368
  before do
354
- allow( my_io ).to receive :puts
355
- expect( my_io ).to receive( :print ).at_least :twice
369
+ allow(my_io).to receive :puts
370
+ expect(my_io).to receive(:print).at_least :twice
356
371
  end
357
372
 
358
- it( 'warnings' ) { debug_logger.warn 'IMA WARNING!' }
359
- it( 'debugs' ) { debug_logger.debug 'IMA DEBUGGING!' }
360
- it( 'successes' ) { debug_logger.success 'SUCCESS!' }
361
- it( 'errors' ) { debug_logger.error 'ERROR!' }
362
- it( 'host_output' ) { debug_logger.host_output 'ERROR!' }
373
+ it('warnings') { debug_logger.warn 'IMA WARNING!' }
374
+ it('debugs') { debug_logger.debug 'IMA DEBUGGING!' }
375
+ it('successes') { debug_logger.success 'SUCCESS!' }
376
+ it('errors') { debug_logger.error 'ERROR!' }
377
+ it('host_output') { debug_logger.host_output 'ERROR!' }
363
378
  end
364
379
  end
365
380
 
366
381
  context 'at info log_level' do
367
- subject( :info_logger ) { described_class.new( my_io,
368
- :log_level => :info,
369
- :quiet => true,
370
- :color => true )
371
- }
372
-
373
- its( :is_debug? ) { is_expected.to be_falsy }
374
- its( :is_trace? ) { is_expected.to be_falsy }
382
+ subject(:info_logger) do
383
+ described_class.new(my_io,
384
+ :log_level => :info,
385
+ :quiet => true,
386
+ :color => true)
387
+ end
375
388
 
389
+ it do
390
+ expect(subject).to have_attributes(
391
+ :is_debug? => be_falsy,
392
+ :is_trace? => be_falsy,
393
+ )
394
+ end
376
395
 
377
396
  context 'skip' do
378
397
  before do
379
- expect( my_io ).not_to receive :puts
380
- expect( my_io ).not_to receive :print
398
+ expect(my_io).not_to receive :puts
399
+ expect(my_io).not_to receive :print
381
400
  end
382
401
 
383
- it( 'debugs' ) { info_logger.debug 'NOT DEBUGGING!' }
384
- it( 'traces' ) { info_logger.debug 'NOT TRACING!' }
402
+ it('debugs') { info_logger.debug 'NOT DEBUGGING!' }
403
+ it('traces') { info_logger.debug 'NOT TRACING!' }
385
404
  end
386
405
 
387
-
388
406
  context 'but print' do
389
407
  before do
390
- expect( my_io ).to receive :puts
391
- expect( my_io ).to receive( :print ).twice
408
+ expect(my_io).to receive :puts
409
+ expect(my_io).to receive(:print).twice
392
410
  end
393
411
 
394
- it( 'successes' ) { info_logger.success 'SUCCESS!' }
395
- it( 'notifications' ) { info_logger.notify 'NOTFIY!' }
396
- it( 'errors' ) { info_logger.error 'ERROR!' }
412
+ it('successes') { info_logger.success 'SUCCESS!' }
413
+ it('notifications') { info_logger.notify 'NOTFIY!' }
414
+ it('errors') { info_logger.error 'ERROR!' }
397
415
  end
398
416
  end
399
417
 
400
418
  context 'SUT output logging' do
401
-
402
419
  context 'host output logging' do
403
- subject( :host_output ) { described_class.new( my_io,
404
- :log_level => :verbose,
405
- :quiet => true,
406
- :color => true )}
420
+ subject(:host_output) do
421
+ described_class.new(my_io,
422
+ :log_level => :verbose,
423
+ :quiet => true,
424
+ :color => true)
425
+ end
407
426
 
408
427
  it 'outputs GREY when @color is set to true' do
409
428
  colorized_logger = host_output
410
429
 
411
- expect( my_io ).to receive( :print ).with "\e[01;30m"
412
- expect( my_io ).to receive( :print )
413
- expect( my_io ).to receive( :puts ).with 'my string'
430
+ expect(my_io).to receive(:print).with "\e[01;30m"
431
+ expect(my_io).to receive(:print)
432
+ expect(my_io).to receive(:puts).with 'my string'
414
433
 
415
434
  colorized_logger.optionally_color "\e[01;30m", 'my string'
416
435
  end
417
-
418
436
  end
419
437
 
420
438
  context 'color host output' do
421
- subject( :color_host_output ) { described_class.new( my_io,
422
- :log_level => :verbose,
423
- :quiet => true,
424
- :color => true )}
439
+ subject(:color_host_output) do
440
+ described_class.new(my_io,
441
+ :log_level => :verbose,
442
+ :quiet => true,
443
+ :color => true)
444
+ end
425
445
 
426
446
  it 'colors host_output' do
427
447
  colorized_logger = color_host_output
428
448
 
429
- expect( my_io ).to receive( :print ).with ""
430
- expect( my_io ).to receive( :puts ).with 'my string'
449
+ expect(my_io).to receive(:print).with ""
450
+ expect(my_io).to receive(:puts).with 'my string'
431
451
 
432
452
  colorized_logger.optionally_color "", 'my string'
433
453
  end
434
-
435
454
  end
436
455
  end
437
-
438
456
  end
439
-
440
457
  end
441
458
  end
@@ -1,24 +1,24 @@
1
- # encoding: UTF-8
2
1
  require 'spec_helper'
3
2
 
4
3
  module Beaker
5
4
  describe NetworkManager do
6
- let( :mock_provisioning_logger ) {
5
+ let(:mock_provisioning_logger) do
7
6
  mock_provisioning_logger = Object.new
8
- allow( mock_provisioning_logger ).to receive( :notify )
9
- mock_provisioning_logger }
10
- let( :options ) {
7
+ allow(mock_provisioning_logger).to receive(:notify)
8
+ mock_provisioning_logger
9
+ end
10
+ let(:options) do
11
11
  make_opts.merge({
12
- 'logger' => double().as_null_object,
13
- :logger_sut => mock_provisioning_logger,
14
- :log_prefix => @log_prefix,
15
- :hosts_file => @hosts_file,
16
- :default_log_prefix => 'hello_default',
17
- })
18
- }
19
- let( :network_manager ) { described_class.new(options, options[:logger]) }
20
- let( :hosts ) { make_hosts }
21
- let( :host ) { hosts[0] }
12
+ 'logger' => double.as_null_object,
13
+ :logger_sut => mock_provisioning_logger,
14
+ :log_prefix => @log_prefix,
15
+ :hosts_file => @hosts_file,
16
+ :default_log_prefix => 'hello_default',
17
+ })
18
+ end
19
+ let(:network_manager) { described_class.new(options, options[:logger]) }
20
+ let(:hosts) { make_hosts }
21
+ let(:host) { hosts[0] }
22
22
 
23
23
  describe '#log_sut_event' do
24
24
  before do
@@ -31,33 +31,33 @@ module Beaker
31
31
  pieces = log_line.split("\t")
32
32
  hypervisor_value = host['hypervisor'] ? host['hypervisor'] : ''
33
33
  platform_value = host['platform'] ? host['platform'] : ''
34
- expect( pieces[1] ).to be === '[+]'
35
- expect( pieces[2] ).to be === hypervisor_value
36
- expect( pieces[3] ).to be === platform_value
37
- expect( pieces[4] ).to be === host.log_prefix
34
+ expect(pieces[1]).to be === '[+]'
35
+ expect(pieces[2]).to be === hypervisor_value
36
+ expect(pieces[3]).to be === platform_value
37
+ expect(pieces[4]).to be === host.log_prefix
38
38
  end
39
39
 
40
40
  it 'follows the create parameter correctly' do
41
41
  log_line = network_manager.log_sut_event host, true
42
42
  pieces = log_line.split("\t")
43
- expect( pieces[1] ).to be === '[+]'
43
+ expect(pieces[1]).to be === '[+]'
44
44
 
45
45
  log_line = network_manager.log_sut_event host, false
46
46
  pieces = log_line.split("\t")
47
- expect( pieces[1] ).to be === '[-]'
47
+ expect(pieces[1]).to be === '[-]'
48
48
  end
49
49
 
50
50
  it 'sends the log line to the provisioning logger' do
51
51
  nm = network_manager
52
52
  options[:logger_sut] = mock_provisioning_logger
53
- expect( mock_provisioning_logger ).to receive( :notify ).once
53
+ expect(mock_provisioning_logger).to receive(:notify).once
54
54
  nm.log_sut_event host, true
55
55
  end
56
56
 
57
57
  it 'throws an error if the provisioning logger hasn\'t been created yet' do
58
58
  nm = network_manager
59
59
  options.delete(:logger_sut)
60
- expect{ nm.log_sut_event(host, true) }.to raise_error(ArgumentError)
60
+ expect { nm.log_sut_event(host, true) }.to raise_error(ArgumentError)
61
61
  end
62
62
  end
63
63