File: file_permissions_test.rb

package info (click to toggle)
ruby-zip 1.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,036 kB
  • sloc: ruby: 7,760; makefile: 18
file content (65 lines) | stat: -rw-r--r-- 1,337 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
require 'test_helper'

class FilePermissionsTest < MiniTest::Test
  ZIPNAME = File.join(File.dirname(__FILE__), 'umask.zip')
  FILENAME = File.join(File.dirname(__FILE__), 'umask.txt')

  def teardown
    ::File.unlink(ZIPNAME)
    ::File.unlink(FILENAME)
  end

  def test_current_umask
    create_files
    assert_matching_permissions FILENAME, ZIPNAME
  end

  def test_umask_000
    set_umask(0o000) do
      create_files
    end

    assert_matching_permissions FILENAME, ZIPNAME
  end

  def test_umask_066
    set_umask(0o066) do
      create_files
    end

    assert_matching_permissions FILENAME, ZIPNAME
  end

  def test_umask_027
    set_umask(0o027) do
      create_files
    end

    assert_matching_permissions FILENAME, ZIPNAME
  end

  def assert_matching_permissions(expected_file, actual_file)
    assert_equal(
      ::File.stat(expected_file).mode.to_s(8).rjust(4, '0'),
      ::File.stat(actual_file).mode.to_s(8).rjust(4, '0')
    )
  end

  def create_files
    ::Zip::File.open(ZIPNAME, ::Zip::File::CREATE) do |zip|
      zip.comment = 'test'
    end

    ::File.open(FILENAME, 'w') do |file|
      file << 'test'
    end
  end

  # If anything goes wrong, make sure the umask is restored.
  def set_umask(umask)
    saved_umask = ::File.umask(umask)
    yield
  ensure
    ::File.umask(saved_umask)
  end
end