rubyzip 1.1.7 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +143 -54
  3. data/Rakefile +3 -4
  4. data/lib/zip/central_directory.rb +8 -8
  5. data/lib/zip/compressor.rb +1 -2
  6. data/lib/zip/constants.rb +5 -5
  7. data/lib/zip/crypto/null_encryption.rb +4 -6
  8. data/lib/zip/crypto/traditional_encryption.rb +5 -5
  9. data/lib/zip/decompressor.rb +3 -3
  10. data/lib/zip/deflater.rb +8 -6
  11. data/lib/zip/dos_time.rb +5 -6
  12. data/lib/zip/entry.rb +132 -128
  13. data/lib/zip/entry_set.rb +14 -14
  14. data/lib/zip/errors.rb +2 -0
  15. data/lib/zip/extra_field/generic.rb +8 -8
  16. data/lib/zip/extra_field/ntfs.rb +14 -16
  17. data/lib/zip/extra_field/old_unix.rb +9 -10
  18. data/lib/zip/extra_field/universal_time.rb +14 -14
  19. data/lib/zip/extra_field/unix.rb +8 -9
  20. data/lib/zip/extra_field/zip64.rb +12 -11
  21. data/lib/zip/extra_field/zip64_placeholder.rb +1 -2
  22. data/lib/zip/extra_field.rb +8 -8
  23. data/lib/zip/file.rb +88 -81
  24. data/lib/zip/filesystem.rb +144 -143
  25. data/lib/zip/inflater.rb +5 -5
  26. data/lib/zip/input_stream.rb +22 -13
  27. data/lib/zip/ioextras/abstract_input_stream.rb +6 -10
  28. data/lib/zip/ioextras/abstract_output_stream.rb +3 -5
  29. data/lib/zip/ioextras.rb +1 -3
  30. data/lib/zip/null_compressor.rb +2 -2
  31. data/lib/zip/null_decompressor.rb +3 -3
  32. data/lib/zip/null_input_stream.rb +0 -0
  33. data/lib/zip/output_stream.rb +13 -14
  34. data/lib/zip/pass_thru_compressor.rb +4 -4
  35. data/lib/zip/pass_thru_decompressor.rb +3 -4
  36. data/lib/zip/streamable_directory.rb +2 -2
  37. data/lib/zip/streamable_stream.rb +3 -3
  38. data/lib/zip/version.rb +1 -1
  39. data/lib/zip.rb +13 -5
  40. data/samples/example.rb +29 -39
  41. data/samples/example_filesystem.rb +16 -18
  42. data/samples/example_recursive.rb +31 -25
  43. data/samples/{gtkRubyzip.rb → gtk_ruby_zip.rb} +23 -25
  44. data/samples/qtzip.rb +18 -27
  45. data/samples/write_simple.rb +12 -13
  46. data/samples/zipfind.rb +26 -34
  47. data/test/basic_zip_file_test.rb +11 -15
  48. data/test/case_sensitivity_test.rb +69 -0
  49. data/test/central_directory_entry_test.rb +32 -36
  50. data/test/central_directory_test.rb +46 -50
  51. data/test/crypto/null_encryption_test.rb +8 -4
  52. data/test/crypto/traditional_encryption_test.rb +5 -5
  53. data/test/data/gpbit3stored.zip +0 -0
  54. data/test/data/notzippedruby.rb +1 -1
  55. data/test/data/oddExtraField.zip +0 -0
  56. data/test/data/path_traversal/Makefile +10 -0
  57. data/test/data/path_traversal/jwilk/README.md +5 -0
  58. data/test/data/path_traversal/jwilk/absolute1.zip +0 -0
  59. data/test/data/path_traversal/jwilk/absolute2.zip +0 -0
  60. data/test/data/path_traversal/jwilk/dirsymlink.zip +0 -0
  61. data/test/data/path_traversal/jwilk/dirsymlink2a.zip +0 -0
  62. data/test/data/path_traversal/jwilk/dirsymlink2b.zip +0 -0
  63. data/test/data/path_traversal/jwilk/relative0.zip +0 -0
  64. data/test/data/path_traversal/jwilk/relative2.zip +0 -0
  65. data/test/data/path_traversal/jwilk/symlink.zip +0 -0
  66. data/test/data/path_traversal/relative1.zip +0 -0
  67. data/test/data/path_traversal/tilde.zip +0 -0
  68. data/test/data/path_traversal/tuzovakaoff/README.md +3 -0
  69. data/test/data/path_traversal/tuzovakaoff/absolutepath.zip +0 -0
  70. data/test/data/path_traversal/tuzovakaoff/symlink.zip +0 -0
  71. data/test/data/rubycode.zip +0 -0
  72. data/test/data/test.xls +0 -0
  73. data/test/deflater_test.rb +10 -12
  74. data/test/encryption_test.rb +2 -2
  75. data/test/entry_set_test.rb +50 -25
  76. data/test/entry_test.rb +76 -87
  77. data/test/errors_test.rb +1 -2
  78. data/test/extra_field_test.rb +19 -21
  79. data/test/file_extract_directory_test.rb +12 -14
  80. data/test/file_extract_test.rb +94 -39
  81. data/test/file_permissions_test.rb +65 -0
  82. data/test/file_split_test.rb +24 -27
  83. data/test/file_test.rb +286 -179
  84. data/test/filesystem/dir_iterator_test.rb +13 -17
  85. data/test/filesystem/directory_test.rb +101 -93
  86. data/test/filesystem/file_mutating_test.rb +52 -65
  87. data/test/filesystem/file_nonmutating_test.rb +223 -229
  88. data/test/filesystem/file_stat_test.rb +17 -19
  89. data/test/gentestfiles.rb +54 -62
  90. data/test/inflater_test.rb +1 -1
  91. data/test/input_stream_test.rb +52 -40
  92. data/test/ioextras/abstract_input_stream_test.rb +22 -23
  93. data/test/ioextras/abstract_output_stream_test.rb +33 -33
  94. data/test/ioextras/fake_io_test.rb +1 -1
  95. data/test/local_entry_test.rb +36 -38
  96. data/test/output_stream_test.rb +20 -21
  97. data/test/pass_thru_compressor_test.rb +5 -6
  98. data/test/pass_thru_decompressor_test.rb +0 -1
  99. data/test/path_traversal_test.rb +141 -0
  100. data/test/samples/example_recursive_test.rb +37 -0
  101. data/test/settings_test.rb +18 -15
  102. data/test/test_helper.rb +52 -46
  103. data/test/unicode_file_names_and_comments_test.rb +17 -7
  104. data/test/zip64_full_test.rb +10 -12
  105. data/test/zip64_support_test.rb +0 -1
  106. metadata +100 -66
