/toolkit/mozapps/update/test/unit/test_0160_appInUse_xp_unix_complete.js
http://github.com/zpao/v8monkey · JavaScript · 295 lines · 261 code · 17 blank · 17 comment · 2 complexity · eb7b32fced78cffcf480ddcf96b66eb1 MD5 · raw file
- /* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
- /* Application in use complete MAR file patch apply success test */
- const TEST_ID = "0160";
- // All we care about is that the last modified time has changed so that Mac OS
- // X Launch Services invalidates its cache so the test allows up to one minute
- // difference in the last modified time.
- const MAX_TIME_DIFFERENCE = 60000;
- // 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,
- originalPerms : 0767,
- comparePerms : 0767
- }, {
- description : "Added by update.manifest (add)",
- fileName : "precomplete",
- relPathDir : "",
- originalContents : null,
- compareContents : null,
- originalFile : "data/partial_precomplete",
- compareFile : "data/complete_precomplete",
- originalPerms : 0666,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest (add)",
- fileName : "searchpluginstext0",
- relPathDir : "a/b/searchplugins/",
- originalContents : "ToBeReplacedWithFromComplete\n",
- compareContents : "FromComplete\n",
- originalFile : null,
- compareFile : null,
- originalPerms : 0775,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest (add)",
- fileName : "searchpluginspng1.png",
- relPathDir : "a/b/searchplugins/",
- originalContents : null,
- compareContents : null,
- originalFile : null,
- compareFile : "data/complete.png",
- originalPerms : null,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest (add)",
- fileName : "searchpluginspng0.png",
- relPathDir : "a/b/searchplugins/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/partial.png",
- compareFile : "data/complete.png",
- originalPerms : 0666,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest (add)",
- fileName : "removed-files",
- relPathDir : "a/b/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/partial_removed-files",
- compareFile : "data/complete_removed-files",
- originalPerms : 0666,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest if the parent directory " +
- "exists (add-if)",
- fileName : "extensions1text0",
- relPathDir : "a/b/extensions/extensions1/",
- originalContents : null,
- compareContents : "FromComplete\n",
- originalFile : null,
- compareFile : null,
- originalPerms : null,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest if the parent directory " +
- "exists (add-if)",
- fileName : "extensions1png1.png",
- relPathDir : "a/b/extensions/extensions1/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/partial.png",
- compareFile : "data/complete.png",
- originalPerms : 0666,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest if the parent directory " +
- "exists (add-if)",
- fileName : "extensions1png0.png",
- relPathDir : "a/b/extensions/extensions1/",
- originalContents : null,
- compareContents : null,
- originalFile : null,
- compareFile : "data/complete.png",
- originalPerms : null,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest if the parent directory " +
- "exists (add-if)",
- fileName : "extensions0text0",
- relPathDir : "a/b/extensions/extensions0/",
- originalContents : "ToBeReplacedWithFromComplete\n",
- compareContents : "FromComplete\n",
- originalFile : null,
- compareFile : null,
- originalPerms : null,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest if the parent directory " +
- "exists (add-if)",
- fileName : "extensions0png1.png",
- relPathDir : "a/b/extensions/extensions0/",
- originalContents : null,
- compareContents : null,
- originalFile : null,
- compareFile : "data/complete.png",
- originalPerms : null,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest if the parent directory " +
- "exists (add-if)",
- fileName : "extensions0png0.png",
- relPathDir : "a/b/extensions/extensions0/",
- originalContents : null,
- compareContents : null,
- originalFile : null,
- compareFile : "data/complete.png",
- originalPerms : null,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest (add)",
- fileName : "exe0.exe",
- relPathDir : "a/b/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/partial.png",
- compareFile : "data/complete.png",
- originalPerms : 0777,
- comparePerms : 0755
- }, {
- description : "Added by update.manifest (add)",
- fileName : "10text0",
- relPathDir : "a/b/1/10/",
- originalContents : "ToBeReplacedWithFromComplete\n",
- compareContents : "FromComplete\n",
- originalFile : null,
- compareFile : null,
- originalPerms : 0767,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest (add)",
- fileName : "0exe0.exe",
- relPathDir : "a/b/0/",
- originalContents : null,
- compareContents : null,
- originalFile : "data/partial.png",
- compareFile : "data/complete.png",
- originalPerms : 0777,
- comparePerms : 0755
- }, {
- description : "Added by update.manifest (add)",
- fileName : "00text1",
- relPathDir : "a/b/0/00/",
- originalContents : "ToBeReplacedWithFromComplete\n",
- compareContents : "FromComplete\n",
- originalFile : null,
- compareFile : null,
- originalPerms : 0677,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest (add)",
- fileName : "00text0",
- relPathDir : "a/b/0/00/",
- originalContents : "ToBeReplacedWithFromComplete\n",
- compareContents : "FromComplete\n",
- originalFile : null,
- compareFile : null,
- originalPerms : 0775,
- comparePerms : 0644
- }, {
- description : "Added by update.manifest (add)",
- fileName : "00png0.png",
- relPathDir : "a/b/0/00/",
- originalContents : null,
- compareContents : null,
- originalFile : null,
- compareFile : "data/complete.png",
- originalPerms : 0776,
- comparePerms : 0644
- }, {
- description : "Removed by precomplete (remove)",
- fileName : "20text0",
- relPathDir : "a/b/2/20/",
- originalContents : "ToBeDeleted\n",
- compareContents : null,
- originalFile : null,
- compareFile : null,
- originalPerms : null,
- comparePerms : null
- }, {
- description : "Removed by precomplete (remove)",
- fileName : "20png0.png",
- relPathDir : "a/b/2/20/",
- originalContents : "ToBeDeleted\n",
- compareContents : null,
- originalFile : null,
- compareFile : null,
- originalPerms : null,
- comparePerms : null
- }];
- ADDITIONAL_TEST_DIRS = [
- {
- description : "Removed by precomplete (rmdir)",
- relPathDir : "a/b/2/20/",
- dirRemoved : true
- }, {
- description : "Removed by precomplete (rmdir)",
- relPathDir : "a/b/2/",
- dirRemoved : true
- }];
- function run_test() {
- do_test_pending();
- do_register_cleanup(cleanupUpdaterTest);
- setupUpdaterTest(MAR_COMPLETE_FILE);
- // Launch the callback helper application so it is in use during the update
- let callbackApp = getApplyDirFile("a/b/" + gCallbackBinFile);
- callbackApp.permissions = PERMS_DIRECTORY;
- let args = [getApplyDirPath() + "a/b/", "input", "output", "-s", "20"];
- let callbackAppProcess = AUS_Cc["@mozilla.org/process/util;1"].
- createInstance(AUS_Ci.nsIProcess);
- callbackAppProcess.init(callbackApp);
- callbackAppProcess.run(false, args, args.length);
- do_timeout(TEST_HELPER_TIMEOUT, waitForHelperSleep);
- }
- function doUpdate() {
- let applyToDir = getApplyDirFile();
- // For Mac OS X set the last modified time for the root directory to a date in
- // the past to test that the last modified time is updated on a successful
- // update (bug 600098).
- if (IS_MACOSX) {
- let now = Date.now();
- let yesterday = now - (1000 * 60 * 60 * 24);
- applyToDir.lastModifiedTime = yesterday;
- }
- // apply the complete mar
- let exitValue = runUpdate();
- logTestInfo("testing updater binary process exitValue for success when " +
- "applying a complete mar");
- do_check_eq(exitValue, 0);
- setupHelperFinish();
- }
- function checkUpdate() {
- logTestInfo("testing update.status should be " + STATE_SUCCEEDED);
- let updatesDir = do_get_file(TEST_ID + UPDATES_DIR_SUFFIX);
- do_check_eq(readStatusFile(updatesDir), STATE_SUCCEEDED);
- // For Mac OS X check that the last modified time for a directory has been
- // updated after a successful update (bug 600098).
- if (IS_MACOSX) {
- logTestInfo("testing last modified time on the apply to directory has " +
- "changed after a successful update (bug 600098)");
- let now = Date.now();
- let applyToDir = getApplyDirFile();
- let timeDiff = Math.abs(applyToDir.lastModifiedTime - now);
- do_check_true(timeDiff < MAX_TIME_DIFFERENCE);
- }
- checkFilesAfterUpdateSuccess();
- checkCallbackAppLog();
- }