Feature #9286 » add_unit_test_chown_normal_user.patch
test/fileutils/test_fileutils.rb (working copy) | ||
---|---|---|
# $Id$
|
||
require 'fileutils'
|
||
require 'etc'
|
||
require_relative 'fileasserts'
|
||
require 'pathname'
|
||
require 'tmpdir'
|
||
... | ... | |
def setup
|
||
@prevdir = Dir.pwd
|
||
@groups = Process.groups
|
||
tmproot = TMPROOT
|
||
mymkdir tmproot unless File.directory?(tmproot)
|
||
Dir.chdir tmproot
|
||
... | ... | |
}
|
||
end if have_file_perm?
|
||
# FIXME: How can I test this method?
|
||
def test_chown
|
||
check_singleton :chown
|
||
assert_output_lines([]) {
|
||
touch 'tmp/a'
|
||
# integer input for group, nil for user
|
||
chown nil, @groups[0], 'tmp/a'
|
||
assert_ownership_group @groups[0], 'tmp/a'
|
||
}
|
||
if @groups[1]
|
||
assert_output_lines([]) {
|
||
touch 'tmp/b'
|
||
# string input for group, -1 for user
|
||
chown -1, Etc.getgrgid(@groups[1]).name, 'tmp/b'
|
||
assert_ownership_group @groups[1], 'tmp/b'
|
||
}
|
||
end
|
||
end if have_file_perm?
|
||
def test_chown_verbose
|
||
assert_output_lines(["chown :#{@groups[0]} tmp/a1 tmp/a2"]) {
|
||
touch 'tmp/a1'
|
||
touch 'tmp/a2'
|
||
chown nil, @groups[0], ['tmp/a1', 'tmp/a2'], :verbose => true
|
||
assert_ownership_group @groups[0], 'tmp/a1'
|
||
assert_ownership_group @groups[0], 'tmp/a2'
|
||
}
|
||
end if have_file_perm?
|
||
def test_chown_noop
|
||
if @groups[1]
|
||
touch 'tmp/a'
|
||
chown nil, @groups[0], 'tmp/a', :noop => false
|
||
assert_ownership_group @groups[0], 'tmp/a'
|
||
chown nil, @groups[1], 'tmp/a', :noop => true
|
||
assert_ownership_group @groups[0], 'tmp/a'
|
||
chown nil, @groups[1], 'tmp/a'
|
||
assert_ownership_group @groups[1], 'tmp/a'
|
||
end
|
||
end if have_file_perm?
|
||
def test_chown_error
|
||
touch 'tmp/a'
|
||
exception = assert_raise(Errno::EPERM) {
|
||
chown 'root', @groups[0], 'tmp/a'
|
||
}
|
||
assert_equal exception.message,
|
||
"Operation not permitted @ chown_internal - tmp/a"
|
||
exception = assert_raise(ArgumentError) {
|
||
chown '', @groups[0], 'tmp/a'
|
||
}
|
||
assert_equal exception.message, "can't find user for "
|
||
exception = assert_raise(Errno::ENOENT) {
|
||
chown nil, @groups[0], ''
|
||
}
|
||
assert_equal exception.message,
|
||
"No such file or directory @ chown_internal - "
|
||
end if have_file_perm?
|
||
# FIXME: Need to add test for chown with root account
|
||
# FIXME: How can I test this method?
|
||
def test_chown_R
|
||
check_singleton :chown_R
|
test/fileutils/fileasserts.rb (working copy) | ||
---|---|---|
<#{'%0*o' % [width, mode2]}>: "#{file2}"
|
||
EOT
|
||
end
|
||
def assert_ownership_group(expected, file)
|
||
actual = File.stat(file).gid
|
||
assert expected == actual, <<EOT
|
||
File group ownership of "#{file}" unexpected:
|
||
Expected: <#{'%s' % expected}>
|
||
Actual: <#{'%s' % actual}>
|
||
EOT
|
||
end
|
||
end
|
||
end
|
||
end
|
- « Previous
- 1
- 2
- Next »