Binary file
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  class NotZippedRuby
4
- def returnTrue
4
+ def return_true
5
5
  true
6
6
  end
7
7
  end
Binary file
@@ -0,0 +1,10 @@
1
+ # Based on 'relative2' in https://github.com/jwilk/path-traversal-samples,
2
+ # but create the local `tmp` folder before adding the symlink. Otherwise
3
+ # we may bail out before we get to trying to create the file.
4
+ all: relative1.zip
5
+ relative1.zip:
6
+ rm -f $(@)
7
+ mkdir -p -m 755 tmp/tmp
8
+ umask 022 && echo moo > moo
9
+ cd tmp && zip -X ../$(@) tmp tmp/../../moo
10
+ rm -rf tmp moo
@@ -0,0 +1,5 @@
1
+ # Path Traversal Samples
2
+
3
+ Copied from https://github.com/jwilk/path-traversal-samples on 2018-08-26.
4
+
5
+ License: MIT
Binary file
@@ -0,0 +1,3 @@
1
+ # Path Traversal Samples
2
+
3
+ Copied from https://github.com/tuzovakaoff/zip_path_traversal on 2018-08-25.
Binary file
Binary file
@@ -8,15 +8,15 @@ class DeflaterTest < MiniTest::Test
8
8
  DEFAULT_COMP_FILE = 'test/data/generated/compressiontest_default_compression.bin'
