rubyzip/test/file_permissions_test.rb

70 lines
1.2 KiB
Ruby

require 'test_helper'
class FilePermissionsTest < MiniTest::Test
FILENAME = File.join(File.dirname(__FILE__), "umask.zip")
def teardown
::File.unlink(FILENAME)
end
if ::Zip::RUNNING_ON_WINDOWS
# Windows tests
DEFAULT_PERMS = 0644
def test_windows_perms
create_file
assert_equal DEFAULT_PERMS, ::File.stat(FILENAME).mode
end
else
# Unix tests
DEFAULT_PERMS = 0100666
def test_current_umask
umask = DEFAULT_PERMS - ::File.umask
create_file
assert_equal umask, ::File.stat(FILENAME).mode
end
def test_umask_000
set_umask(0000) do
create_file
end
assert_equal DEFAULT_PERMS, ::File.stat(FILENAME).mode
end
def test_umask_066
umask = 0066
set_umask(umask) do
create_file
end
assert_equal((DEFAULT_PERMS - umask), ::File.stat(FILENAME).mode)
end
end
def create_file
::Zip::File.open(FILENAME, ::Zip::File::CREATE) do |zip|
zip.comment = "test"
end
end
# If anything goes wrong, make sure the umask is restored.
def set_umask(umask, &block)
begin
saved_umask = ::File.umask(umask)
yield
ensure
::File.umask(saved_umask)
end
end
end