rubyzip 1.1.7 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +137 -54
  3. data/Rakefile +6 -4
  4. data/lib/zip/central_directory.rb +17 -13
  5. data/lib/zip/compressor.rb +1 -2
  6. data/lib/zip/constants.rb +57 -5
  7. data/lib/zip/crypto/decrypted_io.rb +40 -0
  8. data/lib/zip/crypto/null_encryption.rb +4 -6
  9. data/lib/zip/crypto/traditional_encryption.rb +14 -14
  10. data/lib/zip/decompressor.rb +22 -4
  11. data/lib/zip/deflater.rb +8 -6
  12. data/lib/zip/dos_time.rb +17 -13
  13. data/lib/zip/entry.rb +171 -148
  14. data/lib/zip/entry_set.rb +16 -14
  15. data/lib/zip/errors.rb +3 -0
  16. data/lib/zip/extra_field/generic.rb +14 -13
  17. data/lib/zip/extra_field/ntfs.rb +18 -16
  18. data/lib/zip/extra_field/old_unix.rb +12 -11
  19. data/lib/zip/extra_field/universal_time.rb +46 -16
  20. data/lib/zip/extra_field/unix.rb +10 -9
  21. data/lib/zip/extra_field/zip64.rb +15 -12
  22. data/lib/zip/extra_field/zip64_placeholder.rb +1 -2
  23. data/lib/zip/extra_field.rb +18 -16
  24. data/lib/zip/file.rb +147 -115
  25. data/lib/zip/filesystem.rb +289 -272
  26. data/lib/zip/inflater.rb +24 -36
  27. data/lib/zip/input_stream.rb +44 -28
  28. data/lib/zip/ioextras/abstract_input_stream.rb +24 -17
  29. data/lib/zip/ioextras/abstract_output_stream.rb +4 -6
  30. data/lib/zip/ioextras.rb +2 -4
  31. data/lib/zip/null_compressor.rb +2 -2
  32. data/lib/zip/null_decompressor.rb +3 -11
  33. data/lib/zip/null_input_stream.rb +0 -0
  34. data/lib/zip/output_stream.rb +25 -17
  35. data/lib/zip/pass_thru_compressor.rb +6 -6
  36. data/lib/zip/pass_thru_decompressor.rb +14 -24
  37. data/lib/zip/streamable_directory.rb +3 -3
  38. data/lib/zip/streamable_stream.rb +7 -11
  39. data/lib/zip/version.rb +1 -1
  40. data/lib/zip.rb +15 -6
  41. data/samples/example.rb +29 -39
  42. data/samples/example_filesystem.rb +16 -18
  43. data/samples/example_recursive.rb +31 -25
  44. data/samples/gtk_ruby_zip.rb +84 -0
  45. data/samples/qtzip.rb +23 -32
  46. data/samples/write_simple.rb +10 -13
  47. data/samples/zipfind.rb +33 -40
  48. metadata +50 -141
  49. data/samples/gtkRubyzip.rb +0 -86
  50. data/test/basic_zip_file_test.rb +0 -64
  51. data/test/central_directory_entry_test.rb +0 -73
  52. data/test/central_directory_test.rb +0 -104
  53. data/test/crypto/null_encryption_test.rb +0 -53
  54. data/test/crypto/traditional_encryption_test.rb +0 -80
  55. data/test/data/WarnInvalidDate.zip +0 -0
  56. data/test/data/file1.txt +0 -46
  57. data/test/data/file1.txt.deflatedData +0 -0
  58. data/test/data/file2.txt +0 -1504
  59. data/test/data/globTest/foo/bar/baz/foo.txt +0 -0
  60. data/test/data/globTest/foo.txt +0 -0
  61. data/test/data/globTest/food.txt +0 -0
  62. data/test/data/globTest.zip +0 -0
  63. data/test/data/mimetype +0 -1
  64. data/test/data/notzippedruby.rb +0 -7
  65. data/test/data/ntfs.zip +0 -0
  66. data/test/data/rubycode.zip +0 -0
  67. data/test/data/rubycode2.zip +0 -0
  68. data/test/data/testDirectory.bin +0 -0
  69. data/test/data/zip64-sample.zip +0 -0
  70. data/test/data/zipWithDirs.zip +0 -0
  71. data/test/data/zipWithEncryption.zip +0 -0
  72. data/test/deflater_test.rb +0 -67
  73. data/test/encryption_test.rb +0 -42
  74. data/test/entry_set_test.rb +0 -138
  75. data/test/entry_test.rb +0 -165
  76. data/test/errors_test.rb +0 -36
  77. data/test/extra_field_test.rb +0 -78
  78. data/test/file_extract_directory_test.rb +0 -56
  79. data/test/file_extract_test.rb +0 -90
  80. data/test/file_split_test.rb +0 -60
  81. data/test/file_test.rb +0 -559
  82. data/test/filesystem/dir_iterator_test.rb +0 -62
  83. data/test/filesystem/directory_test.rb +0 -131
  84. data/test/filesystem/file_mutating_test.rb +0 -100
  85. data/test/filesystem/file_nonmutating_test.rb +0 -514
  86. data/test/filesystem/file_stat_test.rb +0 -66
  87. data/test/gentestfiles.rb +0 -134
  88. data/test/inflater_test.rb +0 -14
  89. data/test/input_stream_test.rb +0 -170
  90. data/test/ioextras/abstract_input_stream_test.rb +0 -103
  91. data/test/ioextras/abstract_output_stream_test.rb +0 -106
  92. data/test/ioextras/fake_io_test.rb +0 -18
  93. data/test/local_entry_test.rb +0 -156
  94. data/test/output_stream_test.rb +0 -129
  95. data/test/pass_thru_compressor_test.rb +0 -31
  96. data/test/pass_thru_decompressor_test.rb +0 -15
  97. data/test/settings_test.rb +0 -92
  98. data/test/test_helper.rb +0 -228
  99. data/test/unicode_file_names_and_comments_test.rb +0 -52
  100. data/test/zip64_full_test.rb +0 -53
  101. data/test/zip64_support_test.rb +0 -15
