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