Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
* vim: sw=4 ts=4 sts=4 et
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
add_task(async function test_backgroundtask_shouldprocessupdates() {
// The task returns 81 if we should process updates, i.e.,
// !ShouldNotProcessUpdates(), <= 80 otherwise. xpcshell itself counts as an
// instance, so the background task will see it and think another instance is
// running. N.b.: this isn't as robust as it could be: running Firefox
// instances and parallel tests interact here (mostly harmlessly).
//
// Since the behaviour under test (ShouldNotProcessUpdates()) happens at startup,
// we can't easily change the lock location of the background task.
// `shouldprocessupdates` is an updating task, but there is another instance
// running, so we should not process updates.
let exitCode = await do_backgroundtask("shouldprocessupdates", {
extraArgs: ["--test-process-updates"],
});
Assert.equal(80, exitCode);
// If we change our lock location, the background task won't see our instance
// running.
let file = do_get_profile();
file.append("customExePath");
let syncManager = Cc["@mozilla.org/updates/update-sync-manager;1"].getService(
Ci.nsIUpdateSyncManager
);
syncManager.resetLock(file);
// Since we've changed the xpcshell executable name, the background task won't
// see us and think another instance is running. This time, there is no
// reason to not process updates.
exitCode = await do_backgroundtask("shouldprocessupdates");
Assert.equal(81, exitCode);
// `shouldnotprocessupdates` is not a recognized updating task, so we should
// not process updates.
exitCode = await do_backgroundtask("shouldnotprocessupdates", {
extraArgs: ["--test-process-updates"],
});
Assert.equal(78, exitCode);
});