Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'win' && (ccov || msix)
- Manifest: toolkit/mozapps/update/tests/unit_update_binary/xpcshell_base.toml
- Manifest: toolkit/mozapps/update/tests/unit_update_binary/xpcshell_service.toml
/* Any copyright is dedicated to the Public Domain.
*/
/* Fail to apply a complete MAR when the application is in use and the callback is a background task. */
async function run_test() {
if (!setupTestCommon()) {
return;
}
gTestFiles = gTestFilesCompleteSuccess;
gTestDirs = gTestDirsCompleteSuccess;
setTestFilesAndDirsForFailure();
// Add a dummy --backgroundtask arg; this will have no effect on the
// callback (TestAUSHelper) but will cause the updater to detect
// that this is a background task.
gCallbackArgs = gCallbackArgs.concat(["--backgroundtask", "not_found"]);
// Run the update with the helper file in use, expecting failure.
await setupUpdaterTest(FILE_COMPLETE_MAR, false);
await runHelperFileInUse(DIR_RESOURCES + gCallbackBinFile, false);
runUpdate(
STATE_FAILED_BACKGROUND_TASK_SHARING_VIOLATION,
false, // aSwitchApp
1, // aExpectedExitValue
true // aCheckSvcLog
);
await waitForHelperExit();
await testPostUpdateProcessing();
checkPostUpdateRunningFile(false);
checkFilesAfterUpdateFailure(getApplyDirFile);
checkUpdateLogContains(ERR_BGTASK_EXCLUSIVE);
// Check that the update was reset to "pending".
await waitForUpdateXMLFiles(
true, // aActiveUpdateExists
false // aUpdatesExists
);
await checkUpdateManager(
gIsServiceTest ? STATE_PENDING_SVC : STATE_PENDING, // aStatusFileState
true, // aHasActiveUpdate
gIsServiceTest ? STATE_PENDING_SVC : STATE_PENDING, // aUpdateStatusState
BACKGROUND_TASK_SHARING_VIOLATION,
0 // aUpdateCount
);
checkCallbackLog();
}