Tests for Bug 470979 and Bug 512994 and Buf. r=dtownsend

This commit is contained in:
Robert Strong 2009-08-27 22:26:31 -07:00
parent 19722bb3b8
commit 23f56141a5
3 changed files with 205 additions and 4 deletions

View File

@ -45,7 +45,7 @@ const AUS_Cr = Components.results;
const NS_APP_PROFILE_DIR_STARTUP = "ProfDS";
const NS_APP_USER_PROFILE_50_DIR = "ProfD";
const NS_GRE_DIR = "GreD";
const NS_XPCOM_CURRENT_PROCESS_DIR = "XCurProcD"
const NS_XPCOM_CURRENT_PROCESS_DIR = "XCurProcD";
const XRE_UPDATE_ROOT_DIR = "UpdRootD";
const PREF_APP_UPDATE_URL_OVERRIDE = "app.update.url.override";
@ -66,6 +66,9 @@ const STATE_FAILED = "failed";
const FILE_UPDATES_DB = "updates.xml";
const FILE_UPDATE_ACTIVE = "active-update.xml";
const FILE_UPDATE_LOG = "update.log"
const FILE_LAST_LOG = "last-update.log";
const FILE_BACKUP_LOG = "backup-update.log";
const MODE_RDONLY = 0x01;
const MODE_WRONLY = 0x02;
@ -416,14 +419,23 @@ function writeUpdatesToXMLFile(aContent, aIsActiveUpdate) {
* The status value to write.
*/
function writeStatusFile(aStatus) {
var file = getCurrentProcessDir();
file.append("updates");
var file = getUpdatesDir();
file.append("0");
file.append("update.status");
aStatus += "\n";
writeFile(file, aStatus);
}
/**
* Gets the updates directory.
* @returns The updates directory.
*/
function getUpdatesDir() {
var dir = getCurrentProcessDir();
dir.append("updates");
return dir;
}
/**
* Writes text to a file. This will replace existing text if the file exists
* and create the file if it doesn't exist.
@ -704,7 +716,19 @@ function removeUpdateDirsAndFiles() {
file = appDir.clone();
file.append("updates");
file.append("last-update.log");
file.append(FILE_LAST_LOG);
try {
if (file.exists())
file.remove(false);
}
catch (e) {
dump("Unable to remove file\npath: " + file.path +
"\nException: " + e + "\n");
}
file = appDir.clone();
file.append("updates");
file.append(FILE_BACKUP_LOG);
try {
if (file.exists())
file.remove(false);

View File

@ -0,0 +1,83 @@
/* ***** 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 the Application Update Service.
*
* The Initial Developer of the Original Code is
* Robert Strong <robert.bugzilla@gmail.com>.
*
* Portions created by the Initial Developer are Copyright (C) 2009
* the Mozilla Foundation <http://www.mozilla.org/>. All Rights Reserved.
*
* Contributor(s):
*
* 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 Update Directory Cleanup Tests */
function run_test() {
removeUpdateDirsAndFiles();
var defaults = getPrefBranch().QueryInterface(AUS_Ci.nsIPrefService).
getDefaultBranch(null);
defaults.setCharPref("app.update.channel", "bogus_channel");
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
var patches = getLocalPatchString(null, null, null, null, null, null,
STATE_PENDING);
var updates = getLocalUpdateString(patches);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeStatusFile(STATE_SUCCEEDED);
var dir = getUpdatesDir();
var log = dir.clone();
log.append("0");
log.append(FILE_UPDATE_LOG);
writeFile(log, "Last Update Log");
startAUS();
dump("Testing: " + FILE_UPDATE_LOG + " doesn't exist\n");
do_check_false(log.exists());
dump("Testing: " + FILE_LAST_LOG + " exists\n");
log = dir.clone();
log.append(FILE_LAST_LOG);
do_check_true(log.exists());
dump("Testing: " + FILE_LAST_LOG + " contents\n");
do_check_eq(readFile(log), "Last Update Log");
dump("Testing: " + FILE_BACKUP_LOG + " doesn't exist\n");
log = dir.clone();
log.append(FILE_BACKUP_LOG);
do_check_false(log.exists());
dump("Testing: " + dir.path + " exists (bug 512994)\n");
dir.append("0");
do_check_true(dir.exists());
cleanUp();
}

View File

@ -0,0 +1,94 @@
/* ***** 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 the Application Update Service.
*
* The Initial Developer of the Original Code is
* Robert Strong <robert.bugzilla@gmail.com>.
*
* Portions created by the Initial Developer are Copyright (C) 2009
* the Mozilla Foundation <http://www.mozilla.org/>. All Rights Reserved.
*
* Contributor(s):
*
* 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 Update Directory Cleanup Tests */
function run_test() {
removeUpdateDirsAndFiles();
var defaults = getPrefBranch().QueryInterface(AUS_Ci.nsIPrefService).
getDefaultBranch(null);
defaults.setCharPref("app.update.channel", "bogus_channel");
writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false);
var patches = getLocalPatchString(null, null, null, null, null, null,
STATE_PENDING);
var updates = getLocalUpdateString(patches);
writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true);
writeStatusFile(STATE_SUCCEEDED);
var dir = getUpdatesDir();
var log = dir.clone();
log.append(FILE_LAST_LOG);
writeFile(log, "Backup Update Log");
log = dir.clone();
log.append(FILE_BACKUP_LOG);
writeFile(log, "To Be Deleted Backup Update Log");
log = dir.clone();
log.append("0");
log.append(FILE_UPDATE_LOG);
writeFile(log, "Last Update Log");
startAUS();
dump("Testing: " + FILE_UPDATE_LOG + " doesn't exist\n");
do_check_false(log.exists());
dump("Testing: " + FILE_LAST_LOG + " exists\n");
log = dir.clone();
log.append(FILE_LAST_LOG);
do_check_true(log.exists());
dump("Testing: " + FILE_LAST_LOG + " contents\n");
do_check_eq(readFile(log), "Last Update Log");
dump("Testing: " + FILE_BACKUP_LOG + " exists\n");
log = dir.clone();
log.append(FILE_BACKUP_LOG);
do_check_true(log.exists());
dump("Testing: " + FILE_BACKUP_LOG + " contents (bug 470979)\n");
do_check_eq(readFile(log), "Backup Update Log");
dump("Testing: " + dir.path + " exists (bug 512994)\n");
dir.append("0");
do_check_true(dir.exists());
cleanUp();
}