70 lines
1.2 KiB
Ruby
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
|