From 7bf4c74cace4c3e0f75020fae7a863de113ef450 Mon Sep 17 00:00:00 2001 From: Andrew Swan Date: Fri, 10 Feb 2017 14:57:58 -0800 Subject: [PATCH] Bug 1338336 Make sure to cleanup after test failures r=rhelmer The issue here was a previous test failing to clean up after itself. Add an extra cleanup check to the browser webextensions permissions tests. Given the small number of extensions used in these tests, the manual approach seemed better than some very general solution. MozReview-Commit-ID: 7AWx8nZK3L3 --HG-- extra : rebase_source : cce9a41bfed44017d887624b580d3ea1052077b7 --- .../general/browser_extension_permissions.js | 16 +++++++++------- .../browser_extension_update_background.js | 10 ++++++++++ .../browser_extension_update_interactive.js | 8 ++++++++ 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/browser/base/content/test/general/browser_extension_permissions.js b/browser/base/content/test/general/browser_extension_permissions.js index fe8e4d04058e..9991987e9983 100644 --- a/browser/base/content/test/general/browser_extension_permissions.js +++ b/browser/base/content/test/general/browser_extension_permissions.js @@ -13,6 +13,14 @@ const DEFAULT_EXTENSION_ICON = "chrome://browser/content/extension.svg"; Services.perms.add(makeURI("https://example.com/"), "install", Services.perms.ALLOW_ACTION); +registerCleanupFunction(async function() { + let addon = await AddonManager.getAddonByID(ID); + if (addon) { + ok(false, `Addon ${ID} was still installed at the end of the test`); + addon.uninstall(); + } +}); + function promisePopupNotificationShown(name) { return new Promise(resolve => { function popupshown() { @@ -30,12 +38,6 @@ function promisePopupNotificationShown(name) { }); } -function promiseGetAddonByID(id) { - return new Promise(resolve => { - AddonManager.getAddonByID(id, resolve); - }); -} - function checkNotification(panel, filename) { let icon = panel.getAttribute("icon"); @@ -171,7 +173,7 @@ add_task(function* () { } let result = yield installPromise; - let addon = yield promiseGetAddonByID(ID); + let addon = yield AddonManager.getAddonByID(ID); if (cancel) { ok(!result, "Installation was cancelled"); is(addon, null, "Extension is not installed"); diff --git a/browser/base/content/test/general/browser_extension_update_background.js b/browser/base/content/test/general/browser_extension_update_background.js index 8eb83f6dfa09..4b1bfb58ae75 100644 --- a/browser/base/content/test/general/browser_extension_update_background.js +++ b/browser/base/content/test/general/browser_extension_update_background.js @@ -4,6 +4,16 @@ const URL_BASE = "https://example.com/browser/browser/base/content/test/general" const ID = "update@tests.mozilla.org"; const ID_ICON = "update_icon@tests.mozilla.org"; +registerCleanupFunction(async function() { + for (let id of [ID, ID_ICON]) { + let addon = await AddonManager.getAddonByID(id); + if (addon) { + ok(false, `Addon ${id} was still installed at the end of the test`); + addon.uninstall(); + } + } +}); + function promiseInstallAddon(url) { return AddonManager.getInstallForURL(url, null, "application/x-xpinstall") .then(install => { diff --git a/browser/base/content/test/general/browser_extension_update_interactive.js b/browser/base/content/test/general/browser_extension_update_interactive.js index 39bbeea09878..435f7acd9a9f 100644 --- a/browser/base/content/test/general/browser_extension_update_interactive.js +++ b/browser/base/content/test/general/browser_extension_update_interactive.js @@ -3,6 +3,14 @@ const {AddonManagerPrivate} = Cu.import("resource://gre/modules/AddonManager.jsm const URL_BASE = "https://example.com/browser/browser/base/content/test/general"; const ID = "update@tests.mozilla.org"; +registerCleanupFunction(async function() { + let addon = await AddonManager.getAddonByID(ID); + if (addon) { + ok(false, `Addon ${ID} was still installed at the end of the test`); + addon.uninstall(); + } +}); + function promiseInstallAddon(url) { return AddonManager.getInstallForURL(url, null, "application/x-xpinstall") .then(install => {