forked from jdleesmiller/rubyzip
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request rubyzip#124 from rubyzip/minitest-refactoring
Tests refactoring
- Loading branch information
Showing
39 changed files
with
3,370 additions
and
3,418 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,3 +13,4 @@ gemspec | |
gem 'rake' | ||
gem 'coveralls', :require => false | ||
gem 'pry' | ||
gem 'minitest' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
require 'test_helper' | ||
|
||
class BasicZipFileTest < MiniTest::Unit::TestCase | ||
include AssertEntry | ||
|
||
def setup | ||
@zip_file = ::Zip::File.new(TestZipFile::TEST_ZIP2.zip_name) | ||
@testEntryNameIndex=0 | ||
end | ||
|
||
def test_entries | ||
assert_equal(TestZipFile::TEST_ZIP2.entry_names.sort, | ||
@zip_file.entries.entries.sort.map { |e| e.name }) | ||
end | ||
|
||
def test_each | ||
count = 0 | ||
visited = {} | ||
@zip_file.each { | ||
|entry| | ||
assert(TestZipFile::TEST_ZIP2.entry_names.include?(entry.name)) | ||
assert(!visited.include?(entry.name)) | ||
visited[entry.name] = nil | ||
count = count.succ | ||
} | ||
assert_equal(TestZipFile::TEST_ZIP2.entry_names.length, count) | ||
end | ||
|
||
def test_foreach | ||
count = 0 | ||
visited = {} | ||
::Zip::File.foreach(TestZipFile::TEST_ZIP2.zip_name) { | ||
|entry| | ||
assert(TestZipFile::TEST_ZIP2.entry_names.include?(entry.name)) | ||
assert(!visited.include?(entry.name)) | ||
visited[entry.name] = nil | ||
count = count.succ | ||
} | ||
assert_equal(TestZipFile::TEST_ZIP2.entry_names.length, count) | ||
end | ||
|
||
def test_get_input_stream | ||
count = 0 | ||
visited = {} | ||
@zip_file.each do |entry| | ||
assert_entry(entry.name, @zip_file.get_input_stream(entry), entry.name) | ||
assert(!visited.include?(entry.name)) | ||
visited[entry.name] = nil | ||
count = count.succ | ||
end | ||
assert_equal(TestZipFile::TEST_ZIP2.entry_names.length, count) | ||
end | ||
|
||
def test_get_input_streamBlock | ||
fileAndEntryName = @zip_file.entries.first.name | ||
@zip_file.get_input_stream(fileAndEntryName) { | ||
|zis| | ||
assert_entryContentsForStream(fileAndEntryName, | ||
zis, | ||
fileAndEntryName) | ||
} | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
require 'test_helper' | ||
|
||
class ZipCentralDirectoryEntryTest < MiniTest::Unit::TestCase | ||
|
||
def test_read_from_stream | ||
File.open("test/data/testDirectory.bin", "rb") { | ||
|file| | ||
entry = ::Zip::Entry.read_c_dir_entry(file) | ||
|
||
assert_equal("longAscii.txt", entry.name) | ||
assert_equal(::Zip::Entry::DEFLATED, entry.compression_method) | ||
assert_equal(106490, entry.size) | ||
assert_equal(3784, entry.compressed_size) | ||
assert_equal(0xfcd1799c, entry.crc) | ||
assert_equal("", entry.comment) | ||
|
||
entry = ::Zip::Entry.read_c_dir_entry(file) | ||
assert_equal("empty.txt", entry.name) | ||
assert_equal(::Zip::Entry::STORED, entry.compression_method) | ||
assert_equal(0, entry.size) | ||
assert_equal(0, entry.compressed_size) | ||
assert_equal(0x0, entry.crc) | ||
assert_equal("", entry.comment) | ||
|
||
entry = ::Zip::Entry.read_c_dir_entry(file) | ||
assert_equal("short.txt", entry.name) | ||
assert_equal(::Zip::Entry::STORED, entry.compression_method) | ||
assert_equal(6, entry.size) | ||
assert_equal(6, entry.compressed_size) | ||
assert_equal(0xbb76fe69, entry.crc) | ||
assert_equal("", entry.comment) | ||
|
||
entry = ::Zip::Entry.read_c_dir_entry(file) | ||
assert_equal("longBinary.bin", entry.name) | ||
assert_equal(::Zip::Entry::DEFLATED, entry.compression_method) | ||
assert_equal(1000024, entry.size) | ||
assert_equal(70847, entry.compressed_size) | ||
assert_equal(0x10da7d59, entry.crc) | ||
assert_equal('', entry.comment) | ||
|
||
entry = ::Zip::Entry.read_c_dir_entry(file) | ||
assert_equal(nil, entry) | ||
# Fields that are not check by this test: | ||
# version made by 2 bytes | ||
# version needed to extract 2 bytes | ||
# general purpose bit flag 2 bytes | ||
# last mod file time 2 bytes | ||
# last mod file date 2 bytes | ||
# compressed size 4 bytes | ||
# uncompressed size 4 bytes | ||
# disk number start 2 bytes | ||
# internal file attributes 2 bytes | ||
# external file attributes 4 bytes | ||
# relative offset of local header 4 bytes | ||
|
||
# file name (variable size) | ||
# extra field (variable size) | ||
# file comment (variable size) | ||
|
||
} | ||
end | ||
|
||
def test_ReadEntryFromTruncatedZipFile | ||
fragment="" | ||
File.open("test/data/testDirectory.bin") { |f| fragment = f.read(12) } # cdir entry header is at least 46 bytes | ||
fragment.extend(IOizeString) | ||
entry = ::Zip::Entry.new | ||
entry.read_c_dir_entry(fragment) | ||
fail "ZipError expected" | ||
rescue ::Zip::ZipError | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
require 'test_helper' | ||
|
||
class ZipCentralDirectoryTest < MiniTest::Unit::TestCase | ||
|
||
def test_read_from_stream | ||
::File.open(TestZipFile::TEST_ZIP2.zip_name, "rb") { | ||
|zipFile| | ||
cdir = ::Zip::CentralDirectory.read_from_stream(zipFile) | ||
|
||
assert_equal(TestZipFile::TEST_ZIP2.entry_names.size, cdir.size) | ||
assert(cdir.entries.sort.compare_enumerables(TestZipFile::TEST_ZIP2.entry_names.sort) { | ||
|cdirEntry, testEntryName| | ||
cdirEntry.name == testEntryName | ||
}) | ||
assert_equal(TestZipFile::TEST_ZIP2.comment, cdir.comment) | ||
} | ||
end | ||
|
||
def test_readFromInvalidStream | ||
File.open("test/data/file2.txt", "rb") { | ||
|zipFile| | ||
cdir = ::Zip::CentralDirectory.new | ||
cdir.read_from_stream(zipFile) | ||
} | ||
fail "ZipError expected!" | ||
rescue ::Zip::ZipError | ||
end | ||
|
||
def test_ReadFromTruncatedZipFile | ||
fragment="" | ||
File.open("test/data/testDirectory.bin", "rb") { |f| fragment = f.read } | ||
fragment.slice!(12) # removed part of first cdir entry. eocd structure still complete | ||
fragment.extend(IOizeString) | ||
entry = ::Zip::CentralDirectory.new | ||
entry.read_from_stream(fragment) | ||
fail "ZipError expected" | ||
rescue ::Zip::ZipError | ||
end | ||
|
||
def test_write_to_stream | ||
entries = [::Zip::Entry.new("file.zip", "flimse", "myComment", "somethingExtra"), | ||
::Zip::Entry.new("file.zip", "secondEntryName"), | ||
::Zip::Entry.new("file.zip", "lastEntry.txt", "Has a comment too")] | ||
cdir = ::Zip::CentralDirectory.new(entries, "my zip comment") | ||
File.open("test/data/generated/cdirtest.bin", "wb") { |f| cdir.write_to_stream(f) } | ||
cdirReadback = ::Zip::CentralDirectory.new | ||
File.open("test/data/generated/cdirtest.bin", "rb") { |f| cdirReadback.read_from_stream(f) } | ||
|
||
assert_equal(cdir.entries.sort, cdirReadback.entries.sort) | ||
end | ||
|
||
def test_write64_to_stream | ||
entries = [::Zip::Entry.new("file.zip", "file1-little", "comment1", "", 200, 101, ::Zip::Entry::STORED, 200), | ||
::Zip::Entry.new("file.zip", "file2-big", "comment2", "", 18000000000, 102, ::Zip::Entry::DEFLATED, 20000000000), | ||
::Zip::Entry.new("file.zip", "file3-alsobig", "comment3", "", 15000000000, 103, ::Zip::Entry::DEFLATED, 21000000000), | ||
::Zip::Entry.new("file.zip", "file4-little", "comment4", "", 100, 104, ::Zip::Entry::DEFLATED, 121)] | ||
[0, 250, 18000000300, 33000000350].each_with_index do |offset, index| | ||
entries[index].local_header_offset = offset | ||
end | ||
cdir = ::Zip::CentralDirectory.new(entries, "zip comment") | ||
File.open("test/data/generated/cdir64test.bin", "wb") { |f| cdir.write_to_stream(f) } | ||
cdirReadback = ::Zip::CentralDirectory.new | ||
File.open("test/data/generated/cdir64test.bin", "rb") { |f| cdirReadback.read_from_stream(f) } | ||
|
||
assert_equal(cdir.entries.sort, cdirReadback.entries.sort) | ||
assert_equal(::Zip::VERSION_NEEDED_TO_EXTRACT_ZIP64, cdirReadback.instance_variable_get(:@version_needed_for_extract)) | ||
end | ||
|
||
def test_equality | ||
cdir1 = ::Zip::CentralDirectory.new([::Zip::Entry.new("file.zip", "flimse", nil, | ||
"somethingExtra"), | ||
::Zip::Entry.new("file.zip", "secondEntryName"), | ||
::Zip::Entry.new("file.zip", "lastEntry.txt")], | ||
"my zip comment") | ||
cdir2 = ::Zip::CentralDirectory.new([::Zip::Entry.new("file.zip", "flimse", nil, | ||
"somethingExtra"), | ||
::Zip::Entry.new("file.zip", "secondEntryName"), | ||
::Zip::Entry.new("file.zip", "lastEntry.txt")], | ||
"my zip comment") | ||
cdir3 = ::Zip::CentralDirectory.new([::Zip::Entry.new("file.zip", "flimse", nil, | ||
"somethingExtra"), | ||
::Zip::Entry.new("file.zip", "secondEntryName"), | ||
::Zip::Entry.new("file.zip", "lastEntry.txt")], | ||
"comment?") | ||
cdir4 = ::Zip::CentralDirectory.new([::Zip::Entry.new("file.zip", "flimse", nil, | ||
"somethingExtra"), | ||
::Zip::Entry.new("file.zip", "lastEntry.txt")], | ||
"comment?") | ||
assert_equal(cdir1, cdir1) | ||
assert_equal(cdir1, cdir2) | ||
|
||
assert(cdir1 != cdir3) | ||
assert(cdir2 != cdir3) | ||
assert(cdir2 != cdir3) | ||
assert(cdir3 != cdir4) | ||
|
||
assert(cdir3 != "hello") | ||
end | ||
end |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
require 'test_helper' | ||
|
||
class DeflaterTest < MiniTest::Unit::TestCase | ||
include CrcTest | ||
|
||
def test_outputOperator | ||
txt = load_file("test/data/file2.txt") | ||
deflate(txt, "deflatertest.bin") | ||
inflatedTxt = inflate("deflatertest.bin") | ||
assert_equal(txt, inflatedTxt) | ||
end | ||
|
||
def test_default_compression | ||
txt = load_file("test/data/file2.txt") | ||
|
||
Zip.default_compression = ::Zlib::BEST_COMPRESSION | ||
deflate(txt, "compressiontest_best_compression.bin") | ||
Zip.default_compression = ::Zlib::DEFAULT_COMPRESSION | ||
deflate(txt, "compressiontest_default_compression.bin") | ||
Zip.default_compression = ::Zlib::NO_COMPRESSION | ||
deflate(txt, "compressiontest_no_compression.bin") | ||
|
||
best = File.size("compressiontest_best_compression.bin") | ||
default = File.size("compressiontest_default_compression.bin") | ||
no = File.size("compressiontest_no_compression.bin") | ||
|
||
assert(best < default) | ||
assert(best < no) | ||
assert(default < no) | ||
end | ||
|
||
|
||
private | ||
def load_file(fileName) | ||
txt = nil | ||
File.open(fileName, "rb") { |f| txt = f.read } | ||
end | ||
|
||
def deflate(data, fileName) | ||
File.open(fileName, "wb") { | ||
|file| | ||
deflater = ::Zip::Deflater.new(file) | ||
deflater << data | ||
deflater.finish | ||
assert_equal(deflater.size, data.size) | ||
file << "trailing data for zlib with -MAX_WBITS" | ||
} | ||
end | ||
|
||
def inflate(fileName) | ||
txt = nil | ||
File.open(fileName, "rb") { | ||
|file| | ||
inflater = ::Zip::Inflater.new(file) | ||
txt = inflater.sysread | ||
} | ||
end | ||
|
||
def test_crc | ||
run_crc_test(::Zip::Deflater) | ||
end | ||
end |
Oops, something went wrong.