9
9
  NO_COMP_FILE = 'test/data/generated/compressiontest_no_compression.bin'
10
10
 
11
- def test_outputOperator
12
- txt = load_file("test/data/file2.txt")
11
+ def test_output_operator
12
+ txt = load_file('test/data/file2.txt')
13
13
  deflate(txt, DEFLATER_TEST_FILE)
14
14
  inflatedTxt = inflate(DEFLATER_TEST_FILE)
15
15
  assert_equal(txt, inflatedTxt)
16
16
  end
17
17
 
18
18
  def test_default_compression
19
- txt = load_file("test/data/file2.txt")
19
+ txt = load_file('test/data/file2.txt')
20
20
 
21
21
  Zip.default_compression = ::Zlib::BEST_COMPRESSION
22
22
  deflate(txt, BEST_COMP_FILE)
@@ -34,31 +34,29 @@ class DeflaterTest < MiniTest::Test
34
34
  assert(default < no)
35
35
  end
36
36
 
37
-
38
37
  private
38
+
39
39
  def load_file(fileName)
40
40
  txt = nil
41
- File.open(fileName, "rb") { |f| txt = f.read }
41
+ File.open(fileName, 'rb') { |f| txt = f.read }
42
42
  end
43
43
 
44
44
  def deflate(data, fileName)
45
- File.open(fileName, "wb") {
46
- |file|
45
+ File.open(fileName, 'wb') do |file|
47
46
  deflater = ::Zip::Deflater.new(file)
48
47
  deflater << data
49
48
  deflater.finish
50
49
  assert_equal(deflater.size, data.size)
51
- file << "trailing data for zlib with -MAX_WBITS"
52
- }
50
+ file << 'trailing data for zlib with -MAX_WBITS'
51
+ end
53
52
  end
54
53
 
55
54
  def inflate(fileName)
56
55
  txt = nil
57
- File.open(fileName, "rb") {
58
- |file|
56
+ File.open(fileName, 'rb') do |file|
59
57
  inflater = ::Zip::Inflater.new(file)
60
58
  txt = inflater.sysread
61
- }
59
+ end
62
60
  end
63
61
 
64
62
  def test_crc
@@ -18,7 +18,7 @@ class EncryptionTest < MiniTest::Test
18
18
 
19
19
  @rand = [250, 143, 107, 13, 143, 22, 155, 75, 228, 150, 12]
20
20
  @output = ::Zip::DOSTime.stub(:now, ::Zip::DOSTime.new(2014, 12, 17, 15, 56, 24)) do
21
- Random.stub(:rand, lambda { |range| @rand.shift }) do
21
+ Random.stub(:rand, ->(_range) { @rand.shift }) do
22
22
  Zip::OutputStream.write_buffer(::StringIO.new(''), Zip::TraditionalEncrypter.new('password')) do |zos|
23
23
  zos.put_next_entry('file1.txt')
24
24
  zos.write open(INPUT_FILE1).read
@@ -26,7 +26,7 @@ class EncryptionTest < MiniTest::Test
26
26
  end
27
27
  end
28
28
 
29
- @output.unpack("C*").each_with_index do |c, i|
29
+ @output.unpack('C*').each_with_index do |c, i|
30
30
  assert_equal test_file[i].ord, c
31
31
  end
32
32
  end
@@ -2,12 +2,12 @@ require 'test_helper'
2
2
 
3
3
  class ZipEntrySetTest < MiniTest::Test
