tenfourfox/toolkit/modules/tests/xpcshell/test_ZipUtils.js
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

80 lines
2.0 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const ARCHIVE = "zips/zen.zip";
const SUBDIR = "zen";
const SYMLINK = "beyond_link";
const ENTRIES = ["beyond.txt", SYMLINK, "waterwood.txt"];
Components.utils.import("resource://gre/modules/ZipUtils.jsm");
Components.utils.import("resource://gre/modules/FileUtils.jsm");
Components.utils.import("resource://gre/modules/Services.jsm");
const archive = do_get_file(ARCHIVE, false);
const dir = do_get_profile().clone();
dir.append("test_ZipUtils");
function run_test() {
run_next_test();
}
function ensureExtracted(target) {
target.append(SUBDIR);
do_check_true(target.exists());
for (let i = 0; i < ENTRIES.length; i++) {
let entry = target.clone();
entry.append(ENTRIES[i]);
do_print("ENTRY " + entry.path);
do_check_true(entry.exists());
}
}
function ensureHasSymlink(target) {
// Just bail out if running on Windows, since symlinks do not exists there.
if (Services.appinfo.OS === "WINNT") {
return;
}
let entry = target.clone();
entry.append(SYMLINK);
do_print("ENTRY " + entry.path);
do_check_true(entry.exists());
do_check_true(entry.isSymlink());
}
add_task(function test_extractFiles() {
let target = dir.clone();
target.append("test_extractFiles");
try {
ZipUtils.extractFiles(archive, target);
} catch(e) {
do_throw("Failed to extract synchronously!");
}
ensureExtracted(target);
ensureHasSymlink(target);
});
add_task(function* test_extractFilesAsync() {
let target = dir.clone();
target.append("test_extractFilesAsync");
target.create(Components.interfaces.nsIFile.DIRECTORY_TYPE,
FileUtils.PERMS_DIRECTORY);
yield ZipUtils.extractFilesAsync(archive, target).then(
function success() {
do_print("SUCCESS");
ensureExtracted(target);
},
function failure() {
do_print("FAILURE");
do_throw("Failed to extract asynchronously!");
}
);
});