@@ -1,62 +0,0 @@
1
- require 'test_helper'
2
- require 'zip/filesystem'
3
-
4
- class ZipFsDirIteratorTest < MiniTest::Test
5
-
6
- FILENAME_ARRAY = [ "f1", "f2", "f3", "f4", "f5", "f6" ]
7
-
8
- def setup
9
- @dirIt = ::Zip::FileSystem::ZipFsDirIterator.new(FILENAME_ARRAY)
10
- end
11
-
12
- def test_close
13
- @dirIt.close
14
- assert_raises(IOError, "closed directory") {
15
- @dirIt.each { |e| p e }
16
- }
17
- assert_raises(IOError, "closed directory") {
18
- @dirIt.read
19
- }
20
- assert_raises(IOError, "closed directory") {
21
- @dirIt.rewind
22
- }
23
- assert_raises(IOError, "closed directory") {
24
- @dirIt.seek(0)
25
- }
26
- assert_raises(IOError, "closed directory") {
27
- @dirIt.tell
28
- }
29
-
30
- end
31
-
32
- def test_each
33
- # Tested through Enumerable.entries
34
- assert_equal(FILENAME_ARRAY, @dirIt.entries)
35
- end
36
-
37
- def test_read
38
- FILENAME_ARRAY.size.times {
39
- |i|
40
- assert_equal(FILENAME_ARRAY[i], @dirIt.read)
41
- }
42
- end
43
-
44
- def test_rewind
45
- @dirIt.read
46
- @dirIt.read
47
- assert_equal(FILENAME_ARRAY[2], @dirIt.read)
48
- @dirIt.rewind
49
- assert_equal(FILENAME_ARRAY[0], @dirIt.read)
50
- end
51
-
52
- def test_tell_seek
53
- @dirIt.read
54
- @dirIt.read
55
- pos = @dirIt.tell
56
- valAtPos = @dirIt.read
57
- @dirIt.read
58
- @dirIt.seek(pos)
59
- assert_equal(valAtPos, @dirIt.read)
60
- end
61
-
62
- end
@@ -1,131 +0,0 @@
1
- require 'test_helper'
2
- require 'zip/filesystem'
3
-
4
- class ZipFsDirectoryTest < MiniTest::Test
5
- TEST_ZIP = "test/data/generated/zipWithDirs_copy.zip"
6
-
7
- def setup
8
- FileUtils.cp("test/data/zipWithDirs.zip", TEST_ZIP)
9
- end
10
-
11
- def test_delete
12
- ::Zip::File.open(TEST_ZIP) {
13
- |zf|
14
- assert_raises(Errno::ENOENT, "No such file or directory - NoSuchFile.txt") {
15
- zf.dir.delete("NoSuchFile.txt")
16
- }
17
- assert_raises(Errno::EINVAL, "Invalid argument - file1") {
18
- zf.dir.delete("file1")
19
- }
20
- assert(zf.file.exists?("dir1"))
21
- zf.dir.delete("dir1")
22
- assert(! zf.file.exists?("dir1"))
23
- }
24
- end
25
-
26
- def test_mkdir
27
- ::Zip::File.open(TEST_ZIP) {
28
- |zf|
29
- assert_raises(Errno::EEXIST, "File exists - dir1") {
30
- zf.dir.mkdir("file1")
31
- }
32
- assert_raises(Errno::EEXIST, "File exists - dir1") {
33
- zf.dir.mkdir("dir1")
34
- }
35
- assert(!zf.file.exists?("newDir"))
36
- zf.dir.mkdir("newDir")
37
- assert(zf.file.directory?("newDir"))
38
- assert(!zf.file.exists?("newDir2"))
39
- zf.dir.mkdir("newDir2", 3485)
40
- assert(zf.file.directory?("newDir2"))
41
- }
42
- end
43
-
44
- def test_pwd_chdir_entries
45
- ::Zip::File.open(TEST_ZIP) {
46
- |zf|
47
- assert_equal("/", zf.dir.pwd)
48
-
49
- assert_raises(Errno::ENOENT, "No such file or directory - no such dir") {
50
- zf.dir.chdir "no such dir"
51
- }
52
-
53
- assert_raises(Errno::EINVAL, "Invalid argument - file1") {
54
- zf.dir.chdir "file1"
55
- }
56
-
57
- assert_equal(["dir1", "dir2", "file1"].sort, zf.dir.entries(".").sort)
58
- zf.dir.chdir "dir1"
59
- assert_equal("/dir1", zf.dir.pwd)
60
- assert_equal(["dir11", "file11", "file12"], zf.dir.entries(".").sort)
61
-
62
- zf.dir.chdir "../dir2/dir21"
63
- assert_equal("/dir2/dir21", zf.dir.pwd)
64
- assert_equal(["dir221"].sort, zf.dir.entries(".").sort)
65
- }
66
- end
67
-
68
- def test_foreach
69
- ::Zip::File.open(TEST_ZIP) {
70
- |zf|
71
-
72
- blockCalled = false
73
- assert_raises(Errno::ENOENT, "No such file or directory - noSuchDir") {
74
- zf.dir.foreach("noSuchDir") { |e| blockCalled = true }
75
- }
76
- assert(! blockCalled)
77
-
78
- assert_raises(Errno::ENOTDIR, "Not a directory - file1") {
79
- zf.dir.foreach("file1") { |e| blockCalled = true }
80
- }
81
- assert(! blockCalled)
82
-
83
- entries = []
84
- zf.dir.foreach(".") { |e| entries << e }
85
- assert_equal(["dir1", "dir2", "file1"].sort, entries.sort)
86
-
87
- entries = []
88
- zf.dir.foreach("dir1") { |e| entries << e }
89
- assert_equal(["dir11", "file11", "file12"], entries.sort)
90
- }
91
- end
92
-
93
- def test_chroot
94
- ::Zip::File.open(TEST_ZIP) {
95
- |zf|
96
- assert_raises(NotImplementedError) {
97
- zf.dir.chroot
98
- }
99
- }
100
- end
101
-
102
- # Globbing not supported yet
103
- #def test_glob
104
- # # test alias []-operator too
105
- # fail "implement test"
106
- #end
107
-
108
- def test_open_new
109
- ::Zip::File.open(TEST_ZIP) {
110
- |zf|
111
-
112
- assert_raises(Errno::ENOTDIR, "Not a directory - file1") {
113
- zf.dir.new("file1")
114
- }
115
-
116
- assert_raises(Errno::ENOENT, "No such file or directory - noSuchFile") {
117
- zf.dir.new("noSuchFile")
118
- }
119
-
120
- d = zf.dir.new(".")
121
- assert_equal(["file1", "dir1", "dir2"].sort, d.entries.sort)
122
- d.close
123
-
124
- zf.dir.open("dir1") {
125
- |dir|
126
- assert_equal(["dir11", "file11", "file12"].sort, dir.entries.sort)
127
- }
128
- }
129
- end
130
-
131
- end
@@ -1,100 +0,0 @@
1
- require 'test_helper'
2
- require 'zip/filesystem'
3
-
4
- class ZipFsFileMutatingTest < MiniTest::Test
5
- TEST_ZIP = "test/data/generated/zipWithDirs_copy.zip"
6
- def setup
7
- FileUtils.cp("test/data/zipWithDirs.zip", TEST_ZIP)
8
- end
9
-
10
- def teardown
11
- end
12
-
13
- def test_delete
14
- do_test_delete_or_unlink(:delete)
15
- end
16
-
17
- def test_unlink
18
- do_test_delete_or_unlink(:unlink)
19
- end
20
-
21
- def test_open_write
22
- ::Zip::File.open(TEST_ZIP) {
23
- |zf|
24
-
25
- zf.file.open("test_open_write_entry", "w") {
26
- |f|
27
- f.write "This is what I'm writing"
28
- }
29
- assert_equal("This is what I'm writing",
30
- zf.file.read("test_open_write_entry"))
31
-
32
- # Test with existing entry
33
- zf.file.open("file1", "wb") { #also check that 'b' option is ignored
34
- |f|
35
- f.write "This is what I'm writing too"
36
- }
37
- assert_equal("This is what I'm writing too",
38
- zf.file.read("file1"))
39
- }
40
- end
41
-
42
- def test_rename
43
- ::Zip::File.open(TEST_ZIP) {
44
- |zf|
45
- assert_raises(Errno::ENOENT, "") {
46
- zf.file.rename("NoSuchFile", "bimse")
47
- }
48
- zf.file.rename("file1", "newNameForFile1")
49
- }
50
-
51
- ::Zip::File.open(TEST_ZIP) {
52
- |zf|
53
- assert(! zf.file.exists?("file1"))
54
- assert(zf.file.exists?("newNameForFile1"))
55
- }
56
- end
57
-
58
- def test_chmod
59
- ::Zip::File.open(TEST_ZIP) {
60
- |zf|
61
-
62
- zf.file.chmod(0765, "file1")
63
- }
64
-
65
- ::Zip::File.open(TEST_ZIP) {
66
- |zf|
67
- assert_equal(0100765, zf.file.stat("file1").mode)
68
- }
69
- end
70
-
71
- def do_test_delete_or_unlink(symbol)
72
- ::Zip::File.open(TEST_ZIP) {
73
- |zf|
74
- assert(zf.file.exists?("dir2/dir21/dir221/file2221"))
75
- zf.file.send(symbol, "dir2/dir21/dir221/file2221")
76
- assert(! zf.file.exists?("dir2/dir21/dir221/file2221"))
77
-
78
- assert(zf.file.exists?("dir1/file11"))
79
- assert(zf.file.exists?("dir1/file12"))
80
- zf.file.send(symbol, "dir1/file11", "dir1/file12")
81
- assert(! zf.file.exists?("dir1/file11"))
82
- assert(! zf.file.exists?("dir1/file12"))
83
-
84
- assert_raises(Errno::ENOENT) { zf.file.send(symbol, "noSuchFile") }
85
- assert_raises(Errno::EISDIR) { zf.file.send(symbol, "dir1/dir11") }
86
- assert_raises(Errno::EISDIR) { zf.file.send(symbol, "dir1/dir11/") }
87
- }
88
-
89
- ::Zip::File.open(TEST_ZIP) {
90
- |zf|
91
- assert(! zf.file.exists?("dir2/dir21/dir221/file2221"))
92
- assert(! zf.file.exists?("dir1/file11"))
93
- assert(! zf.file.exists?("dir1/file12"))
94
-
95
- assert(zf.file.exists?("dir1/dir11"))
96
- assert(zf.file.exists?("dir1/dir11/"))
97
- }
98
- end
99
-
100
- end