beaker 4.40.1 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +9 -0
- data/.github/workflows/release.yml +2 -2
- data/.github/workflows/test.yml +26 -13
- data/.rubocop.yml +23 -10
- data/.rubocop_todo.yml +34 -10
- data/CHANGELOG.md +13 -11
- data/Gemfile +12 -7
- data/Rakefile +99 -111
- data/acceptance/config/acceptance-options.rb +1 -1
- data/acceptance/config/base/acceptance-options.rb +2 -2
- data/acceptance/config/hypervisor/acceptance-options.rb +2 -2
- data/acceptance/config/subcommands/acceptance-options.rb +2 -2
- data/acceptance/fixtures/module/Rakefile +1 -1
- data/acceptance/fixtures/module/spec/acceptance/demo_spec.rb +8 -12
- data/acceptance/fixtures/module/spec/classes/init_spec.rb +0 -1
- data/acceptance/fixtures/module/spec/spec_helper_acceptance.rb +3 -5
- data/acceptance/lib/helpers/test_helper.rb +4 -3
- data/acceptance/pre_suite/subcommands/05_install_ruby.rb +2 -3
- data/acceptance/pre_suite/subcommands/08_install_beaker.rb +1 -2
- data/acceptance/tests/base/dsl/helpers/configuration_test.rb +4 -4
- data/acceptance/tests/base/dsl/helpers/hocon_helpers_test.rb +1 -2
- data/acceptance/tests/base/dsl/helpers/host_helpers/add_system32_hosts_entry_test.rb +0 -3
- data/acceptance/tests/base/dsl/helpers/host_helpers/archive_file_from_test.rb +3 -1
- data/acceptance/tests/base/dsl/helpers/host_helpers/backup_the_file_test.rb +9 -9
- data/acceptance/tests/base/dsl/helpers/host_helpers/check_for_package_test.rb +0 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/create_remote_file_test.rb +19 -26
- data/acceptance/tests/base/dsl/helpers/host_helpers/curl_on_test.rb +2 -2
- data/acceptance/tests/base/dsl/helpers/host_helpers/curl_with_retries_test.rb +0 -1
- data/acceptance/tests/base/dsl/helpers/host_helpers/on_test.rb +18 -13
- data/acceptance/tests/base/dsl/helpers/host_helpers/retry_on_test.rb +3 -3
- data/acceptance/tests/base/dsl/helpers/host_helpers/rsync_to_test.rb +22 -27
- data/acceptance/tests/base/dsl/helpers/host_helpers/run_cron_on_test.rb +12 -16
- data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_on_test.rb +3 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_test.rb +3 -3
- data/acceptance/tests/base/dsl/helpers/host_helpers/scp_from_test.rb +4 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/scp_to_test.rb +3 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/shell_test.rb +5 -5
- data/acceptance/tests/base/dsl/helpers/host_helpers/upgrade_package_test.rb +3 -5
- data/acceptance/tests/base/dsl/platform_tag_confiner_test.rb +14 -17
- data/acceptance/tests/base/dsl/structure_test.rb +5 -11
- data/acceptance/tests/base/host/file_test.rb +2 -2
- data/acceptance/tests/base/host/group_test.rb +0 -1
- data/acceptance/tests/base/host/host_test.rb +66 -63
- data/acceptance/tests/base/host/packages.rb +1 -2
- data/acceptance/tests/base/host/packages_unix.rb +0 -55
- data/acceptance/tests/base/host/user_test.rb +0 -1
- data/acceptance/tests/base/host_prebuilt_steps/ssh_environment_test.rb +1 -2
- data/acceptance/tests/base/test_suite/export.rb +6 -9
- data/acceptance/tests/install/from_file.rb +2 -4
- data/acceptance/tests/load_path_bootstrap.rb +1 -1
- data/acceptance/tests/subcommands/destroy.rb +19 -21
- data/acceptance/tests/subcommands/exec.rb +0 -1
- data/acceptance/tests/subcommands/init.rb +2 -3
- data/acceptance/tests/subcommands/provision.rb +0 -1
- data/beaker.gemspec +4 -7
- data/docs/concepts/argument_processing_and_precedence.md +1 -10
- data/docs/how_to/debug_beaker_tests.md +12 -12
- data/docs/how_to/hosts/eos.md +2 -12
- data/docs/how_to/install_puppet.md +0 -18
- data/docs/how_to/the_beaker_dsl.md +0 -2
- data/lib/beaker/cli.rb +59 -68
- data/lib/beaker/command.rb +20 -28
- data/lib/beaker/command_factory.rb +3 -2
- data/lib/beaker/dsl/assertions.rb +6 -18
- data/lib/beaker/dsl/helpers/hocon_helpers.rb +3 -7
- data/lib/beaker/dsl/helpers/host_helpers.rb +62 -123
- data/lib/beaker/dsl/helpers/test_helpers.rb +3 -5
- data/lib/beaker/dsl/helpers/web_helpers.rb +19 -39
- data/lib/beaker/dsl/helpers.rb +2 -4
- data/lib/beaker/dsl/outcomes.rb +13 -15
- data/lib/beaker/dsl/patterns.rb +1 -3
- data/lib/beaker/dsl/roles.rb +17 -20
- data/lib/beaker/dsl/structure.rb +53 -65
- data/lib/beaker/dsl/test_tagging.rb +7 -10
- data/lib/beaker/dsl/wrappers.rb +15 -16
- data/lib/beaker/dsl.rb +2 -3
- data/lib/beaker/host/aix/exec.rb +1 -1
- data/lib/beaker/host/aix/file.rb +0 -1
- data/lib/beaker/host/aix/group.rb +1 -1
- data/lib/beaker/host/aix/user.rb +1 -1
- data/lib/beaker/host/aix.rb +3 -4
- data/lib/beaker/host/cisco.rb +27 -39
- data/lib/beaker/host/eos.rb +4 -30
- data/lib/beaker/host/freebsd/exec.rb +1 -1
- data/lib/beaker/host/freebsd/pkg.rb +3 -3
- data/lib/beaker/host/freebsd.rb +9 -12
- data/lib/beaker/host/mac/exec.rb +4 -4
- data/lib/beaker/host/mac/group.rb +7 -7
- data/lib/beaker/host/mac/pkg.rb +3 -106
- data/lib/beaker/host/mac/user.rb +2 -2
- data/lib/beaker/host/mac.rb +8 -9
- data/lib/beaker/host/pswindows/exec.rb +66 -70
- data/lib/beaker/host/pswindows/file.rb +3 -5
- data/lib/beaker/host/pswindows/group.rb +3 -3
- data/lib/beaker/host/pswindows/pkg.rb +12 -12
- data/lib/beaker/host/pswindows/user.rb +3 -3
- data/lib/beaker/host/pswindows.rb +4 -3
- data/lib/beaker/host/unix/exec.rb +80 -82
- data/lib/beaker/host/unix/file.rb +38 -43
- data/lib/beaker/host/unix/group.rb +1 -1
- data/lib/beaker/host/unix/pkg.rb +154 -417
- data/lib/beaker/host/unix/user.rb +2 -2
- data/lib/beaker/host/unix.rb +8 -11
- data/lib/beaker/host/windows/exec.rb +17 -17
- data/lib/beaker/host/windows/file.rb +3 -3
- data/lib/beaker/host/windows/group.rb +3 -3
- data/lib/beaker/host/windows/pkg.rb +3 -54
- data/lib/beaker/host/windows/user.rb +3 -3
- data/lib/beaker/host/windows.rb +12 -12
- data/lib/beaker/host.rb +76 -133
- data/lib/beaker/host_prebuilt_steps.rb +93 -198
- data/lib/beaker/hypervisor/noop.rb +2 -4
- data/lib/beaker/hypervisor.rb +44 -61
- data/lib/beaker/local_connection.rb +2 -4
- data/lib/beaker/logger.rb +68 -76
- data/lib/beaker/logger_junit.rb +21 -25
- data/lib/beaker/network_manager.rb +39 -42
- data/lib/beaker/options/command_line_parser.rb +12 -23
- data/lib/beaker/options/hosts_file_parser.rb +16 -24
- data/lib/beaker/options/options_file_parser.rb +3 -6
- data/lib/beaker/options/options_hash.rb +2 -7
- data/lib/beaker/options/parser.rb +86 -102
- data/lib/beaker/options/presets.rb +114 -123
- data/lib/beaker/options/subcommand_options_file_parser.rb +3 -6
- data/lib/beaker/options/validator.rb +26 -31
- data/lib/beaker/perf.rb +22 -27
- data/lib/beaker/platform.rb +38 -46
- data/lib/beaker/result.rb +7 -6
- data/lib/beaker/shared/error_handler.rb +8 -10
- data/lib/beaker/shared/fog_credentials.rb +5 -9
- data/lib/beaker/shared/host_manager.rb +36 -41
- data/lib/beaker/shared/options_resolver.rb +3 -7
- data/lib/beaker/shared/repetition.rb +2 -4
- data/lib/beaker/shared/semvar.rb +37 -41
- data/lib/beaker/shared/timed.rb +0 -3
- data/lib/beaker/shared.rb +1 -1
- data/lib/beaker/ssh_connection.rb +38 -47
- data/lib/beaker/subcommand.rb +17 -24
- data/lib/beaker/subcommands/subcommand_util.rb +4 -4
- data/lib/beaker/tasks/quick_start.rb +4 -9
- data/lib/beaker/tasks/rake_task.rb +25 -27
- data/lib/beaker/tasks/test.rb +4 -4
- data/lib/beaker/test_case.rb +15 -27
- data/lib/beaker/test_suite.rb +35 -39
- data/lib/beaker/test_suite_result.rb +45 -47
- data/lib/beaker/version.rb +1 -1
- data/lib/beaker.rb +5 -6
- data/spec/beaker/cli_spec.rb +121 -142
- data/spec/beaker/command_spec.rb +55 -59
- data/spec/beaker/dsl/assertions_spec.rb +36 -36
- data/spec/beaker/dsl/helpers/host_helpers_spec.rb +110 -131
- data/spec/beaker/dsl/helpers/test_helpers_spec.rb +9 -10
- data/spec/beaker/dsl/helpers/web_helpers_spec.rb +22 -31
- data/spec/beaker/dsl/outcomes_spec.rb +14 -14
- data/spec/beaker/dsl/roles_spec.rb +125 -130
- data/spec/beaker/dsl/structure_spec.rb +169 -158
- data/spec/beaker/dsl/test_tagging_spec.rb +89 -90
- data/spec/beaker/dsl/wrappers_spec.rb +32 -33
- data/spec/beaker/host/aix_spec.rb +14 -14
- data/spec/beaker/host/cisco_spec.rb +84 -94
- data/spec/beaker/host/eos_spec.rb +15 -36
- data/spec/beaker/host/freebsd/exec_spec.rb +3 -6
- data/spec/beaker/host/freebsd/pkg_spec.rb +24 -27
- data/spec/beaker/host/mac/exec_spec.rb +2 -3
- data/spec/beaker/host/mac/group_spec.rb +47 -56
- data/spec/beaker/host/mac/user_spec.rb +53 -62
- data/spec/beaker/host/pswindows/exec_spec.rb +30 -32
- data/spec/beaker/host/pswindows/file_spec.rb +16 -16
- data/spec/beaker/host/pswindows/user_spec.rb +17 -23
- data/spec/beaker/host/pswindows_spec.rb +13 -13
- data/spec/beaker/host/unix/exec_spec.rb +75 -80
- data/spec/beaker/host/unix/file_spec.rb +66 -73
- data/spec/beaker/host/unix/pkg_spec.rb +155 -401
- data/spec/beaker/host/unix_spec.rb +11 -207
- data/spec/beaker/host/windows/exec_spec.rb +30 -32
- data/spec/beaker/host/windows/file_spec.rb +18 -19
- data/spec/beaker/host/windows/group_spec.rb +10 -12
- data/spec/beaker/host/windows/pkg_spec.rb +6 -9
- data/spec/beaker/host/windows/user_spec.rb +17 -23
- data/spec/beaker/host/windows_spec.rb +39 -39
- data/spec/beaker/host_prebuilt_steps_spec.rb +172 -326
- data/spec/beaker/host_spec.rb +204 -284
- data/spec/beaker/hypervisor/hypervisor_spec.rb +36 -61
- data/spec/beaker/localhost_connection_spec.rb +10 -11
- data/spec/beaker/logger_junit_spec.rb +19 -30
- data/spec/beaker/logger_spec.rb +153 -136
- data/spec/beaker/network_manager_spec.rb +23 -23
- data/spec/beaker/options/command_line_parser_spec.rb +20 -23
- data/spec/beaker/options/hosts_file_parser_spec.rb +30 -32
- data/spec/beaker/options/options_file_parser_spec.rb +4 -7
- data/spec/beaker/options/options_hash_spec.rb +4 -6
- data/spec/beaker/options/parser_spec.rb +167 -167
- data/spec/beaker/options/presets_spec.rb +7 -9
- data/spec/beaker/options/subcommand_options_parser_spec.rb +13 -14
- data/spec/beaker/options/validator_spec.rb +10 -11
- data/spec/beaker/perf_spec.rb +18 -21
- data/spec/beaker/platform_spec.rb +25 -36
- data/spec/beaker/shared/error_handler_spec.rb +7 -16
- data/spec/beaker/shared/fog_credentials_spec.rb +29 -29
- data/spec/beaker/shared/host_manager_spec.rb +50 -84
- data/spec/beaker/shared/options_resolver_spec.rb +9 -12
- data/spec/beaker/shared/repetition_spec.rb +17 -24
- data/spec/beaker/shared/semvar_spec.rb +21 -26
- data/spec/beaker/ssh_connection_spec.rb +76 -83
- data/spec/beaker/subcommand/subcommand_util_spec.rb +31 -33
- data/spec/beaker/subcommand_spec.rb +75 -77
- data/spec/beaker/test_case_spec.rb +25 -50
- data/spec/beaker/test_suite_spec.rb +147 -154
- data/spec/helpers.rb +48 -53
- data/spec/matchers.rb +8 -7
- data/spec/mocks.rb +1 -6
- data/spec/spec_helper.rb +0 -1
- metadata +7 -24
- data/acceptance/tests/base/dsl/helpers/host_helpers/deploy_package_repo_test.rb +0 -142
- data/acceptance/tests/base/external_resources_test.rb +0 -31
- data/spec/beaker/host/mac_spec.rb +0 -113
@@ -3,32 +3,32 @@ require 'spec_helper'
|
|
3
3
|
module PSWindows
|
4
4
|
describe Host do
|
5
5
|
let(:options) { @options ? @options : {} }
|
6
|
-
let(:platform)
|
6
|
+
let(:platform) do
|
7
7
|
if @platform
|
8
|
-
{ :platform => Beaker::Platform.new(
|
8
|
+
{ :platform => Beaker::Platform.new(@platform) }
|
9
9
|
else
|
10
|
-
{ :platform => Beaker::Platform.new(
|
10
|
+
{ :platform => Beaker::Platform.new('windows-vers-arch-extra') }
|
11
11
|
end
|
12
|
-
|
13
|
-
let(:host)
|
12
|
+
end
|
13
|
+
let(:host) do
|
14
14
|
opts = options.merge(platform)
|
15
15
|
opts[:is_cygwin] = false
|
16
|
-
make_host(
|
17
|
-
|
16
|
+
make_host('name', opts)
|
17
|
+
end
|
18
18
|
|
19
19
|
describe '#external_copy_base' do
|
20
20
|
it 'returns previously calculated value if set' do
|
21
|
-
external_copy_base_before = host.instance_variable_get(
|
21
|
+
external_copy_base_before = host.instance_variable_get(:@external_copy_base)
|
22
22
|
test_value = :testn8391
|
23
|
-
host.instance_variable_set(
|
23
|
+
host.instance_variable_set(:@external_copy_base, test_value)
|
24
24
|
|
25
|
-
expect(
|
26
|
-
expect(
|
27
|
-
host.instance_variable_set(
|
25
|
+
expect(host).not_to receive(:execute)
|
26
|
+
expect(host.external_copy_base).to be === test_value
|
27
|
+
host.instance_variable_set(:@external_copy_base, external_copy_base_before)
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'calls the correct command if unset' do
|
31
|
-
expect(
|
31
|
+
expect(host).to receive(:execute).with(/^for\ .*ALLUSERSPROFILE.*\%\~I$/)
|
32
32
|
host.external_copy_base
|
33
33
|
end
|
34
34
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Beaker
|
4
|
-
|
5
4
|
describe Unix::Exec do
|
6
5
|
class UnixExecTest
|
7
6
|
include Unix::Exec
|
@@ -18,19 +17,17 @@ module Beaker
|
|
18
17
|
def to_s
|
19
18
|
"me"
|
20
19
|
end
|
21
|
-
|
22
20
|
end
|
23
21
|
|
24
22
|
let(:opts) { @opts || {} }
|
25
|
-
let(:logger) { double(
|
23
|
+
let(:logger) { double('logger').as_null_object }
|
26
24
|
let(:instance) { UnixExecTest.new(opts, logger) }
|
27
25
|
|
28
26
|
context "rm" do
|
29
|
-
|
30
27
|
it "deletes" do
|
31
28
|
path = '/path/to/delete'
|
32
|
-
expect(
|
33
|
-
expect(
|
29
|
+
expect(instance).to receive(:execute).with("rm -rf #{path}").and_return(0)
|
30
|
+
expect(instance.rm_rf(path)).to be === 0
|
34
31
|
end
|
35
32
|
end
|
36
33
|
|
@@ -39,15 +36,14 @@ module Beaker
|
|
39
36
|
let(:destination) { '/destination/path/of/content' }
|
40
37
|
|
41
38
|
it 'rm first' do
|
42
|
-
expect(
|
43
|
-
expect(
|
44
|
-
expect(
|
45
|
-
|
39
|
+
expect(instance).to receive(:execute).with("rm -rf #{destination}").and_return(0)
|
40
|
+
expect(instance).to receive(:execute).with("mv #{origin} #{destination}").and_return(0)
|
41
|
+
expect(instance.mv(origin, destination)).to be === 0
|
46
42
|
end
|
47
43
|
|
48
44
|
it 'does not rm' do
|
49
|
-
|
50
|
-
|
45
|
+
expect(instance).to receive(:execute).with("mv #{origin} #{destination}").and_return(0)
|
46
|
+
expect(instance.mv(origin, destination, false)).to be === 0
|
51
47
|
end
|
52
48
|
end
|
53
49
|
|
@@ -55,36 +51,36 @@ module Beaker
|
|
55
51
|
it 'calls execute with touch and timestamp' do
|
56
52
|
time = '190101010000'
|
57
53
|
path = '/path/to/file'
|
58
|
-
expect(
|
54
|
+
expect(instance).to receive(:execute).with("/bin/touch -mt #{time} #{path}").and_return(0)
|
59
55
|
|
60
56
|
instance.modified_at(path, time)
|
61
57
|
end
|
62
58
|
end
|
63
59
|
|
64
60
|
describe '#environment_string' do
|
65
|
-
let(:host) { {'pathseparator' => ':'} }
|
61
|
+
let(:host) { { 'pathseparator' => ':' } }
|
66
62
|
|
67
63
|
it 'returns a blank string if theres no env' do
|
68
|
-
expect(
|
69
|
-
expect(
|
64
|
+
expect(instance).not_to receive(:is_powershell?)
|
65
|
+
expect(instance.environment_string({})).to be == ''
|
70
66
|
end
|
71
67
|
|
72
68
|
it 'takes an env hash with var_name/value pairs' do
|
73
|
-
expect(
|
74
|
-
to be == 'env HOME="/" http_proxy="http://foo" HTTP_PROXY="http://foo"'
|
69
|
+
expect(instance.environment_string({ :HOME => '/', :http_proxy => 'http://foo' }))
|
70
|
+
.to be == 'env HOME="/" http_proxy="http://foo" HTTP_PROXY="http://foo"'
|
75
71
|
end
|
76
72
|
|
77
73
|
it 'takes an env hash with var_name/value[Array] pairs' do
|
78
|
-
expect(
|
79
|
-
to be == "env LD_PATH=\"/:/tmp\""
|
74
|
+
expect(instance.environment_string({ :LD_PATH => ['/', '/tmp'] }))
|
75
|
+
.to be == "env LD_PATH=\"/:/tmp\""
|
80
76
|
end
|
81
77
|
end
|
82
78
|
|
83
79
|
describe '#ssh_permit_user_environment' do
|
84
80
|
context 'When called without error' do
|
85
|
-
let(:directory) {'/directory'}
|
86
|
-
let(:ssh_command) {"echo 'PermitUserEnvironment yes' | cat - /etc/ssh/sshd_config > #{directory}/sshd_config.permit"}
|
87
|
-
let(:ssh_move) {"mv #{directory}/sshd_config.permit /etc/ssh/sshd_config"}
|
81
|
+
let(:directory) { '/directory' }
|
82
|
+
let(:ssh_command) { "echo 'PermitUserEnvironment yes' | cat - /etc/ssh/sshd_config > #{directory}/sshd_config.permit" }
|
83
|
+
let(:ssh_move) { "mv #{directory}/sshd_config.permit /etc/ssh/sshd_config" }
|
88
84
|
|
89
85
|
platforms = PlatformHelpers::SYSTEMDPLATFORMS + PlatformHelpers::DEBIANPLATFORMS + PlatformHelpers::SYSTEMVPLATFORMS
|
90
86
|
|
@@ -96,16 +92,16 @@ module Beaker
|
|
96
92
|
expect(Beaker::Command).to receive(:new).with(ssh_move)
|
97
93
|
expect(Beaker::Command).to receive(:new).with(ssh_command)
|
98
94
|
expect(instance).to receive(:ssh_service_restart)
|
99
|
-
expect{instance.ssh_permit_user_environment}.not_to raise_error
|
95
|
+
expect { instance.ssh_permit_user_environment }.not_to raise_error
|
100
96
|
end
|
101
97
|
end
|
102
98
|
end
|
103
99
|
|
104
100
|
it 'raises an error on unsupported platforms' do
|
105
101
|
opts['platform'] = 'notarealthing01-parts-arch'
|
106
|
-
expect
|
102
|
+
expect do
|
107
103
|
instance.ssh_permit_user_environment
|
108
|
-
|
104
|
+
end.to raise_error(ArgumentError, /#{opts['platform']}/)
|
109
105
|
end
|
110
106
|
end
|
111
107
|
|
@@ -115,7 +111,7 @@ module Beaker
|
|
115
111
|
opts['platform'] = platform
|
116
112
|
expect(instance).to receive(:exec)
|
117
113
|
expect(Beaker::Command).to receive(:new).with("systemctl restart sshd.service")
|
118
|
-
expect{instance.ssh_service_restart}.not_to raise_error
|
114
|
+
expect { instance.ssh_service_restart }.not_to raise_error
|
119
115
|
end
|
120
116
|
end
|
121
117
|
|
@@ -124,7 +120,7 @@ module Beaker
|
|
124
120
|
opts['platform'] = platform
|
125
121
|
expect(instance).to receive(:exec)
|
126
122
|
expect(Beaker::Command).to receive(:new).with("service ssh restart")
|
127
|
-
expect{instance.ssh_service_restart}.not_to raise_error
|
123
|
+
expect { instance.ssh_service_restart }.not_to raise_error
|
128
124
|
end
|
129
125
|
end
|
130
126
|
|
@@ -133,37 +129,37 @@ module Beaker
|
|
133
129
|
opts['platform'] = "#{platform}-arch"
|
134
130
|
expect(instance).to receive(:exec)
|
135
131
|
expect(Beaker::Command).to receive(:new).with("/sbin/service sshd restart")
|
136
|
-
expect{instance.ssh_service_restart}.not_to raise_error
|
132
|
+
expect { instance.ssh_service_restart }.not_to raise_error
|
137
133
|
end
|
138
134
|
end
|
139
135
|
|
140
136
|
it 'raises an error on unsupported platforms' do
|
141
137
|
opts['platform'] = 'notarealthing02-parts-arch'
|
142
|
-
expect
|
138
|
+
expect do
|
143
139
|
instance.ssh_service_restart
|
144
|
-
|
140
|
+
end.to raise_error(ArgumentError, /#{opts['platform']}/)
|
145
141
|
end
|
146
142
|
end
|
147
143
|
|
148
144
|
describe '#prepend_commands' do
|
149
145
|
it 'returns the pc parameter unchanged for non-cisco platforms' do
|
150
|
-
allow(
|
146
|
+
allow(instance).to receive(:[]).with(:platform).and_return('notcisco')
|
151
147
|
answer_prepend_commands = 'pc_param_unchanged_13579'
|
152
|
-
answer_test = instance.prepend_commands(
|
153
|
-
expect(
|
148
|
+
answer_test = instance.prepend_commands('fake_cmd', answer_prepend_commands)
|
149
|
+
expect(answer_test).to be === answer_prepend_commands
|
154
150
|
end
|
155
151
|
end
|
156
152
|
|
157
153
|
describe '#selinux_enabled?' do
|
158
154
|
it 'calls selinuxenabled and selinux is enabled' do
|
159
155
|
expect(Beaker::Command).to receive(:new).with("sudo selinuxenabled").and_return(0)
|
160
|
-
expect(instance).to receive(:exec).with(0, :accept_all_exit_codes => true).and_return(generate_result("test", {:exit_code => 0}))
|
156
|
+
expect(instance).to receive(:exec).with(0, :accept_all_exit_codes => true).and_return(generate_result("test", { :exit_code => 0 }))
|
161
157
|
expect(instance.selinux_enabled?).to be === true
|
162
158
|
end
|
163
159
|
|
164
160
|
it 'calls selinuxenabled and selinux is not enabled' do
|
165
161
|
expect(Beaker::Command).to receive(:new).with("sudo selinuxenabled").and_return(1)
|
166
|
-
expect(instance).to receive(:exec).with(1, :accept_all_exit_codes => true).and_return(generate_result("test", {:exit_code => 1}))
|
162
|
+
expect(instance).to receive(:exec).with(1, :accept_all_exit_codes => true).and_return(generate_result("test", { :exit_code => 1 }))
|
167
163
|
expect(instance.selinux_enabled?).to be === false
|
168
164
|
end
|
169
165
|
end
|
@@ -178,14 +174,14 @@ module Beaker
|
|
178
174
|
:success => " system boot #{year}-05-13 03:52",
|
179
175
|
},
|
180
176
|
:last => {
|
181
|
-
|
177
|
+
:initial => <<~LAST_F,
|
182
178
|
reboot system boot 2.6.32-754.29.1. Tue May 5 17:34:52 #{year} - Tue May 5 17:52:48 #{year} (00:17)
|
183
179
|
reboot system boot 2.6.32-754.29.1. Mon May 4 18:45:43 #{year} - Mon May 5 05:35:44 #{year} (4+01:50)
|
184
|
-
|
185
|
-
|
180
|
+
LAST_F
|
181
|
+
:success => <<~LAST_F,
|
186
182
|
reboot system boot 2.6.32-754.29.1. Tue May 5 17:52:48 #{year} - Tue May 5 17:52:49 #{year} (00:17)
|
187
183
|
reboot system boot 2.6.32-754.29.1. Mon May 4 18:45:43 #{year} - Mon May 5 05:35:44 #{year} (4+01:50)
|
188
|
-
|
184
|
+
LAST_F
|
189
185
|
},
|
190
186
|
},
|
191
187
|
:centos7 => {
|
@@ -194,14 +190,14 @@ module Beaker
|
|
194
190
|
:success => " system boot #{year}-05-13 03:52",
|
195
191
|
},
|
196
192
|
:last => {
|
197
|
-
|
193
|
+
:initial => <<~LAST_F,
|
198
194
|
reboot system boot 3.10.0-1127.el7. Tue May 5 17:34:52 #{year} - Tue May 5 17:52:48 #{year} (00:17)
|
199
195
|
reboot system boot 3.10.0-1127.el7. Mon May 4 18:45:43 #{year} - Mon May 5 05:35:44 #{year} (4+01:50)
|
200
|
-
|
201
|
-
|
196
|
+
LAST_F
|
197
|
+
:success => <<~LAST_F,
|
202
198
|
reboot system boot 3.10.0-1127.el7. Tue May 5 17:52:48 #{year} - Tue May 5 17:52:49 #{year} (00:17)
|
203
199
|
reboot system boot 3.10.0-1127.el7. Mon May 4 18:45:43 #{year} - Mon May 5 05:35:44 #{year} (4+01:50)
|
204
|
-
|
200
|
+
LAST_F
|
205
201
|
},
|
206
202
|
},
|
207
203
|
:centos8 => {
|
@@ -210,14 +206,14 @@ module Beaker
|
|
210
206
|
:success => " system boot #{year}-05-13 03:52",
|
211
207
|
},
|
212
208
|
:last => {
|
213
|
-
|
209
|
+
:initial => <<~LAST_F,
|
214
210
|
reboot system boot 4.18.0-147.8.1.e Tue May 5 17:34:52 #{year} still running
|
215
211
|
reboot system boot 4.18.0-147.8.1.e Mon May 4 17:41:27 #{year} - Tue May 5 17:00:00 #{year} (5+00:11)
|
216
|
-
|
217
|
-
|
212
|
+
LAST_F
|
213
|
+
:success => <<~LAST_F,
|
218
214
|
reboot system boot 4.18.0-147.8.1.e Tue May 5 17:34:53 #{year} still running
|
219
215
|
reboot system boot 4.18.0-147.8.1.e Mon May 4 17:41:27 #{year} - Tue May 5 17:00:00 #{year} (5+00:11)
|
220
|
-
|
216
|
+
LAST_F
|
221
217
|
},
|
222
218
|
},
|
223
219
|
:freebsd => {
|
@@ -225,15 +221,15 @@ module Beaker
|
|
225
221
|
:who => {
|
226
222
|
:initial => ' system boot May 13 03:51',
|
227
223
|
:success => ' system boot May 13 03:52',
|
228
|
-
}
|
224
|
+
},
|
229
225
|
},
|
230
226
|
}
|
231
227
|
|
232
228
|
# no-op response
|
233
|
-
let(:response) { double(
|
234
|
-
let(:boot_time_initial_response) { double(
|
229
|
+
let(:response) { double('response') }
|
230
|
+
let(:boot_time_initial_response) { double('response') }
|
235
231
|
|
236
|
-
let(:boot_time_success_response) { double(
|
232
|
+
let(:boot_time_success_response) { double('response') }
|
237
233
|
let(:sleep_time) { 10 }
|
238
234
|
|
239
235
|
before do
|
@@ -259,46 +255,46 @@ module Beaker
|
|
259
255
|
it 'passes with defaults' do
|
260
256
|
expect(instance).to receive(:sleep).with(sleep_time)
|
261
257
|
# bypass shutdown command itself
|
262
|
-
expect(instance).to receive(
|
263
|
-
expect(instance).to receive(
|
258
|
+
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response)
|
259
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
264
260
|
# allow the second boot_time and the hash arguments in exec
|
265
|
-
expect(instance).to receive(
|
261
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_success_response).once
|
266
262
|
|
267
|
-
expect(instance.reboot).to
|
263
|
+
expect(instance.reboot).to be_nil
|
268
264
|
end
|
269
265
|
|
270
266
|
it 'passes with wait_time_parameter' do
|
271
267
|
expect(instance).to receive(:sleep).with(10)
|
272
268
|
# bypass shutdown command itself
|
273
|
-
expect(instance).to receive(
|
274
|
-
expect(instance).to receive(
|
269
|
+
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response).once
|
270
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
275
271
|
# allow the second boot_time and the hash arguments in exec
|
276
|
-
expect(instance).to receive(
|
272
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_success_response).once
|
277
273
|
|
278
|
-
expect(instance.reboot(10)).to
|
274
|
+
expect(instance.reboot(10)).to be_nil
|
279
275
|
end
|
280
276
|
|
281
277
|
it 'passes with max_connection_tries parameter' do
|
282
278
|
expect(instance).to receive(:sleep).with(sleep_time)
|
283
279
|
# bypass shutdown command itself
|
284
|
-
expect(instance).to receive(
|
285
|
-
expect(instance).to receive(
|
280
|
+
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response).once
|
281
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
286
282
|
# allow the second boot_time and the hash arguments in exec
|
287
|
-
expect(instance).to receive(
|
283
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, hash_including(:max_connection_tries => 20)).and_return(boot_time_success_response).once
|
288
284
|
|
289
|
-
expect(instance.reboot(sleep_time, 20)).to
|
285
|
+
expect(instance.reboot(sleep_time, 20)).to be_nil
|
290
286
|
end
|
291
287
|
|
292
288
|
context 'command errors' do
|
293
289
|
before do
|
294
|
-
allow(instance).to receive(
|
290
|
+
allow(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).at_least(:once)
|
295
291
|
end
|
296
292
|
|
297
293
|
it 'raises a reboot failure when command fails' do
|
298
294
|
expect(instance).to receive(:sleep).at_least(:once)
|
299
295
|
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_raise(Host::CommandFailure).at_least(:once)
|
300
296
|
|
301
|
-
expect{ instance.reboot }.to raise_error(Beaker::Host::CommandFailure)
|
297
|
+
expect { instance.reboot }.to raise_error(Beaker::Host::CommandFailure)
|
302
298
|
end
|
303
299
|
|
304
300
|
it 'raises a reboot failure when we receive an unexpected error' do
|
@@ -314,7 +310,7 @@ module Beaker
|
|
314
310
|
|
315
311
|
it 'raises a reboot failure' do
|
316
312
|
# Handle the 'retry'
|
317
|
-
allow(instance).to receive(
|
313
|
+
allow(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).at_least(:once)
|
318
314
|
|
319
315
|
expect(instance).not_to receive(:sleep)
|
320
316
|
|
@@ -327,11 +323,11 @@ module Beaker
|
|
327
323
|
|
328
324
|
it 'raises a reboot failure' do
|
329
325
|
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response).once
|
330
|
-
expect(instance).to receive(
|
326
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
331
327
|
# allow the second boot_time and the hash arguments in exec, repeated 10 times by default
|
332
|
-
expect(instance).to receive(
|
328
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_success_response).at_least(:once)
|
333
329
|
|
334
|
-
expect { instance.reboot(10,9,1) }.to raise_error(Beaker::Host::RebootWarning, /Found no valid times in .*/)
|
330
|
+
expect { instance.reboot(10, 9, 1) }.to raise_error(Beaker::Host::RebootWarning, /Found no valid times in .*/)
|
335
331
|
end
|
336
332
|
end
|
337
333
|
end
|
@@ -351,10 +347,10 @@ module Beaker
|
|
351
347
|
it 'raises RebootFailure' do
|
352
348
|
expect(instance).to receive(:sleep).with(sleep_time)
|
353
349
|
# bypass shutdown command itself
|
354
|
-
expect(instance).to receive(
|
350
|
+
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response).once
|
355
351
|
|
356
|
-
expect(instance).to receive(
|
357
|
-
expect(instance).to receive(
|
352
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
353
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_success_response).once
|
358
354
|
|
359
355
|
expect { instance.reboot }.to raise_error(Beaker::Host::RebootFailure, /Boot time did not reset/)
|
360
356
|
end
|
@@ -362,9 +358,9 @@ module Beaker
|
|
362
358
|
it 'raises RebootFailure if the number of retries is changed' do
|
363
359
|
expect(instance).to receive(:sleep).with(sleep_time)
|
364
360
|
# bypass shutdown command itself
|
365
|
-
expect(instance).to receive(
|
366
|
-
expect(instance).to receive(
|
367
|
-
expect(instance).to receive(
|
361
|
+
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response).once
|
362
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
363
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_success_response).once
|
368
364
|
|
369
365
|
expect { instance.reboot(sleep_time, 9, 10) }.to raise_error(Beaker::Host::RebootFailure, /Boot time did not reset/)
|
370
366
|
end
|
@@ -382,7 +378,6 @@ module Beaker
|
|
382
378
|
expect(Beaker::Command).to receive(:new).with("systemctl restart rsyslog")
|
383
379
|
instance.enable_remote_rsyslog
|
384
380
|
end
|
385
|
-
|
386
381
|
end
|
387
382
|
|
388
383
|
describe '#which' do
|
@@ -392,7 +387,7 @@ module Beaker
|
|
392
387
|
.with('type -P true', :accept_all_exit_codes => true).and_return('/bin/true').once
|
393
388
|
|
394
389
|
allow(instance).to receive(:execute)
|
395
|
-
|
390
|
+
.with(where_command, :accept_all_exit_codes => true).and_return(result)
|
396
391
|
end
|
397
392
|
|
398
393
|
context 'when only the environment variable PATH is used' do
|
@@ -427,7 +422,7 @@ module Beaker
|
|
427
422
|
.with('which true', :accept_all_exit_codes => true).and_return('/bin/true').once
|
428
423
|
|
429
424
|
allow(instance).to receive(:execute)
|
430
|
-
|
425
|
+
.with(where_command, :accept_all_exit_codes => true).and_return(result)
|
431
426
|
end
|
432
427
|
|
433
428
|
context 'when only the environment variable PATH is used' do
|
@@ -464,7 +459,7 @@ module Beaker
|
|
464
459
|
|
465
460
|
context 'when only the environment variable PATH is used' do
|
466
461
|
it 'fails correctly' do
|
467
|
-
expect{instance.which('ruby')}.to raise_error(/suitable/)
|
462
|
+
expect { instance.which('ruby') }.to raise_error(/suitable/)
|
468
463
|
end
|
469
464
|
end
|
470
465
|
end
|