4
4
  ZIP_ENTRIES = [
5
- ::Zip::Entry.new("zipfile.zip", "name1", "comment1"),
6
- ::Zip::Entry.new("zipfile.zip", "name3", "comment1"),
7
- ::Zip::Entry.new("zipfile.zip", "name2", "comment1"),
8
- ::Zip::Entry.new("zipfile.zip", "name4", "comment1"),
9
- ::Zip::Entry.new("zipfile.zip", "name5", "comment1"),
10
- ::Zip::Entry.new("zipfile.zip", "name6", "comment1")
5
+ ::Zip::Entry.new('zipfile.zip', 'name1', 'comment1'),
6
+ ::Zip::Entry.new('zipfile.zip', 'name3', 'comment1'),
7
+ ::Zip::Entry.new('zipfile.zip', 'name2', 'comment1'),
8
+ ::Zip::Entry.new('zipfile.zip', 'name4', 'comment1'),
9
+ ::Zip::Entry.new('zipfile.zip', 'name5', 'comment1'),
10
+ ::Zip::Entry.new('zipfile.zip', 'name6', 'comment1')
11
11
  ]
12
12
 
13
13
  def setup
@@ -20,20 +20,20 @@ class ZipEntrySetTest < MiniTest::Test
20
20
 
21
21
  def test_include
22
22
  assert(@zipEntrySet.include?(ZIP_ENTRIES.first))
23
- assert(!@zipEntrySet.include?(::Zip::Entry.new("different.zip", "different", "aComment")))
23
+ assert(!@zipEntrySet.include?(::Zip::Entry.new('different.zip', 'different', 'aComment')))
24
24
  end
25
25
 
26
26
  def test_size
27
27
  assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
28
28
  assert_equal(ZIP_ENTRIES.size, @zipEntrySet.length)
29
- @zipEntrySet << ::Zip::Entry.new("a", "b", "c")
29
+ @zipEntrySet << ::Zip::Entry.new('a', 'b', 'c')
30
30
  assert_equal(ZIP_ENTRIES.size + 1, @zipEntrySet.length)
31
31
  end
32
32
 
33
33
  def test_add
34
34
  zes = ::Zip::EntrySet.new
35
- entry1 = ::Zip::Entry.new("zf.zip", "name1")
36
- entry2 = ::Zip::Entry.new("zf.zip", "name2")
35
+ entry1 = ::Zip::Entry.new('zf.zip', 'name1')
36
+ entry2 = ::Zip::Entry.new('zf.zip', 'name2')
37
37
  zes << entry1
38
38
  assert(zes.include?(entry1))
39
39
  zes.push(entry2)
@@ -65,6 +65,20 @@ class ZipEntrySetTest < MiniTest::Test
65
65
  assert_equal(ZIP_ENTRIES, @zipEntrySet.entries)
66
66
  end
67
67
 
68
+ def test_find_entry
69
+ entries = [::Zip::Entry.new('zipfile.zip', 'MiXeDcAsEnAmE', 'comment1')]
70
+
71
+ ::Zip.case_insensitive_match = true
72
+ zipEntrySet = ::Zip::EntrySet.new(entries)
73
+ assert_equal(entries[0], zipEntrySet.find_entry('MiXeDcAsEnAmE'))
74
+ assert_equal(entries[0], zipEntrySet.find_entry('mixedcasename'))
75
+
76
+ ::Zip.case_insensitive_match = false
77
+ zipEntrySet = ::Zip::EntrySet.new(entries)
78
+ assert_equal(entries[0], zipEntrySet.find_entry('MiXeDcAsEnAmE'))
79
+ assert_nil(zipEntrySet.find_entry('mixedcasename'))
80
+ end
81
+
68
82
  def test_entries_with_sort
69
83
  ::Zip.sort_entries = true
70
84
  assert_equal(ZIP_ENTRIES.sort, @zipEntrySet.entries)
@@ -82,7 +96,7 @@ class ZipEntrySetTest < MiniTest::Test
82
96
  end
83
97
 
84
98
  def test_compound
85
- newEntry = ::Zip::Entry.new("zf.zip", "new entry", "new entry's comment")
99
+ newEntry = ::Zip::Entry.new('zf.zip', 'new entry', "new entry's comment")
86
100
  assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
87
101
  @zipEntrySet << newEntry
