62 lines
1.9 KiB
JavaScript
62 lines
1.9 KiB
JavaScript
/* 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
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
let SocialService = Components.utils.import("resource://gre/modules/SocialService.jsm", {}).SocialService;
|
|
|
|
function ensureSocialEnabled() {
|
|
let initiallyEnabled = SocialService.enabled;
|
|
SocialService.enabled = true;
|
|
registerCleanupFunction(function () {
|
|
SocialService.enabled = initiallyEnabled;
|
|
});
|
|
}
|
|
|
|
// A helper to run a suite of tests.
|
|
// The "test object" should be an object with function names as keys and a
|
|
// function as the value. The functions will be called with a "cbnext" param
|
|
// which should be called when the test is complete.
|
|
// eg:
|
|
// test = {
|
|
// foo: function(cbnext) {... cbnext();}
|
|
// }
|
|
function runTests(tests, cbPreTest, cbPostTest, cbFinish) {
|
|
let testIter = Iterator(tests);
|
|
|
|
if (cbPreTest === undefined) {
|
|
cbPreTest = function(cb) {cb()};
|
|
}
|
|
if (cbPostTest === undefined) {
|
|
cbPostTest = function(cb) {cb()};
|
|
}
|
|
|
|
function runNextTest() {
|
|
let name, func;
|
|
try {
|
|
[name, func] = testIter.next();
|
|
} catch (err if err instanceof StopIteration) {
|
|
// out of items:
|
|
(cbFinish || finish)();
|
|
return;
|
|
}
|
|
// We run on a timeout as the frameworker also makes use of timeouts, so
|
|
// this helps keep the debug messages sane.
|
|
executeSoon(function() {
|
|
function cleanupAndRunNextTest() {
|
|
info("sub-test " + name + " complete");
|
|
cbPostTest(runNextTest);
|
|
}
|
|
cbPreTest(function() {
|
|
info("sub-test " + name + " starting");
|
|
try {
|
|
func.call(tests, cleanupAndRunNextTest);
|
|
} catch (ex) {
|
|
ok(false, "sub-test " + name + " failed: " + ex.toString() +"\n"+ex.stack);
|
|
cleanupAndRunNextTest();
|
|
}
|
|
})
|
|
});
|
|
}
|
|
runNextTest();
|
|
}
|