diff --git a/ChangeLog b/ChangeLog index cb1ae7650b..4f5025a444 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun May 25 09:57:09 2014 SHIBATA Hiroshi + + * test/fileutils/test_fileutils.rb: Added recursively chmod tests. + [Feature #9303][ruby-core:59325] + Sun May 25 09:41:56 2014 Zachary Scott * class.c: [DOC] Fixed grammar and examples of instance_methods. diff --git a/test/fileutils/test_fileutils.rb b/test/fileutils/test_fileutils.rb index 0834187b95..2e997a716c 100644 --- a/test/fileutils/test_fileutils.rb +++ b/test/fileutils/test_fileutils.rb @@ -1145,6 +1145,24 @@ class TestFileUtils < Test::Unit::TestCase } end + def test_chown_dir_group_ownership_not_recursive + return unless @groups[1] + + input_group_1 = @groups[0] + input_group_2 = @groups[1] + assert_output_lines([]) { + mkdir 'tmp/dir' + touch 'tmp/dir/a' + chown nil, input_group_1, ['tmp/dir', 'tmp/dir/a'] + assert_ownership_group @groups[0], 'tmp/dir' + assert_ownership_group @groups[0], 'tmp/dir/a' + chown nil, input_group_2, 'tmp/dir' + assert_ownership_group @groups[1], 'tmp/dir' + # Make sure FileUtils.chmod does not chmod recursively + assert_ownership_group @groups[0], 'tmp/dir/a' + } + end + if root_in_posix? def test_chown_with_root uid_1, uid_2 = distinct_uids(2) @@ -1164,6 +1182,23 @@ class TestFileUtils < Test::Unit::TestCase } } end + + def test_chown_dir_user_ownership_not_recursive_with_root + uid_1, uid_2 = distinct_uids(2) + return unless uid_1 and uid_2 + + assert_output_lines([]) { + mkdir 'tmp/dir' + touch 'tmp/dir/a' + chown uid_1, nil, ['tmp/dir', 'tmp/dir/a'] + assert_ownership_user uid_1, 'tmp/dir' + assert_ownership_user uid_1, 'tmp/dir/a' + chown uid_2, nil, 'tmp/dir' + assert_ownership_user uid_2, 'tmp/dir' + # Make sure FileUtils.chmod does not chmod recursively + assert_ownership_user uid_1, 'tmp/dir/a' + } + end else def test_chown_without_permission uid_1, uid_2 = distinct_uids(2)