88
102
  assert_equal(ZIP_ENTRIES.size + 1, @zipEntrySet.size)
@@ -97,19 +111,19 @@ class ZipEntrySetTest < MiniTest::Test
97
111
  assert_equal(@zipEntrySet, copy)
98
112
 
99
113
  # demonstrate that this is a deep copy
100
- copy.entries[0].name = "a totally different name"
114
+ copy.entries[0].name = 'a totally different name'
101
115
  assert(@zipEntrySet != copy)
102
116
  end
103
117
 
104
118
  def test_parent
105
119
  entries = [
106
- ::Zip::Entry.new("zf.zip", "a/"),
107
- ::Zip::Entry.new("zf.zip", "a/b/"),
108
- ::Zip::Entry.new("zf.zip", "a/b/c/")
120
+ ::Zip::Entry.new('zf.zip', 'a/'),
121
+ ::Zip::Entry.new('zf.zip', 'a/b/'),
122
+ ::Zip::Entry.new('zf.zip', 'a/b/c/')
109
123
  ]
110
124
  entrySet = ::Zip::EntrySet.new(entries)
111
125
 
112
- assert_equal(nil, entrySet.parent(entries[0]))
126
+ assert_nil(entrySet.parent(entries[0]))
113
127
  assert_equal(entries[0], entrySet.parent(entries[1]))
114
128
  assert_equal(entries[1], entrySet.parent(entries[2]))
115
129
  end
@@ -122,17 +136,28 @@ class ZipEntrySetTest < MiniTest::Test
122
136
 
123
137
  def test_glob2
124
138
  entries = [
125
- ::Zip::Entry.new("zf.zip", "a/"),
126
- ::Zip::Entry.new("zf.zip", "a/b/b1"),
127
- ::Zip::Entry.new("zf.zip", "a/b/c/"),
128
- ::Zip::Entry.new("zf.zip", "a/b/c/c1")
139
+ ::Zip::Entry.new('zf.zip', 'a/'),
140
+ ::Zip::Entry.new('zf.zip', 'a/b/b1'),
141
+ ::Zip::Entry.new('zf.zip', 'a/b/c/'),
142
+ ::Zip::Entry.new('zf.zip', 'a/b/c/c1')
143
+ ]
144
+ entrySet = ::Zip::EntrySet.new(entries)
145
+
146
+ assert_equal(entries[0, 1], entrySet.glob('*'))
147
+ # assert_equal(entries[FIXME], entrySet.glob("**"))
148
+ # res = entrySet.glob('a*')
149
+ # assert_equal(entries.size, res.size)
150
+ # assert_equal(entrySet.map { |e| e.name }, res.map { |e| e.name })
151
+ end
152
+
153
+ def test_glob3
154
+ entries = [
155
+ ::Zip::Entry.new('zf.zip', 'a/a'),
156
+ ::Zip::Entry.new('zf.zip', 'a/b'),
157
+ ::Zip::Entry.new('zf.zip', 'a/c')
129
158
  ]
130
159
  entrySet = ::Zip::EntrySet.new(entries)
131
160
 
132
- assert_equal(entries[0, 1], entrySet.glob("*"))
133
- # assert_equal(entries[FIXME], entrySet.glob("**"))
134
- # res = entrySet.glob('a*')
135
- # assert_equal(entries.size, res.size)
136
- # assert_equal(entrySet.map { |e| e.name }, res.map { |e| e.name })
161
+ assert_equal(entries[0, 2].sort, entrySet.glob('a/{a,b}').sort)
137
162
  end
138
163
  end
