/toolkit/mozapps/update/test/unit/test_0171_fileLocked_xp_win_partial.js
http://github.com/zpao/v8monkey · JavaScript · 237 lines · 210 code · 14 blank · 13 comment · 0 complexity · c1ee771b9ec56559acb96863a72f6f34 MD5 · raw file
- /* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
- /* File locked partial MAR file patch apply failure test */
- const TEST_ID = "0171";
- // The files are listed in the same order as they are applied from the mar's
- // update.manifest. Complete updates have remove file and rmdir directory
- // operations located in the precomplete file performed first.
- const TEST_FILES = [
- {
- description : "Should never change",
- fileName : "channel-prefs.js",
- relPathDir : "a/b/defaults/pref/",
- originalContents : "ShouldNotBeReplaced\n",
- compareContents : "ShouldNotBeReplaced\n",
- originalFile : null,
- compareFile : null
- }, {
- description : "Not added for failed update (add)",
- fileName : "precomplete",
- relPathDir : "",
- originalContents : null,
- compareContents : null,
- originalFile : "data/complete_precomplete",
- compareFile : "data/complete_precomplete"
- }, {
- description : "Not added for failed update (add)",
- fileName : "searchpluginstext0",
- relPathDir : "a/b/searchplugins/",
- originalContents : "ShouldNotBeReplaced\n",
- compareContents : "ShouldNotBeReplaced\n",
- originalFile : null,
- compareFile : null
- }, {
- description : "Not patched for failed update (patch-if)",
- fileName : "searchpluginspng1.png",
- relPathDir : "a/b/searchplugins/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/complete.png",
- compareFile : "data/complete.png"
- }, {
- description : "Not patched for failed update (patch-if)",
- fileName : "searchpluginspng0.png",
- relPathDir : "a/b/searchplugins/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/complete.png",
- compareFile : "data/complete.png"
- }, {
- description : "Not added for failed update (add-if)",
- fileName : "extensions1text0",
- relPathDir : "a/b/extensions/extensions1/",
- originalContents : null,
- compareContents : null,
- originalFile : null,
- compareFile : null
- }, {
- description : "Not patched for failed update (patch-if)",
- fileName : "extensions1png1.png",
- relPathDir : "a/b/extensions/extensions1/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/complete.png",
- compareFile : "data/complete.png"
- }, {
- description : "Not patched for failed update (patch-if)",
- fileName : "extensions1png0.png",
- relPathDir : "a/b/extensions/extensions1/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/complete.png",
- compareFile : "data/complete.png"
- }, {
- description : "Not added for failed update (add-if)",
- fileName : "extensions0text0",
- relPathDir : "a/b/extensions/extensions0/",
- originalContents : "ShouldNotBeReplaced\n",
- compareContents : "ShouldNotBeReplaced\n",
- originalFile : null,
- compareFile : null
- }, {
- description : "Not patched for failed update (patch-if)",
- fileName : "extensions0png1.png",
- relPathDir : "a/b/extensions/extensions0/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/complete.png",
- compareFile : "data/complete.png"
- }, {
- description : "Not patched for failed update (patch-if)",
- fileName : "extensions0png0.png",
- relPathDir : "a/b/extensions/extensions0/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/complete.png",
- compareFile : "data/complete.png"
- }, {
- description : "Not patched for failed update (patch)",
- fileName : "exe0.exe",
- relPathDir : "a/b/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/complete.png",
- compareFile : "data/complete.png"
- }, {
- description : "Not patched for failed update (patch) and causes " +
- "LoadSourceFile failed",
- fileName : "0exe0.exe",
- relPathDir : "a/b/0/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/partial.png",
- compareFile : "data/partial.png"
- }, {
- description : "Not added for failed update (add)",
- fileName : "00text0",
- relPathDir : "a/b/0/00/",
- originalContents : "ShouldNotBeReplaced\n",
- compareContents : "ShouldNotBeReplaced\n",
- originalFile : null,
- compareFile : null
- }, {
- description : "Not patched for failed update (patch)",
- fileName : "00png0.png",
- relPathDir : "a/b/0/00/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/complete.png",
- compareFile : "data/complete.png"
- }, {
- description : "Not added for failed update (add)",
- fileName : "20text0",
- relPathDir : "a/b/2/20/",
- originalContents : null,
- compareContents : null,
- originalFile : null,
- compareFile : null
- }, {
- description : "Not added for failed update (add)",
- fileName : "20png0.png",
- relPathDir : "a/b/2/20/",
- originalContents : null,
- compareContents : null,
- originalFile : null,
- compareFile : null
- }, {
- description : "Not added for failed update (add)",
- fileName : "00text2",
- relPathDir : "a/b/0/00/",
- originalContents : null,
- compareContents : null,
- originalFile : null,
- compareFile : null
- }, {
- description : "Not removed for failed update (remove)",
- fileName : "10text0",
- relPathDir : "a/b/1/10/",
- originalContents : "ShouldNotBeDeleted\n",
- compareContents : "ShouldNotBeDeleted\n",
- originalFile : null,
- compareFile : null
- }, {
- description : "Not removed for failed update (remove)",
- fileName : "00text1",
- relPathDir : "a/b/0/00/",
- originalContents : "ShouldNotBeDeleted\n",
- compareContents : "ShouldNotBeDeleted\n",
- originalFile : null,
- compareFile : null
- }];
- ADDITIONAL_TEST_DIRS = [
- {
- description : "Not removed for failed update (rmdir)",
- relPathDir : "a/b/1/10/",
- dirRemoved : false
- }, {
- description : "Not removed for failed update (rmdir)",
- relPathDir : "a/b/1/",
- dirRemoved : false
- }];
- function run_test() {
- do_test_pending();
- do_register_cleanup(cleanupUpdaterTest);
- setupUpdaterTest(MAR_PARTIAL_FILE);
- // Exclusively lock an existing file so it is in use during the update
- let helperBin = do_get_file(HELPER_BIN_FILE);
- let helperDestDir = getApplyDirFile("a/b/");
- helperBin.copyTo(helperDestDir, HELPER_BIN_FILE);
- helperBin = getApplyDirFile("a/b/" + HELPER_BIN_FILE);
- // Strip off the first two directories so the path has to be from the helper's
- // working directory.
- let lockFileRelPath = TEST_FILES[3].relPathDir.split("/");
- lockFileRelPath = lockFileRelPath.slice(2);
- lockFileRelPath = lockFileRelPath.join("/") + "/" + TEST_FILES[3].fileName;
- let args = [getApplyDirPath() + "a/b/", "input", "output", "-s", "20", lockFileRelPath];
- let lockFileProcess = AUS_Cc["@mozilla.org/process/util;1"].
- createInstance(AUS_Ci.nsIProcess);
- lockFileProcess.init(helperBin);
- lockFileProcess.run(false, args, args.length);
- do_timeout(TEST_HELPER_TIMEOUT, waitForHelperSleep);
- }
- function doUpdate() {
- // apply the complete mar
- let exitValue = runUpdate();
- logTestInfo("testing updater binary process exitValue for success when " +
- "applying a partial mar");
- do_check_eq(exitValue, 0);
- setupHelperFinish();
- }
- function checkUpdate() {
- logTestInfo("testing update.status should be " + STATE_FAILED);
- let updatesDir = do_get_file(TEST_ID + UPDATES_DIR_SUFFIX);
- // The update status format for a failure is failed: # where # is the error
- // code for the failure.
- do_check_eq(readStatusFile(updatesDir).split(": ")[0], STATE_FAILED);
- checkFilesAfterUpdateFailure();
- checkUpdateLogContains(ERR_UNABLE_OPEN_DEST);
- logTestInfo("testing tobedeleted directory doesn't exist");
- let toBeDeletedDir = getApplyDirFile("tobedeleted", true);
- do_check_false(toBeDeletedDir.exists());
- checkCallbackAppLog();
- }