File: directory_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 (139 lines) | stat: -rw-r--r-- 3,782 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
require 'test_helper'
require 'zip/filesystem'

class ZipFsDirectoryTest < MiniTest::Test
  TEST_ZIP = 'test/data/generated/zipWithDirs_copy.zip'
  GLOB_TEST_ZIP = 'test/data/globTest.zip'

  def setup
    FileUtils.cp('test/data/zipWithDirs.zip', TEST_ZIP)
  end

  def test_delete
    ::Zip::File.open(TEST_ZIP) do |zf|
      assert_raises(Errno::ENOENT, 'No such file or directory - NoSuchFile.txt') do
        zf.dir.delete('NoSuchFile.txt')
      end
      assert_raises(Errno::EINVAL, 'Invalid argument - file1') do
        zf.dir.delete('file1')
      end
      assert(zf.file.exists?('dir1'))
      zf.dir.delete('dir1')
      assert(!zf.file.exists?('dir1'))
    end
  end

  def test_mkdir
    ::Zip::File.open(TEST_ZIP) do |zf|
      assert_raises(Errno::EEXIST, 'File exists - dir1') do
        zf.dir.mkdir('file1')
      end
      assert_raises(Errno::EEXIST, 'File exists - dir1') do
        zf.dir.mkdir('dir1')
      end
      assert(!zf.file.exists?('newDir'))
      zf.dir.mkdir('newDir')
      assert(zf.file.directory?('newDir'))
      assert(!zf.file.exists?('newDir2'))
      zf.dir.mkdir('newDir2', 3485)
      assert(zf.file.directory?('newDir2'))
    end
  end

  def test_pwd_chdir_entries
    ::Zip::File.open(TEST_ZIP) do |zf|
      assert_equal('/', zf.dir.pwd)

      assert_raises(Errno::ENOENT, 'No such file or directory - no such dir') do
        zf.dir.chdir 'no such dir'
      end

      assert_raises(Errno::EINVAL, 'Invalid argument - file1') do
        zf.dir.chdir 'file1'
      end

      assert_equal(%w[dir1 dir2 file1].sort, zf.dir.entries('.').sort)
      zf.dir.chdir 'dir1'
      assert_equal('/dir1', zf.dir.pwd)
      assert_equal(%w[dir11 file11 file12], zf.dir.entries('.').sort)

      zf.dir.chdir '../dir2/dir21'
      assert_equal('/dir2/dir21', zf.dir.pwd)
      assert_equal(['dir221'].sort, zf.dir.entries('.').sort)
    end
  end

  def test_foreach
    ::Zip::File.open(TEST_ZIP) do |zf|
      blockCalled = false
      assert_raises(Errno::ENOENT, 'No such file or directory - noSuchDir') do
        zf.dir.foreach('noSuchDir') { |_e| blockCalled = true }
      end
      assert(!blockCalled)

      assert_raises(Errno::ENOTDIR, 'Not a directory - file1') do
        zf.dir.foreach('file1') { |_e| blockCalled = true }
      end
      assert(!blockCalled)

      entries = []
      zf.dir.foreach('.') { |e| entries << e }
      assert_equal(%w[dir1 dir2 file1].sort, entries.sort)

      entries = []
      zf.dir.foreach('dir1') { |e| entries << e }
      assert_equal(%w[dir11 file11 file12], entries.sort)
    end
  end

  def test_chroot
    ::Zip::File.open(TEST_ZIP) do |zf|
      assert_raises(NotImplementedError) do
        zf.dir.chroot
      end
    end
  end

  def test_glob
    globbed_files = [
      'globTest/foo/bar/baz/foo.txt',
      'globTest/foo.txt',
      'globTest/food.txt'
    ]

    ::Zip::File.open(GLOB_TEST_ZIP) do |zf|
      zf.dir.glob('**/*.txt') do |f|
        assert globbed_files.include?(f.name)
      end

      zf.dir.glob('globTest/foo/**/*.txt') do |f|
        assert_equal globbed_files[0], f.name
      end

      zf.dir.chdir('globTest/foo')
      zf.dir.glob('**/*.txt') do |f|
        assert_equal globbed_files[0], f.name
      end
    end
  end

  def test_open_new
    ::Zip::File.open(TEST_ZIP) do |zf|
      assert_raises(Errno::ENOTDIR, 'Not a directory - file1') do
        zf.dir.new('file1')
      end

      assert_raises(Errno::ENOENT, 'No such file or directory - noSuchFile') do
        zf.dir.new('noSuchFile')
      end

      d = zf.dir.new('.')
      assert_equal(%w[file1 dir1 dir2].sort, d.entries.sort)
      d.close

      zf.dir.open('dir1') do |dir|
        assert_equal(%w[dir11 file11 file12].sort, dir.entries.sort)
      end
    end
  end
end