data/test/entry_test.rb CHANGED
@@ -1,18 +1,9 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class ZipEntryTest < MiniTest::Test
4
- TEST_ZIPFILE = "someZipFile.zip"
5
- TEST_COMMENT = "a comment"
6
- TEST_COMPRESSED_SIZE = 1234
7
- TEST_CRC = 325324
8
- TEST_EXTRA = "Some data here"
9
- TEST_COMPRESSIONMETHOD = ::Zip::Entry::DEFLATED
10
- TEST_NAME = "entry name"
11
- TEST_SIZE = 8432
12
- TEST_ISDIRECTORY = false
13
- TEST_TIME = Time.now
14
-
15
- def test_constructorAndGetters
4
+ include ZipEntryData
5
+
6
+ def test_constructor_and_getters
16
7
  entry = ::Zip::Entry.new(TEST_ZIPFILE,
17
8
  TEST_NAME,
18
9
  TEST_COMMENT,
@@ -33,45 +24,45 @@ class ZipEntryTest < MiniTest::Test
33
24
  assert_equal(TEST_TIME, entry.time)
34
25
  end
35
26
 
36
- def test_is_directoryAndIsFile
37
- assert(::Zip::Entry.new(TEST_ZIPFILE, "hello").file?)
38
- assert(!::Zip::Entry.new(TEST_ZIPFILE, "hello").directory?)
27
+ def test_is_directory_and_is_file
28
+ assert(::Zip::Entry.new(TEST_ZIPFILE, 'hello').file?)
29
+ assert(!::Zip::Entry.new(TEST_ZIPFILE, 'hello').directory?)
39
30
 
40
- assert(::Zip::Entry.new(TEST_ZIPFILE, "dir/hello").file?)
41
- assert(!::Zip::Entry.new(TEST_ZIPFILE, "dir/hello").directory?)
31
+ assert(::Zip::Entry.new(TEST_ZIPFILE, 'dir/hello').file?)
32
+ assert(!::Zip::Entry.new(TEST_ZIPFILE, 'dir/hello').directory?)
42
33
 
43
- assert(::Zip::Entry.new(TEST_ZIPFILE, "hello/").directory?)
44
- assert(!::Zip::Entry.new(TEST_ZIPFILE, "hello/").file?)
34
+ assert(::Zip::Entry.new(TEST_ZIPFILE, 'hello/').directory?)
35
+ assert(!::Zip::Entry.new(TEST_ZIPFILE, 'hello/').file?)
45
36
 
46
- assert(::Zip::Entry.new(TEST_ZIPFILE, "dir/hello/").directory?)
47
- assert(!::Zip::Entry.new(TEST_ZIPFILE, "dir/hello/").file?)
37
+ assert(::Zip::Entry.new(TEST_ZIPFILE, 'dir/hello/').directory?)
38
+ assert(!::Zip::Entry.new(TEST_ZIPFILE, 'dir/hello/').file?)
48
39
  end
49
40
 
50
41
  def test_equality
51
- entry1 = ::Zip::Entry.new("file.zip", "name", "isNotCompared",
52
- "something extra", 123, 1234,
53
- ::Zip::Entry::DEFLATED, 10000)
54
- entry2 = ::Zip::Entry.new("file.zip", "name", "isNotComparedXXX",
55
- "something extra", 123, 1234,
56
- ::Zip::Entry::DEFLATED, 10000)
57
- entry3 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
58
- "something extra", 123, 1234,
59
- ::Zip::Entry::DEFLATED, 10000)
60
- entry4 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
61
- "something extraXX", 123, 1234,
62
- ::Zip::Entry::DEFLATED, 10000)
63
- entry5 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
64
- "something extraXX", 12, 1234,
65
- ::Zip::Entry::DEFLATED, 10000)
66
- entry6 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
67
- "something extraXX", 12, 123,
68
- ::Zip::Entry::DEFLATED, 10000)
69
- entry7 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
70
- "something extraXX", 12, 123,
71
- ::Zip::Entry::STORED, 10000)
72
- entry8 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
73
- "something extraXX", 12, 123,
74
- ::Zip::Entry::STORED, 100000)
42
+ entry1 = ::Zip::Entry.new('file.zip', 'name', 'isNotCompared',
43
+ 'something extra', 123, 1234,
44
+ ::Zip::Entry::DEFLATED, 10_000)
45
+ entry2 = ::Zip::Entry.new('file.zip', 'name', 'isNotComparedXXX',
46
+ 'something extra', 123, 1234,
47
+ ::Zip::Entry::DEFLATED, 10_000)
48
+ entry3 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
49
+ 'something extra', 123, 1234,
50
+ ::Zip::Entry::DEFLATED, 10_000)
51
+ entry4 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
52
+ 'something extraXX', 123, 1234,
53
+ ::Zip::Entry::DEFLATED, 10_000)
54
+ entry5 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
55
+ 'something extraXX', 12, 1234,
56
+ ::Zip::Entry::DEFLATED, 10_000)
57
+ entry6 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
58
+ 'something extraXX', 12, 123,
59
+ ::Zip::Entry::DEFLATED, 10_000)
60
+ entry7 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
61
+ 'something extraXX', 12, 123,
62
+ ::Zip::Entry::STORED, 10_000)
63
+ entry8 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
64
+ 'something extraXX', 12, 123,
65
+ ::Zip::Entry::STORED, 100_000)
75
66
 
