diff options
Diffstat (limited to 'test/fileutils')
-rw-r--r-- | test/fileutils/test_fileutils.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/fileutils/test_fileutils.rb b/test/fileutils/test_fileutils.rb index 290ba21f0d..68f363109d 100644 --- a/test/fileutils/test_fileutils.rb +++ b/test/fileutils/test_fileutils.rb @@ -893,6 +893,29 @@ class TestFileUtils assert_equal 0500, File.stat('tmp/a').mode & 0777 end if have_file_perm? + def test_chmod_symbol_mode + check_singleton :chmod + + touch 'tmp/a' + chmod "u=wrx,g=,o=", 'tmp/a' + assert_equal 0700, File.stat('tmp/a').mode & 0777 + chmod "u=rx,go=", 'tmp/a' + assert_equal 0500, File.stat('tmp/a').mode & 0777 + chmod "+wrx", 'tmp/a' + assert_equal 0777, File.stat('tmp/a').mode & 0777 + chmod "u+s,o=s", 'tmp/a' + assert_equal 04770, File.stat('tmp/a').mode & 07777 + chmod "u-w,go-wrx", 'tmp/a' + assert_equal 04500, File.stat('tmp/a').mode & 07777 + chmod "+s", 'tmp/a' + assert_equal 06500, File.stat('tmp/a').mode & 07777 + chmod "u+t,o+t", 'tmp/a' + assert_equal 07500, File.stat('tmp/a').mode & 07777 + chmod "a-t,a-s", 'tmp/a' + assert_equal 0500, File.stat('tmp/a').mode & 07777 + end if have_file_perm? + + def test_chmod_R check_singleton :chmod_R @@ -911,6 +934,24 @@ class TestFileUtils chmod_R 0700, 'tmp/dir' # to remove end if have_file_perm? + def test_chmod_symbol_mode_R + check_singleton :chmod_R + + mkdir_p 'tmp/dir/dir' + touch %w( tmp/dir/file tmp/dir/dir/file ) + chmod_R "u=wrx,g=,o=", 'tmp/dir' + assert_equal 0700, File.stat('tmp/dir').mode & 0777 + assert_equal 0700, File.stat('tmp/dir/file').mode & 0777 + assert_equal 0700, File.stat('tmp/dir/dir').mode & 0777 + assert_equal 0700, File.stat('tmp/dir/dir/file').mode & 0777 + chmod_R "u=xr,g+X,o=", 'tmp/dir' + assert_equal 0510, File.stat('tmp/dir').mode & 0777 + assert_equal 0500, File.stat('tmp/dir/file').mode & 0777 + assert_equal 0510, File.stat('tmp/dir/dir').mode & 0777 + assert_equal 0500, File.stat('tmp/dir/dir/file').mode & 0777 + chmod_R 0700, 'tmp/dir' # to remove + end if have_file_perm? + # FIXME: How can I test this method? def test_chown check_singleton :chown |