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,30 +9,28 @@ 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( :logger ) { double("Beaker::Logger", :notify => nil , :debug => nil ) }
17
- let( :url ) { "http://example.com" }
18
- let( :name ) { "name" }
19
- let( :destdir ) { "destdir" }
15
+ let(:logger) { double("Beaker::Logger", :notify => nil, :debug => nil) }
16
+ let(:url) { "http://example.com" }
17
+ let(:name) { "name" }
18
+ let(:destdir) { "destdir" }
20
19
 
21
20
  def fetch_allows
22
- allow( subject ).to receive( :logger ) { logger }
23
- allow( subject ).to receive( :options ) { options }
21
+ allow(subject).to receive(:logger) { logger }
22
+ allow(subject).to receive(:options) { options }
24
23
  end
25
24
 
26
25
  describe "#fetch_http_file" do
27
- let( :presets ) { Beaker::Options::Presets.new }
28
- let( :options ) { presets.presets.merge(presets.env_vars) }
26
+ let(:presets) { Beaker::Options::Presets.new }
27
+ let(:options) { presets.presets.merge(presets.env_vars) }
29
28
 
30
29
  before do
31
30
  fetch_allows
32
31
  end
33
32
 
34
33
  describe "given valid arguments" do
35
-
36
34
  it "returns its second and third arguments concatenated." do
37
35
  concat_path = "#{destdir}/#{name}"
38
36
  create_files([concat_path])
@@ -43,12 +41,12 @@ describe ClassMixedWithDSLHelpers do
43
41
  end
44
42
 
45
43
  it 'doesn\'t cache by default' do
46
- expect( logger ).to receive( :notify ).with( /^Fetching/ ).ordered
47
- expect( logger ).to receive( :notify ).with( /^\ \ and\ saving\ to\ / ).ordered
44
+ expect(logger).to receive(:notify).with(/^Fetching/).ordered
45
+ expect(logger).to receive(:notify).with(/^\ \ and\ saving\ to\ /).ordered
48
46
  allow(URI).to receive(:open).with("#{url}/#{name}").and_return(status: 200)
49
47
  expect(URI).to receive(:open)
50
48
 
51
- subject.fetch_http_file( url, name, destdir )
49
+ subject.fetch_http_file(url, name, destdir)
52
50
  end
53
51
 
54
52
  context ':cache_files_locally option is set' do
@@ -56,57 +54,50 @@ describe ClassMixedWithDSLHelpers do
56
54
  options[:cache_files_locally] = true
57
55
  allow(File).to receive(:exist?).and_return(true)
58
56
 
59
- expect( logger ).to receive( :notify ).with( /^Already\ fetched\ / )
60
- expect( subject ).not_to receive( :open )
57
+ expect(logger).to receive(:notify).with(/^Already\ fetched\ /)
58
+ expect(subject).not_to receive(:open)
61
59
 
62
- subject.fetch_http_file( url, name, destdir )
60
+ subject.fetch_http_file(url, name, destdir)
63
61
  end
64
62
 
65
63
  it 'doesn\'t cache if the file doesn\'t exist locally' do
66
64
  options[:cache_files_locally] = true
67
65
  allow(File).to receive(:exist?).and_return(false)
68
66
 
69
- expect( logger ).to receive( :notify ).with( /^Fetching/ ).ordered
70
- expect( logger ).to receive( :notify ).with( /^\ \ and\ saving\ to\ / ).ordered
67
+ expect(logger).to receive(:notify).with(/^Fetching/).ordered
68
+ expect(logger).to receive(:notify).with(/^\ \ and\ saving\ to\ /).ordered
71
69
  allow(URI).to receive(:open).with("#{url}/#{name}").and_return(status: 200)
72
70
  expect(URI).to receive(:open)
73
71
 
74
- subject.fetch_http_file( url, name, destdir )
72
+ subject.fetch_http_file(url, name, destdir)
75
73
  end
76
74
  end
77
-
78
75
  end
79
76
 
80
77
  describe 'given invalid arguments' do
81
-
82
78
  it 'chomps correctly when given a URL ending with a / character' do