76
67
  assert_equal(entry1, entry1)
77
68
  assert_equal(entry1, entry2)
@@ -83,51 +74,51 @@ class ZipEntryTest < MiniTest::Test
83
74
  assert(entry6 != entry7)
84
75
  assert(entry7 != entry8)
85
76
 
86
- assert(entry7 != "hello")
77
+ assert(entry7 != 'hello')
87
78
  assert(entry7 != 12)
88
79
  end
89
80
 
90
81
  def test_compare
91
- assert_equal(0, (::Zip::Entry.new("zf.zip", "a") <=> ::Zip::Entry.new("zf.zip", "a")))
92
- assert_equal(1, (::Zip::Entry.new("zf.zip", "b") <=> ::Zip::Entry.new("zf.zip", "a")))
93
- assert_equal(-1, (::Zip::Entry.new("zf.zip", "a") <=> ::Zip::Entry.new("zf.zip", "b")))
82
+ assert_equal(0, (::Zip::Entry.new('zf.zip', 'a') <=> ::Zip::Entry.new('zf.zip', 'a')))
83
+ assert_equal(1, (::Zip::Entry.new('zf.zip', 'b') <=> ::Zip::Entry.new('zf.zip', 'a')))
84
+ assert_equal(-1, (::Zip::Entry.new('zf.zip', 'a') <=> ::Zip::Entry.new('zf.zip', 'b')))
94
85
 
95
86
  entries = [
96
- ::Zip::Entry.new("zf.zip", "5"),
97
- ::Zip::Entry.new("zf.zip", "1"),
98
- ::Zip::Entry.new("zf.zip", "3"),
99
- ::Zip::Entry.new("zf.zip", "4"),
100
- ::Zip::Entry.new("zf.zip", "0"),
101
- ::Zip::Entry.new("zf.zip", "2")
87
+ ::Zip::Entry.new('zf.zip', '5'),
88
+ ::Zip::Entry.new('zf.zip', '1'),
89
+ ::Zip::Entry.new('zf.zip', '3'),
90
+ ::Zip::Entry.new('zf.zip', '4'),
91
+ ::Zip::Entry.new('zf.zip', '0'),
92
+ ::Zip::Entry.new('zf.zip', '2')
102
93
  ]
103
94
 
104
95
  entries.sort!
105
- assert_equal("0", entries[0].to_s)
106
- assert_equal("1", entries[1].to_s)
107
- assert_equal("2", entries[2].to_s)
108
- assert_equal("3", entries[3].to_s)
109
- assert_equal("4", entries[4].to_s)
110
- assert_equal("5", entries[5].to_s)
96
+ assert_equal('0', entries[0].to_s)
97
+ assert_equal('1', entries[1].to_s)
98
+ assert_equal('2', entries[2].to_s)
99
+ assert_equal('3', entries[3].to_s)
100
+ assert_equal('4', entries[4].to_s)
101
+ assert_equal('5', entries[5].to_s)
111
102
  end
