beaker-puppet 1.29.0 → 2.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 +28 -7
- data/.rubocop.yml +5 -0
- data/.rubocop_todo.yml +842 -0
- data/CHANGELOG.md +31 -0
- data/Gemfile +5 -20
- data/Rakefile +64 -169
- data/acceptance/config/acceptance-options.rb +3 -3
- data/acceptance/config/gem/acceptance-options.rb +8 -8
- data/acceptance/config/git/acceptance-options.rb +8 -8
- data/acceptance/config/pkg/acceptance-options.rb +7 -7
- data/acceptance/pre_suite/gem/install.rb +6 -6
- data/acceptance/pre_suite/git/install.rb +22 -22
- data/acceptance/pre_suite/pkg/install.rb +3 -3
- data/acceptance/tests/backwards_compatible.rb +6 -7
- data/acceptance/tests/clone_git_repo_on_test.rb +12 -13
- data/acceptance/tests/create_tmpdir_on_test.rb +13 -9
- data/acceptance/tests/install_smoke_test.rb +5 -4
- data/acceptance/tests/stub_host.rb +11 -10
- data/acceptance/tests/web_helpers_test.rb +11 -10
- data/beaker-puppet.gemspec +16 -23
- data/bin/beaker-puppet +2 -4
- data/lib/beaker-puppet/helpers/facter_helpers.rb +9 -7
- data/lib/beaker-puppet/helpers/host_helpers.rb +10 -7
- data/lib/beaker-puppet/helpers/puppet_helpers.rb +151 -160
- data/lib/beaker-puppet/helpers/rake_helpers.rb +1 -1
- data/lib/beaker-puppet/helpers/tk_helpers.rb +22 -28
- data/lib/beaker-puppet/install_utils/aio_defaults.rb +39 -43
- data/lib/beaker-puppet/install_utils/ezbake_utils.rb +34 -42
- data/lib/beaker-puppet/install_utils/foss_defaults.rb +134 -138
- data/lib/beaker-puppet/install_utils/foss_utils.rb +293 -320
- data/lib/beaker-puppet/install_utils/module_utils.rb +58 -70
- data/lib/beaker-puppet/install_utils/puppet5.rb +30 -35
- data/lib/beaker-puppet/install_utils/puppet_utils.rb +58 -68
- data/lib/beaker-puppet/install_utils/windows_utils.rb +34 -36
- data/lib/beaker-puppet/version.rb +1 -1
- data/lib/beaker-puppet/wrappers.rb +13 -14
- data/lib/beaker-puppet.rb +4 -5
- data/setup/aio/010_Install_Puppet_Agent.rb +5 -6
- data/setup/common/000-delete-puppet-when-none.rb +2 -4
- data/setup/common/003_solaris_cert_fix.rb +74 -70
- data/setup/common/005_redhat_subscription_fix.rb +3 -2
- data/setup/common/011_Install_Puppet_Server.rb +7 -9
- data/setup/common/012_Finalize_Installs.rb +5 -5
- data/setup/common/025_StopFirewall.rb +1 -1
- data/setup/common/030_StopSssd.rb +2 -2
- data/setup/common/040_ValidateSignCert.rb +10 -12
- data/setup/common/045_EnsureMasterStarted.rb +2 -2
- data/setup/gem/010_GemInstall.rb +5 -4
- data/setup/git/000_EnvSetup.rb +48 -48
- data/setup/git/010_TestSetup.rb +13 -12
- data/setup/git/020_PuppetUserAndGroup.rb +3 -2
- data/setup/git/060_InstallModules.rb +14 -14
- data/setup/git/070_InstallCACerts.rb +82 -82
- data/spec/beaker-puppet/helpers/facter_helpers_spec.rb +22 -24
- data/spec/beaker-puppet/helpers/host_helpers_spec.rb +10 -6
- data/spec/beaker-puppet/helpers/puppet_helpers_spec.rb +506 -517
- data/spec/beaker-puppet/helpers/tk_helpers_spec.rb +20 -24
- data/spec/beaker-puppet/install_utils/ezbake_utils_spec.rb +86 -90
- data/spec/beaker-puppet/install_utils/foss_utils_spec.rb +636 -599
- data/spec/beaker-puppet/install_utils/module_utils_spec.rb +125 -116
- data/spec/beaker-puppet/install_utils/puppet5_spec.rb +159 -165
- data/spec/beaker-puppet/install_utils/puppet_utils_spec.rb +92 -77
- data/spec/beaker-puppet/install_utils/windows_utils_spec.rb +101 -89
- data/spec/beaker-puppet/wrappers_spec.rb +10 -10
- data/spec/helpers.rb +85 -91
- data/tasks/ci.rake +171 -179
- metadata +33 -62
- data/setup/common/020_InstallCumulusModules.rb +0 -13
- data/setup/common/021_InstallAristaModuleMasters.rb +0 -12
- data/setup/common/022_InstallAristaModuleAgents.rb +0 -13
@@ -1,34 +1,32 @@
|
|
1
1
|
require 'beaker-puppet'
|
2
2
|
|
3
|
-
confine :except, :
|
3
|
+
confine :except, platform: /^solaris-10/
|
4
4
|
|
5
5
|
test_name 'Clone from git' do
|
6
|
-
|
7
6
|
PACKAGES = {
|
8
|
-
:
|
7
|
+
redhat: [
|
9
8
|
'git',
|
10
9
|
],
|
11
|
-
:
|
12
|
-
[
|
10
|
+
debian: [
|
11
|
+
%w[git git-core],
|
13
12
|
],
|
14
|
-
:
|
13
|
+
solaris_11: [
|
15
14
|
['git', 'developer/versioning/git'],
|
16
15
|
],
|
17
|
-
:
|
16
|
+
solaris_10: [
|
18
17
|
'coreutils',
|
19
18
|
'curl', # update curl to fix "CURLOPT_SSL_VERIFYHOST no longer supports 1 as value!" issue
|
20
19
|
'git',
|
21
20
|
],
|
22
|
-
:
|
21
|
+
windows: [
|
23
22
|
'git',
|
24
23
|
],
|
25
|
-
:
|
24
|
+
sles: [
|
26
25
|
'git-core',
|
27
|
-
]
|
26
|
+
],
|
28
27
|
}
|
29
28
|
|
30
|
-
|
31
|
-
install_packages_on(hosts, PACKAGES, :check_if_exists => true)
|
29
|
+
install_packages_on(hosts, PACKAGES, check_if_exists: true)
|
32
30
|
|
33
31
|
# implicitly tests build_giturl() and lookup_in_env()
|
34
32
|
hosts.each do |host|
|
@@ -37,7 +35,8 @@ test_name 'Clone from git' do
|
|
37
35
|
|
38
36
|
step 'should be able to successfully clone a git repo' do
|
39
37
|
results = clone_git_repo_on(host, "#{testdir}", extract_repo_info_from(build_git_url('hiera')))
|
40
|
-
|
38
|
+
|
39
|
+
assert_match(%r{From.*github\.com[:/]puppetlabs/hiera}, result.output, 'Did not find clone')
|
41
40
|
end
|
42
41
|
end
|
43
42
|
end
|
@@ -1,43 +1,47 @@
|
|
1
|
-
test_name
|
2
|
-
step
|
1
|
+
test_name 'dsl::helpers::host_helpers #create_tmpdir_on' do
|
2
|
+
step '#create_tmpdir_on returns a temporary directory on the remote system' do
|
3
3
|
tmpdir = create_tmpdir_on default
|
4
|
+
|
4
5
|
assert_match %r{/}, tmpdir
|
5
6
|
assert_equal 0, on(default, "touch #{tmpdir}/testfile").exit_code
|
6
7
|
end
|
7
8
|
|
8
|
-
step
|
9
|
-
tmpdir = create_tmpdir_on(default,
|
9
|
+
step '#create_tmpdir_on uses the specified path prefix when provided' do
|
10
|
+
tmpdir = create_tmpdir_on(default, 'mypathprefix')
|
11
|
+
|
10
12
|
assert_match %r{/mypathprefix}, tmpdir
|
11
13
|
assert_equal 0, on(default, "touch #{tmpdir}/testfile").exit_code
|
12
14
|
end
|
13
15
|
|
14
|
-
step
|
16
|
+
step '#create_tmpdir_on fails if a non-existent user is specified' do
|
15
17
|
assert_raises Beaker::Host::CommandFailure do
|
16
18
|
tmpdir = create_tmpdir_on default, '', 'fakeuser'
|
17
19
|
end
|
18
20
|
end
|
19
21
|
|
20
|
-
step
|
22
|
+
step '#create_tmpdir_on sets the user if specified' do
|
21
23
|
default.user_present('tmpdirtestuser')
|
22
24
|
tmpdir = create_tmpdir_on(default, nil, 'tmpdirtestuser', nil)
|
25
|
+
|
23
26
|
assert_match /tmpdirtestuser/, on(default, "ls -ld #{tmpdir}").output
|
24
27
|
default.user_absent('tmpdirtestuser')
|
25
28
|
end
|
26
29
|
|
27
|
-
step
|
30
|
+
step '#create_tmpdir_on fails if a non-existent group is specified' do
|
28
31
|
assert_raises Beaker::Host::CommandFailure do
|
29
32
|
tmpdir = create_tmpdir_on default, '', nil, 'fakegroup'
|
30
33
|
end
|
31
34
|
end
|
32
35
|
|
33
|
-
step
|
36
|
+
step '#create_tmpdir_on sets the group if specified' do
|
34
37
|
default.group_present('tmpdirtestgroup')
|
35
38
|
tmpdir = create_tmpdir_on(default, nil, nil, 'tmpdirtestgroup')
|
39
|
+
|
36
40
|
assert_match /testgroup/, on(default, "ls -ld #{tmpdir}").output
|
37
41
|
default.group_absent('tmpdirtestgroup')
|
38
42
|
end
|
39
43
|
|
40
|
-
step
|
44
|
+
step '#create_tmpdir_on operates on all hosts if given a hosts array' do
|
41
45
|
tmpdirs = create_tmpdir_on hosts
|
42
46
|
hosts.zip(tmpdirs).each do |(host, tmpdir)|
|
43
47
|
assert_match %r{/}, tmpdir
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'beaker-puppet'
|
2
2
|
|
3
|
-
test_name
|
3
|
+
test_name 'puppet install smoketest'
|
4
4
|
|
5
5
|
step 'puppet install smoketest: verify \'facter --help\' can be successfully called on all hosts'
|
6
6
|
hosts.each do |host|
|
@@ -17,7 +17,8 @@ hosts.each do |host|
|
|
17
17
|
on host, puppet('help')
|
18
18
|
end
|
19
19
|
|
20
|
-
step
|
20
|
+
step 'puppet install smoketest: can get a configprint of the puppet server setting on all hosts'
|
21
|
+
|
21
22
|
hosts.each do |host|
|
22
|
-
assert(!host.puppet['server'].empty?,
|
23
|
-
end
|
23
|
+
assert(!host.puppet['server'].empty?, 'can get a configprint of the puppet server setting')
|
24
|
+
end
|
@@ -1,23 +1,22 @@
|
|
1
1
|
require 'beaker-puppet'
|
2
2
|
|
3
|
-
test_name
|
3
|
+
test_name 'validate host stubbing behavior'
|
4
4
|
|
5
5
|
def get_hosts_file(host)
|
6
6
|
if host['platform'] =~ /win/
|
7
|
-
|
7
|
+
'C:\\\\Windows\\\\System32\\\\Drivers\\\\etc\\\\hosts'
|
8
8
|
else
|
9
|
-
|
9
|
+
'/etc/hosts'
|
10
10
|
end
|
11
|
-
return hosts_file
|
12
11
|
end
|
13
12
|
|
14
13
|
step 'verify stub_host_on' do
|
15
14
|
step 'should add entry to hosts file' do
|
16
15
|
hosts.each do |host|
|
17
|
-
stub_hosts_on(host, { 'foo' => '1.1.1.1' }, { 'foo' => [
|
16
|
+
stub_hosts_on(host, { 'foo' => '1.1.1.1' }, { 'foo' => %w[bar baz] })
|
18
17
|
hosts_file = get_hosts_file(host)
|
19
18
|
result = on host, "cat #{hosts_file}"
|
20
|
-
assert_match
|
19
|
+
assert_match(/foo/, result.stdout)
|
21
20
|
end
|
22
21
|
end
|
23
22
|
|
@@ -25,7 +24,7 @@ step 'verify stub_host_on' do
|
|
25
24
|
hosts.each do |host|
|
26
25
|
hosts_file = get_hosts_file(host)
|
27
26
|
result = on host, "cat #{hosts_file}"
|
28
|
-
assert_match
|
27
|
+
assert_match(/foo/, result.stdout)
|
29
28
|
end
|
30
29
|
end
|
31
30
|
end
|
@@ -34,8 +33,10 @@ step 'verify with_stub_host_on' do
|
|
34
33
|
step 'should add entry to hosts file' do
|
35
34
|
hosts.each do |host|
|
36
35
|
hosts_file = get_hosts_file(host)
|
37
|
-
result = with_host_stubbed_on(host, { 'sleepy' => '1.1.1.2' }, { 'sleepy' => [
|
38
|
-
|
36
|
+
result = with_host_stubbed_on(host, { 'sleepy' => '1.1.1.2' }, { 'sleepy' => %w[grumpy dopey] }) do
|
37
|
+
on host, "cat #{hosts_file}"
|
38
|
+
end
|
39
|
+
assert_match(/sleepy/, result.stdout)
|
39
40
|
end
|
40
41
|
end
|
41
42
|
|
@@ -43,7 +44,7 @@ step 'verify with_stub_host_on' do
|
|
43
44
|
hosts.each do |host|
|
44
45
|
hosts_file = get_hosts_file(host)
|
45
46
|
result = on host, "cat #{hosts_file}"
|
46
|
-
assert_no_match
|
47
|
+
assert_no_match(/sleepy/, result.stdout)
|
47
48
|
end
|
48
49
|
end
|
49
50
|
end
|
@@ -5,22 +5,22 @@ require 'webrick/https'
|
|
5
5
|
|
6
6
|
test_name 'dsl::helpers::web_helpers #link_exists?' do
|
7
7
|
cert_name = [
|
8
|
-
|
8
|
+
%w[CN localhost],
|
9
9
|
]
|
10
10
|
http_cmd = "ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => 80, :DocumentRoot => \"/tmp\").start' > /tmp/mylogfile 2>&1 &"
|
11
11
|
https_cmd = "ruby -rwebrick/https -e'WEBrick::HTTPServer.new(:SSLEnable => true, :SSLCertName => #{cert_name}, :Port => 555,:DocumentRoot => \"/tmp\").start' > /tmp/mylogfile 2>&1 &"
|
12
12
|
on(default, http_cmd)
|
13
13
|
on(default, https_cmd)
|
14
|
-
#allow web servers to start up
|
14
|
+
# allow web servers to start up
|
15
15
|
sleep(3)
|
16
16
|
dir = default.tmpdir('test_dir')
|
17
17
|
file = default.tmpfile('test_file')
|
18
|
-
dir.slice!
|
19
|
-
file.slice!
|
18
|
+
dir.slice! '/tmp'
|
19
|
+
file.slice! '/tmp'
|
20
20
|
dst_dir = 'web_helpers'
|
21
21
|
|
22
22
|
step '#port_open_within? can tell if a port is open' do
|
23
|
-
assert port_open_within?(default,80)
|
23
|
+
assert port_open_within?(default, 80)
|
24
24
|
end
|
25
25
|
|
26
26
|
step '#link_exists? can tell if a basic link exists' do
|
@@ -41,7 +41,8 @@ test_name 'dsl::helpers::web_helpers #link_exists?' do
|
|
41
41
|
|
42
42
|
step '#fetch_http_dir will raise an error if unable fetch a dir' do
|
43
43
|
exception = assert_raises(RuntimeError) { fetch_http_dir("http://#{default}/tmps", dst_dir) }
|
44
|
-
|
44
|
+
|
45
|
+
assert_match /Failed to fetch_remote_dir.*/, exception.message, '#fetch_http_dir raised an unexpected RuntimeError'
|
45
46
|
end
|
46
47
|
|
47
48
|
step '#fetch_http_file can fetch a file' do
|
@@ -49,8 +50,8 @@ test_name 'dsl::helpers::web_helpers #link_exists?' do
|
|
49
50
|
end
|
50
51
|
|
51
52
|
step '#fetch_http_file will raise an error if unable to fetch a file' do
|
52
|
-
exception = assert_raises(RuntimeError) { fetch_http_file("http://#{default}",
|
53
|
-
assert_match /Failed to fetch_remote_file.*/, exception.message, "#fetch_http_dir raised an unexpected RuntimeError"
|
54
|
-
end
|
53
|
+
exception = assert_raises(RuntimeError) { fetch_http_file("http://#{default}", 'test2.txt', dst_dir) }
|
55
54
|
|
56
|
-
|
55
|
+
assert_match /Failed to fetch_remote_file.*/, exception.message, '#fetch_http_dir raised an unexpected RuntimeError'
|
56
|
+
end
|
57
|
+
end
|
data/beaker-puppet.gemspec
CHANGED
@@ -1,41 +1,34 @@
|
|
1
|
-
|
2
|
-
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
1
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
3
2
|
require 'beaker-puppet/version'
|
4
3
|
|
5
4
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
5
|
+
s.name = 'beaker-puppet'
|
7
6
|
s.version = BeakerPuppet::VERSION
|
8
|
-
s.authors = [
|
9
|
-
s.email = [
|
10
|
-
s.homepage =
|
11
|
-
s.summary =
|
12
|
-
s.description =
|
7
|
+
s.authors = ['Vox Pupuli']
|
8
|
+
s.email = ['voxpupuli@groups.io']
|
9
|
+
s.homepage = 'https://github.com/voxpupuli/beaker-puppet'
|
10
|
+
s.summary = "Beaker's Puppet DSL Extension Helpers!"
|
11
|
+
s.description = 'For use for the Beaker acceptance testing tool'
|
13
12
|
s.license = 'Apache-2.0'
|
14
13
|
|
15
|
-
s.required_ruby_version = '>= 2.
|
14
|
+
s.required_ruby_version = '>= 2.7'
|
16
15
|
|
17
16
|
s.files = `git ls-files`.split("\n")
|
18
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
-
s.require_paths = [
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
19
|
+
s.require_paths = ['lib']
|
21
20
|
|
22
21
|
# Testing dependencies
|
23
|
-
s.add_development_dependency '
|
24
|
-
s.add_development_dependency 'rspec-its'
|
25
|
-
s.add_development_dependency 'fakefs', '>= 0.6', '< 2.0'
|
22
|
+
s.add_development_dependency 'fakefs', '>= 0.6', '< 3.0'
|
26
23
|
s.add_development_dependency 'rake', '~> 13.0'
|
24
|
+
s.add_development_dependency 'rspec', '~> 3.0'
|
25
|
+
s.add_development_dependency 'rspec-its', '~> 1.3'
|
26
|
+
s.add_development_dependency 'voxpupuli-rubocop', '~> 1.2'
|
27
27
|
|
28
28
|
# Acceptance Testing Dependencies
|
29
|
-
s.add_development_dependency 'beaker-vmpooler'
|
30
|
-
|
31
|
-
# Documentation dependencies
|
32
|
-
s.add_development_dependency 'yard'
|
33
|
-
s.add_development_dependency 'thin'
|
29
|
+
s.add_development_dependency 'beaker-vmpooler', '~> 1.4'
|
34
30
|
|
35
31
|
# Run time dependencies
|
36
32
|
s.add_runtime_dependency 'beaker', '~> 4.1'
|
37
|
-
s.add_runtime_dependency '
|
38
|
-
s.add_runtime_dependency 'oga'
|
39
|
-
|
33
|
+
s.add_runtime_dependency 'oga', '~> 3.4'
|
40
34
|
end
|
41
|
-
|
data/bin/beaker-puppet
CHANGED
@@ -4,7 +4,7 @@ require 'rubygems' unless defined?(Gem)
|
|
4
4
|
require 'beaker-puppet'
|
5
5
|
|
6
6
|
VERSION_STRING =
|
7
|
-
"
|
7
|
+
"
|
8
8
|
_ .--.
|
9
9
|
( ` )
|
10
10
|
beaker-puppet .-' `--,
|
@@ -25,8 +25,6 @@ VERSION_STRING =
|
|
25
25
|
'=='
|
26
26
|
"
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
puts VERSION_STRING % [BeakerPuppet::VERSION]
|
28
|
+
puts format(VERSION_STRING, BeakerPuppet::VERSION)
|
31
29
|
|
32
30
|
exit 0
|
@@ -5,7 +5,6 @@ module Beaker
|
|
5
5
|
# for these methods to execute correctly
|
6
6
|
#
|
7
7
|
module FacterHelpers
|
8
|
-
|
9
8
|
# @!macro [new] common_opts
|
10
9
|
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
11
10
|
# @option opts [Boolean] :silent (false) Do not produce log output
|
@@ -13,7 +12,7 @@ module Beaker
|
|
13
12
|
# (or range) of integer exit codes that should be considered
|
14
13
|
# acceptable. An error will be thrown if the exit code does not
|
15
14
|
# match one of the values in this list.
|
16
|
-
# @option opts [Boolean] :accept_all_exit_codes (false) Consider all
|
15
|
+
# @option opts [Boolean] :accept_all_exit_codes (false) Consider all
|
17
16
|
# exit codes as passing.
|
18
17
|
# @option opts [Boolean] :dry_run (false) Do not actually execute any
|
19
18
|
# commands on the SUT
|
@@ -37,15 +36,19 @@ module Beaker
|
|
37
36
|
# @return String The value of the fact 'name' on the provided host
|
38
37
|
# @raise [FailTest] Raises an exception if call to facter fails
|
39
38
|
def fact_on(host, name, opts = {})
|
40
|
-
|
41
|
-
|
42
|
-
|
39
|
+
unless name.is_a?(String)
|
40
|
+
raise(ArgumentError,
|
41
|
+
"fact_on's `name` option must be a String. You provided a #{name.class}: '#{name}'")
|
42
|
+
end
|
43
|
+
|
44
|
+
if opts.is_a?(Hash)
|
45
|
+
opts.merge!({ json: nil })
|
43
46
|
else
|
44
47
|
opts << ' --json'
|
45
48
|
end
|
46
49
|
|
47
50
|
result = on host, facter("\"#{name}\"", opts)
|
48
|
-
if result.
|
51
|
+
if result.is_a?(Array)
|
49
52
|
result.map { |res| JSON.parse(res.stdout)[name] }
|
50
53
|
else
|
51
54
|
JSON.parse(result.stdout)[name]
|
@@ -57,7 +60,6 @@ module Beaker
|
|
57
60
|
def fact(name, opts = {})
|
58
61
|
fact_on(default, name, opts)
|
59
62
|
end
|
60
|
-
|
61
63
|
end
|
62
64
|
end
|
63
65
|
end
|
@@ -5,7 +5,6 @@ module Beaker
|
|
5
5
|
# for these methods to execute correctly
|
6
6
|
#
|
7
7
|
module HostHelpers
|
8
|
-
|
9
8
|
def ruby_command(host)
|
10
9
|
if host['platform'] =~ /windows/ && !host.is_cygwin?
|
11
10
|
"cmd /V /C \"set PATH=#{host['privatebindir']};!PATH! && ruby\""
|
@@ -20,8 +19,10 @@ module Beaker
|
|
20
19
|
# S_IFDIR 0040000
|
21
20
|
def beaker_stat(host, path)
|
22
21
|
ruby = ruby_command(host)
|
23
|
-
owner = on(host,
|
24
|
-
|
22
|
+
owner = on(host,
|
23
|
+
"#{ruby} -e 'require \"etc\"; puts (Etc.getpwuid(File.stat(\"#{path}\").uid).name)'").stdout.chomp
|
24
|
+
group = on(host,
|
25
|
+
"#{ruby} -e 'require \"etc\"; puts (Etc.getgrgid(File.stat(\"#{path}\").gid).name)'").stdout.chomp
|
25
26
|
mode = on(host, "#{ruby} -e 'puts (File.stat(\"#{path}\").mode & 0777).to_s(8)'").stdout.chomp.to_i
|
26
27
|
|
27
28
|
[owner, group, mode]
|
@@ -29,12 +30,14 @@ module Beaker
|
|
29
30
|
|
30
31
|
def assert_ownership_permissions(host, location, expected_user, expected_group, expected_permissions)
|
31
32
|
permissions = beaker_stat(host, location)
|
32
|
-
assert_equal(expected_user, permissions[0],
|
33
|
-
|
34
|
-
assert_equal(
|
33
|
+
assert_equal(expected_user, permissions[0],
|
34
|
+
"Owner #{permissions[0]} does not match expected #{expected_user}")
|
35
|
+
assert_equal(expected_group, permissions[1],
|
36
|
+
"Group #{permissions[1]} does not match expected #{expected_group}")
|
37
|
+
assert_equal(expected_permissions, permissions[2],
|
38
|
+
"Permissions #{permissions[2]} does not match expected #{expected_permissions}")
|
35
39
|
end
|
36
40
|
end
|
37
41
|
end
|
38
42
|
end
|
39
43
|
end
|
40
|
-
|