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.
Files changed (73) 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 +28 -7
  5. data/.rubocop.yml +5 -0
  6. data/.rubocop_todo.yml +842 -0
  7. data/CHANGELOG.md +31 -0
  8. data/Gemfile +5 -20
  9. data/Rakefile +64 -169
  10. data/acceptance/config/acceptance-options.rb +3 -3
  11. data/acceptance/config/gem/acceptance-options.rb +8 -8
  12. data/acceptance/config/git/acceptance-options.rb +8 -8
  13. data/acceptance/config/pkg/acceptance-options.rb +7 -7
  14. data/acceptance/pre_suite/gem/install.rb +6 -6
  15. data/acceptance/pre_suite/git/install.rb +22 -22
  16. data/acceptance/pre_suite/pkg/install.rb +3 -3
  17. data/acceptance/tests/backwards_compatible.rb +6 -7
  18. data/acceptance/tests/clone_git_repo_on_test.rb +12 -13
  19. data/acceptance/tests/create_tmpdir_on_test.rb +13 -9
  20. data/acceptance/tests/install_smoke_test.rb +5 -4
  21. data/acceptance/tests/stub_host.rb +11 -10
  22. data/acceptance/tests/web_helpers_test.rb +11 -10
  23. data/beaker-puppet.gemspec +16 -23
  24. data/bin/beaker-puppet +2 -4
  25. data/lib/beaker-puppet/helpers/facter_helpers.rb +9 -7
  26. data/lib/beaker-puppet/helpers/host_helpers.rb +10 -7
  27. data/lib/beaker-puppet/helpers/puppet_helpers.rb +151 -160
  28. data/lib/beaker-puppet/helpers/rake_helpers.rb +1 -1
  29. data/lib/beaker-puppet/helpers/tk_helpers.rb +22 -28
  30. data/lib/beaker-puppet/install_utils/aio_defaults.rb +39 -43
  31. data/lib/beaker-puppet/install_utils/ezbake_utils.rb +34 -42
  32. data/lib/beaker-puppet/install_utils/foss_defaults.rb +134 -138
  33. data/lib/beaker-puppet/install_utils/foss_utils.rb +293 -320
  34. data/lib/beaker-puppet/install_utils/module_utils.rb +58 -70
  35. data/lib/beaker-puppet/install_utils/puppet5.rb +30 -35
  36. data/lib/beaker-puppet/install_utils/puppet_utils.rb +58 -68
  37. data/lib/beaker-puppet/install_utils/windows_utils.rb +34 -36
  38. data/lib/beaker-puppet/version.rb +1 -1
  39. data/lib/beaker-puppet/wrappers.rb +13 -14
  40. data/lib/beaker-puppet.rb +4 -5
  41. data/setup/aio/010_Install_Puppet_Agent.rb +5 -6
  42. data/setup/common/000-delete-puppet-when-none.rb +2 -4
  43. data/setup/common/003_solaris_cert_fix.rb +74 -70
  44. data/setup/common/005_redhat_subscription_fix.rb +3 -2
  45. data/setup/common/011_Install_Puppet_Server.rb +7 -9
  46. data/setup/common/012_Finalize_Installs.rb +5 -5
  47. data/setup/common/025_StopFirewall.rb +1 -1
  48. data/setup/common/030_StopSssd.rb +2 -2
  49. data/setup/common/040_ValidateSignCert.rb +10 -12
  50. data/setup/common/045_EnsureMasterStarted.rb +2 -2
  51. data/setup/gem/010_GemInstall.rb +5 -4
  52. data/setup/git/000_EnvSetup.rb +48 -48
  53. data/setup/git/010_TestSetup.rb +13 -12
  54. data/setup/git/020_PuppetUserAndGroup.rb +3 -2
  55. data/setup/git/060_InstallModules.rb +14 -14
  56. data/setup/git/070_InstallCACerts.rb +82 -82
  57. data/spec/beaker-puppet/helpers/facter_helpers_spec.rb +22 -24
  58. data/spec/beaker-puppet/helpers/host_helpers_spec.rb +10 -6
  59. data/spec/beaker-puppet/helpers/puppet_helpers_spec.rb +506 -517
  60. data/spec/beaker-puppet/helpers/tk_helpers_spec.rb +20 -24
  61. data/spec/beaker-puppet/install_utils/ezbake_utils_spec.rb +86 -90
  62. data/spec/beaker-puppet/install_utils/foss_utils_spec.rb +636 -599
  63. data/spec/beaker-puppet/install_utils/module_utils_spec.rb +125 -116
  64. data/spec/beaker-puppet/install_utils/puppet5_spec.rb +159 -165
  65. data/spec/beaker-puppet/install_utils/puppet_utils_spec.rb +92 -77
  66. data/spec/beaker-puppet/install_utils/windows_utils_spec.rb +101 -89
  67. data/spec/beaker-puppet/wrappers_spec.rb +10 -10
  68. data/spec/helpers.rb +85 -91
  69. data/tasks/ci.rake +171 -179
  70. metadata +33 -62
  71. data/setup/common/020_InstallCumulusModules.rb +0 -13
  72. data/setup/common/021_InstallAristaModuleMasters.rb +0 -12
  73. data/setup/common/022_InstallAristaModuleAgents.rb +0 -13