112
103
 
113
- def test_parentAsString
114
- entry1 = ::Zip::Entry.new("zf.zip", "aa")
115
- entry2 = ::Zip::Entry.new("zf.zip", "aa/")
116
- entry3 = ::Zip::Entry.new("zf.zip", "aa/bb")
117
- entry4 = ::Zip::Entry.new("zf.zip", "aa/bb/")
118
- entry5 = ::Zip::Entry.new("zf.zip", "aa/bb/cc")
119
- entry6 = ::Zip::Entry.new("zf.zip", "aa/bb/cc/")
120
-
121
- assert_equal(nil, entry1.parent_as_string)
122
- assert_equal(nil, entry2.parent_as_string)
123
- assert_equal("aa/", entry3.parent_as_string)
124
- assert_equal("aa/", entry4.parent_as_string)
125
- assert_equal("aa/bb/", entry5.parent_as_string)
126
- assert_equal("aa/bb/", entry6.parent_as_string)
104
+ def test_parent_as_string
105
+ entry1 = ::Zip::Entry.new('zf.zip', 'aa')
106
+ entry2 = ::Zip::Entry.new('zf.zip', 'aa/')
107
+ entry3 = ::Zip::Entry.new('zf.zip', 'aa/bb')
108
+ entry4 = ::Zip::Entry.new('zf.zip', 'aa/bb/')
109
+ entry5 = ::Zip::Entry.new('zf.zip', 'aa/bb/cc')
110
+ entry6 = ::Zip::Entry.new('zf.zip', 'aa/bb/cc/')
111
+
112
+ assert_nil(entry1.parent_as_string)
113
+ assert_nil(entry2.parent_as_string)
114
+ assert_equal('aa/', entry3.parent_as_string)
115
+ assert_equal('aa/', entry4.parent_as_string)
116
+ assert_equal('aa/bb/', entry5.parent_as_string)
117
+ assert_equal('aa/bb/', entry6.parent_as_string)
127
118
  end
128
119
 
129
120
  def test_entry_name_cannot_start_with_slash
130
- assert_raises(::Zip::EntryNameError) { ::Zip::Entry.new("zf.zip", "/hej/der") }
121
+ assert_raises(::Zip::EntryNameError) { ::Zip::Entry.new('zf.zip', '/hej/der') }
131
122
  end
132
123
 
133
124
  def test_store_file_without_compression
@@ -139,27 +130,25 @@ class ZipEntryTest < MiniTest::Test
139
130
  end
140
131
 
141
132
  zipfile = Zip::File.open('/tmp/no_compress.zip', Zip::File::CREATE)
142
- mimetype_entry = Zip::Entry.new(zipfile, #@zipfile
143
- 'mimetype', #@name
144
- '', #@comment
145
- '', #@extra
146
- 0, #@compressed_size
147
- 0, #@crc
148
- Zip::Entry::STORED) #@comppressed_method
133
+ mimetype_entry = Zip::Entry.new(zipfile, # @zipfile
134
+ 'mimetype', # @name
135
+ '', # @comment
136
+ '', # @extra
137
+ 0, # @compressed_size
138
+ 0, # @crc
139
+ Zip::Entry::STORED) # @comppressed_method
149
140
 
150
141
  zipfile.add(mimetype_entry, 'test/data/mimetype')
151
142
 
152
143
  files.each do |file|
153
- zipfile.add(file.sub("test/data/globTest/", ''), file)
144
+ zipfile.add(file.sub('test/data/globTest/', ''), file)
154
145
  end
155
146
  zipfile.close
156
147
 
157
- f= File.open('/tmp/no_compress.zip', 'rb')
148
+ f = File.open('/tmp/no_compress.zip', 'rb')
158
149
  first_100_bytes = f.read(100)
159
150
  f.close
160
151
 
161
152
  assert_match(/mimetypeapplication\/epub\+zip/, first_100_bytes)
162
153
  end
163
-
164
-
165
154
  end