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 »