Bug 592888 - Special handling for multixpi install event checking, r=Mossop a=test-only

This commit is contained in:
Michael Wu 2010-09-07 18:07:49 -04:00
Родитель 20c3695f52
Коммит 71f7365d9b
2 изменённых файлов: 72 добавлений и 36 удалений

Просмотреть файл

@ -512,6 +512,19 @@ function getExpectedEvent(aId) {
return [event, true];
}
function getExpectedInstall(aAddon) {
if (gExpectedInstalls instanceof Array)
return gExpectedInstalls.shift();
if (!aAddon || !aAddon.id)
return gExpectedInstalls["NO_ID"].shift();
let id = aAddon.id;
if (!(id in gExpectedInstalls) || !(gExpectedInstalls[id] instanceof Array))
do_throw("Wasn't expecting events for " + id);
if (gExpectedInstalls[id].length == 0)
do_throw("Too many events for " + id);
return gExpectedInstalls[id].shift();
}
const AddonListener = {
onPropertyChanged: function(aAddon, aProperties) {
let [event, properties] = getExpectedEvent(aAddon.id);
@ -603,66 +616,66 @@ const InstallListener = {
install.state != AddonManager.STATE_AVAILABLE)
do_throw("Bad install state " + install.state);
do_check_eq(install.error, 0);
do_check_eq("onNewInstall", gExpectedInstalls.shift());
do_check_eq("onNewInstall", getExpectedInstall());
return check_test_completed(arguments);
},
onDownloadStarted: function(install) {
do_check_eq(install.state, AddonManager.STATE_DOWNLOADING);
do_check_eq(install.error, 0);
do_check_eq("onDownloadStarted", gExpectedInstalls.shift());
do_check_eq("onDownloadStarted", getExpectedInstall());
return check_test_completed(arguments);
},
onDownloadEnded: function(install) {
do_check_eq(install.state, AddonManager.STATE_DOWNLOADED);
do_check_eq(install.error, 0);
do_check_eq("onDownloadEnded", gExpectedInstalls.shift());
do_check_eq("onDownloadEnded", getExpectedInstall());
return check_test_completed(arguments);
},
onDownloadFailed: function(install) {
do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED);
do_check_eq("onDownloadFailed", gExpectedInstalls.shift());
do_check_eq("onDownloadFailed", getExpectedInstall());
return check_test_completed(arguments);
},
onDownloadCancelled: function(install) {
do_check_eq(install.state, AddonManager.STATE_CANCELLED);
do_check_eq(install.error, 0);
do_check_eq("onDownloadCancelled", gExpectedInstalls.shift());
do_check_eq("onDownloadCancelled", getExpectedInstall());
return check_test_completed(arguments);
},
onInstallStarted: function(install) {
do_check_eq(install.state, AddonManager.STATE_INSTALLING);
do_check_eq(install.error, 0);
do_check_eq("onInstallStarted", gExpectedInstalls.shift());
do_check_eq("onInstallStarted", getExpectedInstall(install.addon));
return check_test_completed(arguments);
},
onInstallEnded: function(install, newAddon) {
do_check_eq(install.state, AddonManager.STATE_INSTALLED);
do_check_eq(install.error, 0);
do_check_eq("onInstallEnded", gExpectedInstalls.shift());
do_check_eq("onInstallEnded", getExpectedInstall(install.addon));
return check_test_completed(arguments);
},
onInstallFailed: function(install) {
do_check_eq(install.state, AddonManager.STATE_INSTALL_FAILED);
do_check_eq("onInstallFailed", gExpectedInstalls.shift());
do_check_eq("onInstallFailed", getExpectedInstall(install.addon));
return check_test_completed(arguments);
},
onInstallCancelled: function(install) {
do_check_eq(install.state, AddonManager.STATE_CANCELLED);
do_check_eq(install.error, 0);
do_check_eq("onInstallCancelled", gExpectedInstalls.shift());
do_check_eq("onInstallCancelled", getExpectedInstall(install.addon));
return check_test_completed(arguments);
},
onExternalInstall: function(aAddon, existingAddon, aRequiresRestart) {
do_check_eq("onExternalInstall", gExpectedInstalls.shift());
do_check_eq("onExternalInstall", getExpectedInstall(aAddon));
do_check_false(aRequiresRestart);
return check_test_completed(arguments);
}
@ -687,8 +700,13 @@ function check_test_completed(aArgs) {
if (!gNext)
return;
if (gExpectedInstalls.length > 0)
if (gExpectedInstalls instanceof Array &&
gExpectedInstalls.length > 0)
return;
else for each (let installList in gExpectedInstalls) {
if (installList.length > 0)
return;
}
for (let id in gExpectedEvents) {
if (gExpectedEvents[id].length > 0)

Просмотреть файл

@ -664,16 +664,24 @@ function run_test_11() {
"addon7@tests.mozilla.org": [
"onInstalling"
]
}, [
"onInstallStarted",
"onInstallEnded",
"onInstallStarted",
"onInstallEnded",
"onInstallStarted",
"onInstallEnded",
}, {
"addon4@tests.mozilla.org": [
"onInstallStarted",
"onInstallEnded"
], check_test_11);
],
"addon5@tests.mozilla.org": [
"onInstallStarted",
"onInstallEnded"
],
"addon6@tests.mozilla.org": [
"onInstallStarted",
"onInstallEnded"
],
"addon7@tests.mozilla.org": [
"onInstallStarted",
"onInstallEnded"
]
}, check_test_11);
installs[0].install();
installs[1].install();
@ -741,21 +749,31 @@ function run_test_12() {
"addon7@tests.mozilla.org": [
"onInstalling"
]
}, [
}, {
"NO_ID": [
"onDownloadStarted",
"onNewInstall",
"onNewInstall",
"onNewInstall",
"onDownloadEnded",
"onInstallStarted",
"onInstallEnded",
"onInstallStarted",
"onInstallEnded",
"onInstallStarted",
"onInstallEnded",
"onDownloadEnded"
],
"addon4@tests.mozilla.org": [
"onInstallStarted",
"onInstallEnded"
], check_test_12);
],
"addon5@tests.mozilla.org": [
"onInstallStarted",
"onInstallEnded"
],
"addon6@tests.mozilla.org": [
"onInstallStarted",
"onInstallEnded"
],
"addon7@tests.mozilla.org": [
"onInstallStarted",
"onInstallEnded"
]
}, check_test_12);
install.install();
}, "application/x-xpinstall", null, "Multi Test 4");
}