83
79
  allow(URI).to receive(:open).with("#{url}/#{name}").and_return(status: 200)
84
- expect( URI ).to receive( :open ).with( "#{url}/#{name}" )
85
- subject.fetch_http_file( "#{url}/", name, destdir )
80
+ expect(URI).to receive(:open).with("#{url}/#{name}")
81
+ subject.fetch_http_file("#{url}/", name, destdir)
86
82
  end
87
-
88
83
  end
89
-
90
84
  end
91
85
 
92
86
  describe "#fetch_http_dir" do
93
- let( :logger) { double("Beaker::Logger", :notify => nil , :debug => nil ) }
94
- let( :result) { double(:each_line => []) }
95
- let( :status) { double('Process::Status', success?: true) }
87
+ let(:logger) { double("Beaker::Logger", :notify => nil, :debug => nil) }
88
+ let(:result) { double(:each_line => []) }
89
+ let(:status) { double('Process::Status', success?: true) }
96
90
 
97
91
  before do
98
92
  fetch_allows
99
93
  end
100
94
 
101
95
  describe "given valid arguments" do
102
-
103
96
  it "returns basename of first argument concatenated to second." do
104
97
  expect(Open3).to receive(:capture2e).with(/^wget.*/).ordered { result }.and_return(['', status])
105
98
  result = subject.fetch_http_dir "#{url}/beep", destdir
106
99
  expect(result).to eq("#{destdir}/beep")
107
100
  end
108
-
109
101
  end
110
-
111
102
  end
112
103
  end
@@ -7,38 +7,38 @@ end
7
7
  describe ClassMixedWithDSLOutcomes do
8
8
  let(:logger) { double }
9
9
 
10
- before { allow( subject ).to receive( :logger ).and_return( logger ) }
10
+ before { allow(subject).to receive(:logger).and_return(logger) }
11
11
 
12
12
  describe '#pass_test' do
13
13
  it "logs the notification passed to it and raises PassTest" do
14
- expect( logger ).to receive( :notify ).with( /blah/ )
15
- expect { subject.pass_test('blah') }.
16
- to raise_error Beaker::DSL::Outcomes::PassTest
14
+ expect(logger).to receive(:notify).with(/blah/)
15
+ expect { subject.pass_test('blah') }
16
+ .to raise_error Beaker::DSL::Outcomes::PassTest
17
17
  end
18
18
  end
19
19
 
20
20
  describe '#skip_test' do
21
21
  it "logs the notification passed to it and raises SkipTest" do
22
- expect( logger ).to receive( :notify ).with( /blah/ )
23
- expect { subject.skip_test('blah') }.
24
- to raise_error Beaker::DSL::Outcomes::SkipTest
22
+ expect(logger).to receive(:notify).with(/blah/)
23
+ expect { subject.skip_test('blah') }
24
+ .to raise_error Beaker::DSL::Outcomes::SkipTest
25
25
  end
26
26
  end
27
27
 
28
28
  describe '#pending_test' do
29
29
  it "logs the notification passed to it and raises PendingTest" do
30
- expect( logger ).to receive( :warn ).with( /blah/ )
31
- expect { subject.pending_test('blah') }.
32
- to raise_error Beaker::DSL::Outcomes::PendingTest
30
+ expect(logger).to receive(:warn).with(/blah/)
31
+ expect { subject.pending_test('blah') }
32
+ .to raise_error Beaker::DSL::Outcomes::PendingTest
33
33
  end
34
34
  end
35
35
 
36
36
  describe '#fail_test' do
37
37
  it "logs the notification passed to it and raises FailTest" do
38
- expect( logger ).to receive( :warn )
39
- expect( logger ).to receive( :pretty_backtrace )
40
- expect { subject.fail_test('blah') }.
41
- to raise_error Beaker::DSL::Outcomes::FailTest
38
+ expect(logger).to receive(:warn)
39
+ expect(logger).to receive(:pretty_backtrace)
40
+ expect { subject.fail_test('blah') }
41
+ .to raise_error Beaker::DSL::Outcomes::FailTest
42
42
  end
43
43
  end
44
44
  end