/toolkit/mozapps/update/test/unit/test_0110_general.js
http://github.com/zpao/v8monkey · JavaScript · 319 lines · 254 code · 14 blank · 51 comment · 3 complexity · 04c3d7b369db988f129561d640c833ab MD5 · raw file
- /* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * the Mozilla Foundation.
- * Portions created by the Initial Developer are Copyright (C) 2008
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Robert Strong <robert.bugzilla@gmail.com> (Original Author)
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK *****
- */
- /* General Complete MAR File Patch Apply Test */
- const TEST_ID = "0110";
- // 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);
- let updatesDir = do_get_file(TEST_ID + UPDATES_DIR_SUFFIX);
- 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);
- 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 timeDiff = Math.abs(applyToDir.lastModifiedTime - now);
- do_check_true(timeDiff < MAX_TIME_DIFFERENCE);
- }
- checkFilesAfterUpdateSuccess();
- // Sorting on Linux is different so skip this check for now.
- if (!IS_UNIX) {
- checkUpdateLogContents(LOG_COMPLETE_SUCCESS);
- }
- logTestInfo("testing tobedeleted directory doesn't exist");
- let toBeDeletedDir = getApplyDirFile("tobedeleted", true);
- do_check_false(toBeDeletedDir.exists());
- checkCallbackAppLog();
- }