87 lines
2.6 KiB
Plaintext
87 lines
2.6 KiB
Plaintext
var fd = use("fd")
|
|
var miniz = use("miniz")
|
|
var utf8 = use("utf8")
|
|
|
|
return {
|
|
create_and_read_zip: function() {
|
|
var ZIP_PATH = "miniz_test.zip"
|
|
var SOURCE_PATH = "miniz_source.txt"
|
|
var ENTRY_PATH = "sample/hello.txt"
|
|
var PAYLOAD = "Miniz integration test payload."
|
|
|
|
function write_text_file(path, text) {
|
|
var handle = fd.open(path, "w")
|
|
fd.write(handle, text)
|
|
fd.close(handle)
|
|
}
|
|
|
|
try {
|
|
write_text_file(SOURCE_PATH, PAYLOAD)
|
|
var source_blob = fd.slurp(SOURCE_PATH)
|
|
var writer = miniz.write(ZIP_PATH)
|
|
writer.add_file(ENTRY_PATH, source_blob)
|
|
writer = null
|
|
|
|
var zip_blob = fd.slurp(ZIP_PATH)
|
|
var reader = miniz.read(zip_blob)
|
|
|
|
if (!reader.exists(ENTRY_PATH))
|
|
throw "entry missing in archive"
|
|
|
|
var extracted_blob = reader.slurp(ENTRY_PATH)
|
|
var extracted_text = utf8.decode(extracted_blob)
|
|
|
|
if (extracted_text != PAYLOAD)
|
|
throw "extracted text mismatch"
|
|
} finally {
|
|
try { fd.unlink(ZIP_PATH) } catch(e) {}
|
|
try { fd.unlink(SOURCE_PATH) } catch(e) {}
|
|
}
|
|
},
|
|
|
|
list_and_count: function() {
|
|
var ZIP_PATH = "miniz_list_test.zip"
|
|
var ENTRY1 = "file1.txt"
|
|
var ENTRY2 = "dir/file2.txt"
|
|
|
|
try {
|
|
var writer = miniz.write(ZIP_PATH)
|
|
writer.add_file(ENTRY1, utf8.encode("content1"))
|
|
writer.add_file(ENTRY2, utf8.encode("content2"))
|
|
writer = null
|
|
|
|
var zip_blob = fd.slurp(ZIP_PATH)
|
|
var reader = miniz.read(zip_blob)
|
|
|
|
var listed = reader.list()
|
|
if (listed.length != reader.count())
|
|
throw "list/count mismatch"
|
|
if (listed.length != 2)
|
|
throw "unexpected entry count"
|
|
} finally {
|
|
try { fd.unlink(ZIP_PATH) } catch(e) {}
|
|
}
|
|
},
|
|
|
|
exists_check: function() {
|
|
var ZIP_PATH = "miniz_exists_test.zip"
|
|
var ENTRY_PATH = "existing.txt"
|
|
|
|
try {
|
|
var writer = miniz.write(ZIP_PATH)
|
|
writer.add_file(ENTRY_PATH, utf8.encode("data"))
|
|
writer = null
|
|
|
|
var zip_blob = fd.slurp(ZIP_PATH)
|
|
var reader = miniz.read(zip_blob)
|
|
|
|
if (!reader.exists(ENTRY_PATH))
|
|
throw "existing entry not found"
|
|
if (reader.exists("nonexistent.txt"))
|
|
throw "nonexistent entry reported as existing"
|
|
} finally {
|
|
try { fd.unlink(ZIP_PATH) } catch(e) {}
|
|
}
|
|
}
|
|
}
|