@@ -1,34 +1,32 @@
1
1
  require 'beaker-puppet'
2
2
 
3
- confine :except, :platform => /^solaris-10/
3
+ confine :except, platform: /^solaris-10/
4
4
 
5
5
  test_name 'Clone from git' do
6
-
7
6
  PACKAGES = {
8
- :redhat => [
7
+ redhat: [
9
8
  'git',
10
9
  ],
11
- :debian => [
12
- ['git', 'git-core'],
10
+ debian: [
11
+ %w[git git-core],
13
12
  ],
14
- :solaris_11 => [
13
+ solaris_11: [
15
14
  ['git', 'developer/versioning/git'],
16
15
  ],
17
- :solaris_10 => [
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
- :windows => [
21
+ windows: [
23
22
  'git',
24
23
  ],
25
- :sles => [
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
- assert_match( %r{From.*github\.com[:/]puppetlabs/hiera}, result.output, 'Did not find clone')
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 "dsl::helpers::host_helpers #create_tmpdir_on" do
2
- step "#create_tmpdir_on returns a temporary directory on the remote system" do
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 "#create_tmpdir_on uses the specified path prefix when provided" do
9
- tmpdir = create_tmpdir_on(default, "mypathprefix")
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 "#create_tmpdir_on fails if a non-existent user is specified" do
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 "#create_tmpdir_on sets the user if specified" do
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 "#create_tmpdir_on fails if a non-existent group is specified" do
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 "#create_tmpdir_on sets the group if specified" do
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 "#create_tmpdir_on operates on all hosts if given a hosts array" do
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 "puppet install smoketest"
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 "puppet install smoketest: can get a configprint of the puppet server setting on all hosts"
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?, "can get a configprint of the puppet server setting")
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 "validate host stubbing behavior"
3
+ test_name 'validate host stubbing behavior'
4
4
 
5
5
  def get_hosts_file(host)
6
6
  if host['platform'] =~ /win/
7
- hosts_file = "C:\\\\Windows\\\\System32\\\\Drivers\\\\etc\\\\hosts"
7
+ 'C:\\\\Windows\\\\System32\\\\Drivers\\\\etc\\\\hosts'
8
8
  else
9
- hosts_file = '/etc/hosts'
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' => [ 'bar', 'baz' ] })
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 %r{foo}, result.stdout
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 %r{foo}, result.stdout
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' => [ 'grumpy', 'dopey' ] }) { on host, "cat #{hosts_file}" }
38
- assert_match %r{sleepy}, result.stdout
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 %r{sleepy}, result.stdout
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
- %w[CN localhost],
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! "/tmp"
19
- file.slice! "/tmp"
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
- assert_match /Failed to fetch_remote_dir.*/, exception.message, "#fetch_http_dir raised an unexpected RuntimeError"
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}", "test2.txt", dst_dir) }
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
- end
55
+ assert_match /Failed to fetch_remote_file.*/, exception.message, '#fetch_http_dir raised an unexpected RuntimeError'
56
+ end
57
+ end
@@ -1,41 +1,34 @@
1
- # -*- encoding: utf-8 -*-
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 = "beaker-puppet"
5
+ s.name = 'beaker-puppet'
7
6
  s.version = BeakerPuppet::VERSION
8
- s.authors = ["Vox Pupuli"]
9
- s.email = ["voxpupuli@groups.io"]
10
- s.homepage = "https://github.com/voxpupuli/beaker-puppet"
11
- s.summary = %q{Beaker's Puppet DSL Extension Helpers!}
12
- s.description = %q{For use for the Beaker acceptance testing tool}
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.4'
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 = ["lib"]
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 'rspec', '~> 3.0'
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 'in-parallel', '~> 0.1'
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
- raise(ArgumentError, "fact_on's `name` option must be a String. You provided a #{name.class}: '#{name}'") unless name.is_a?(String)
41
- if opts.kind_of?(Hash)
42
- opts.merge!({json: nil})
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.kind_of?(Array)
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, "#{ruby} -e 'require \"etc\"; puts (Etc.getpwuid(File.stat(\"#{path}\").uid).name)'").stdout.chomp
24
- group = on(host, "#{ruby} -e 'require \"etc\"; puts (Etc.getgrgid(File.stat(\"#{path}\").gid).name)'").stdout.chomp
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], "Owner #{permissions[0]} does not match expected #{expected_user}")
33
- assert_equal(expected_group, permissions[1], "Group #{permissions[1]} does not match expected #{expected_group}")
34
- assert_equal(expected_permissions, permissions[2], "Permissions #{permissions[2]} does not match expected #{expected_permissions}")
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
-