File: directory_test.rb

package info (click to toggle)
ruby-zip 1.1.6-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 668 kB
  • sloc: ruby: 7,041; makefile: 11
file content (131 lines) | stat: -rw-r--r-- 3,373 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
require 'test_helper'
require 'zip/filesystem'

class ZipFsDirectoryTest < MiniTest::Unit::TestCase
  TEST_ZIP = "test/data/generated/zipWithDirs_copy.zip"

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

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

  def test_mkdir
    ::Zip::File.open(TEST_ZIP) {
      |zf|
      assert_raises(Errno::EEXIST, "File exists - dir1") {
        zf.dir.mkdir("file1")
      }
      assert_raises(Errno::EEXIST, "File exists - dir1") {
        zf.dir.mkdir("dir1")
      }
      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

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

      assert_raises(Errno::ENOENT, "No such file or directory - no such dir") {
        zf.dir.chdir "no such dir"
      }

      assert_raises(Errno::EINVAL, "Invalid argument - file1") {
        zf.dir.chdir "file1"
      }

      assert_equal(["dir1", "dir2", "file1"].sort, zf.dir.entries(".").sort)
      zf.dir.chdir "dir1"
      assert_equal("/dir1", zf.dir.pwd)
      assert_equal(["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

  def test_foreach
    ::Zip::File.open(TEST_ZIP) {
      |zf|

      blockCalled = false
      assert_raises(Errno::ENOENT, "No such file or directory - noSuchDir") {
        zf.dir.foreach("noSuchDir") { |e| blockCalled = true }
      }
      assert(! blockCalled)

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

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

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

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

  # Globbing not supported yet
  #def test_glob
  #  # test alias []-operator too
  #  fail "implement test"
  #end

  def test_open_new
    ::Zip::File.open(TEST_ZIP) {
      |zf|

      assert_raises(Errno::ENOTDIR, "Not a directory - file1") {
        zf.dir.new("file1")
      }

      assert_raises(Errno::ENOENT, "No such file or directory - noSuchFile") {
        zf.dir.new("noSuchFile")
      }

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

      zf.dir.open("dir1") {
        |dir|
        assert_equal(["dir11", "file11", "file12"].sort, dir.entries.sort)
      }
    }
  end

end