mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1180901 - Test that an extension can be installed when a locked file exists in the extensions trash directory as long as the extension being installed does not touch the locked file. r=mossop
This commit is contained in:
parent
7a8e1ae48f
commit
e98c424437
@ -0,0 +1,60 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
|
||||
function run_test() {
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
|
||||
startupManager();
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
add_task(function* () {
|
||||
let profileDir = OS.Constants.Path.profileDir;
|
||||
let trashDir = OS.Path.join(profileDir, "extensions", "trash");
|
||||
let testFile = OS.Path.join(trashDir, "test.txt");
|
||||
|
||||
yield OS.File.makeDir(trashDir, {
|
||||
from: profileDir,
|
||||
ignoreExisting: true
|
||||
});
|
||||
|
||||
let trashDirExists = yield OS.File.exists(trashDir);
|
||||
ok(trashDirExists, "trash directory should have been created");
|
||||
|
||||
let file = yield OS.File.open(testFile, {create: true}, {winShare: 0});
|
||||
let fileExists = yield OS.File.exists(testFile);
|
||||
ok(fileExists, "test.txt should have been created in " + trashDir);
|
||||
|
||||
let promiseInstallStatus = new Promise((resolve, reject) => {
|
||||
let listener = {
|
||||
onInstallFailed: function() {
|
||||
AddonManager.removeInstallListener(listener);
|
||||
reject("extension installation should not have failed");
|
||||
},
|
||||
onInstallEnded: function() {
|
||||
AddonManager.removeInstallListener(listener);
|
||||
ok(true, "extension installation should not have failed");
|
||||
resolve();
|
||||
}
|
||||
};
|
||||
|
||||
AddonManager.addInstallListener(listener);
|
||||
});
|
||||
|
||||
yield promiseInstallAllFiles([do_get_addon("test_bootstrap1_1")]);
|
||||
|
||||
// The testFile should still exist at this point because we have not
|
||||
// yet closed the file handle and as a result, Windows cannot remove it.
|
||||
fileExists = yield OS.File.exists(testFile);
|
||||
ok(fileExists, "test.txt should still exist");
|
||||
|
||||
// Wait for the AddonManager to tell us if the installation of the extension
|
||||
// succeeded or not.
|
||||
yield promiseInstallStatus;
|
||||
|
||||
// Cleanup
|
||||
yield promiseShutdownManager();
|
||||
yield file.close();
|
||||
yield OS.File.remove(testFile);
|
||||
yield OS.File.removeDir(trashDir);
|
||||
});
|
@ -294,5 +294,7 @@ run-sequentially = Uses global XCurProcD dir.
|
||||
[test_sourceURI.js]
|
||||
[test_webextension.js]
|
||||
[test_bootstrap_globals.js]
|
||||
[test_bug1180901_2.js]
|
||||
skip-if = os != "win"
|
||||
[test_bug1180901.js]
|
||||
skip-if = os != "win"
|
||||
|
@ -30,4 +30,5 @@ skip-if = appname != "firefox"
|
||||
|
||||
|
||||
|
||||
|
||||
[include:xpcshell-shared.ini]
|
||||
|
Loading…
Reference in New Issue
Block a user