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_aus_update/xpcshell.toml
/* 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
*/
async function run_test() {
setupTestCommon();
// Verify write access to the custom app dir
debugDump("testing write access to the application directory");
let testFile = getCurrentProcessDir();
testFile.append("update_write_access_test");
testFile.create(Ci.nsIFile.NORMAL_FILE_TYPE, PERMS_FILE);
Assert.ok(testFile.exists(), MSG_SHOULD_EXIST);
testFile.remove(false);
Assert.ok(!testFile.exists(), MSG_SHOULD_NOT_EXIST);
let testUpdateMutexes = [
new TestUpdateMutexInProcess(),
new TestUpdateMutexCrossProcess(),
];
// Acquire the update mutex(es) to prevent the current instance from being
// able to check for or apply updates -- and check that it can't.
for (let testUpdateMutex of testUpdateMutexes) {
debugDump(
"attempting to acquire the " + testUpdateMutex.kind + " update mutex"
);
Assert.ok(
await testUpdateMutex.expectAcquire(),
"should be able to acquire the " + testUpdateMutex.kind + " update mutex"
);
try {
// Check that available updates cannot be checked for when the update
// mutex for this installation path is acquired.
Assert.ok(
!gAUS.canCheckForUpdates,
"should not be able to check for updates when the " +
testUpdateMutex.kind +
" update mutex is acquired"
);
// Check if updates cannot be applied when the update mutex for this
// installation path is acquired.
Assert.ok(
!gAUS.canApplyUpdates,
"should not be able to apply updates when the " +
testUpdateMutex.kind +
" update mutex is acquired"
);
} finally {
debugDump("releasing the " + testUpdateMutex.kind + " update mutex");
await testUpdateMutex.release();
}
}
// Check that available updates can be checked for
Assert.ok(gAUS.canCheckForUpdates, "should be able to check for updates");
// Check that updates can be applied
Assert.ok(gAUS.canApplyUpdates, "should be able to apply updates");
// Attempt to acquire the update mutex(es) now that the current instance has
// acquired it.
for (let testUpdateMutex of testUpdateMutexes) {
debugDump(
"attempting to acquire the " + testUpdateMutex.kind + " update mutex"
);
Assert.ok(
await testUpdateMutex.expectFailToAcquire(),
"should not be able to acquire the " +
testUpdateMutex.kind +
" update mutex when the current instance has already acquired it"
);
}
await doTestFinish();
}