rubyzip 1.1.7 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubyzip might be problematic. Click here for more details.

Files changed (106) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +87 -45
  3. data/Rakefile +3 -4
  4. data/lib/zip.rb +11 -5
  5. data/lib/zip/central_directory.rb +8 -8
  6. data/lib/zip/compressor.rb +1 -2
  7. data/lib/zip/constants.rb +5 -5
  8. data/lib/zip/crypto/null_encryption.rb +4 -6
  9. data/lib/zip/crypto/traditional_encryption.rb +5 -5
  10. data/lib/zip/decompressor.rb +3 -3
  11. data/lib/zip/deflater.rb +8 -6
  12. data/lib/zip/dos_time.rb +5 -6
  13. data/lib/zip/entry.rb +120 -128
  14. data/lib/zip/entry_set.rb +14 -14
  15. data/lib/zip/errors.rb +1 -0
  16. data/lib/zip/extra_field.rb +8 -8
  17. data/lib/zip/extra_field/generic.rb +8 -8
  18. data/lib/zip/extra_field/ntfs.rb +14 -16
  19. data/lib/zip/extra_field/old_unix.rb +9 -10
  20. data/lib/zip/extra_field/universal_time.rb +14 -14
  21. data/lib/zip/extra_field/unix.rb +8 -9
  22. data/lib/zip/extra_field/zip64.rb +12 -11
  23. data/lib/zip/extra_field/zip64_placeholder.rb +1 -2
  24. data/lib/zip/file.rb +81 -81
  25. data/lib/zip/filesystem.rb +144 -143
  26. data/lib/zip/inflater.rb +5 -5
  27. data/lib/zip/input_stream.rb +22 -13
  28. data/lib/zip/ioextras.rb +1 -3
  29. data/lib/zip/ioextras/abstract_input_stream.rb +6 -10
  30. data/lib/zip/ioextras/abstract_output_stream.rb +3 -5
  31. data/lib/zip/null_compressor.rb +2 -2
  32. data/lib/zip/null_decompressor.rb +3 -3
  33. data/lib/zip/null_input_stream.rb +0 -0
  34. data/lib/zip/output_stream.rb +13 -14
  35. data/lib/zip/pass_thru_compressor.rb +4 -4
  36. data/lib/zip/pass_thru_decompressor.rb +3 -4
  37. data/lib/zip/streamable_directory.rb +2 -2
  38. data/lib/zip/streamable_stream.rb +3 -3
  39. data/lib/zip/version.rb +1 -1
  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 +33 -40
  81. data/test/file_permissions_test.rb +65 -0
  82. data/test/file_split_test.rb +24 -27
  83. data/test/file_test.rb +266 -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 +94 -65
@@ -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
@@ -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
@@ -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
@@ -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