michael@0: Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); michael@0: michael@0: const Cc = Components.classes; michael@0: const Ci = Components.interfaces; michael@0: michael@0: function info(s) { michael@0: dump("TEST-INFO | test_compmgr_warnings.js | " + s + "\n"); michael@0: } michael@0: michael@0: var gMessagesExpected = [ michael@0: { line: 2, message: /Malformed CID/, found: false }, michael@0: { line: 6, message: /re-register/, found: false }, michael@0: { line: 9, message: /Could not/, found: false }, michael@0: { line: 2, message: /binary component twice/, found: false }, michael@0: { line: 3, message: /binary component twice/, found: false }, michael@0: ]; michael@0: michael@0: const kConsoleListener = { michael@0: QueryInterface: XPCOMUtils.generateQI([Ci.nsIConsoleListener]), michael@0: michael@0: observe: function listener_observe(message) { michael@0: if (!(message instanceof Ci.nsIScriptError)) { michael@0: info("Not a script error: " + message.message); michael@0: return; michael@0: } michael@0: michael@0: info("Script error... " + message.sourceName + ":" + message.lineNumber + ": " + message.errorMessage); michael@0: for each (let expected in gMessagesExpected) { michael@0: if (message.lineNumber != expected.line) michael@0: continue; michael@0: michael@0: if (!expected.message.test(message.errorMessage)) michael@0: continue; michael@0: michael@0: info("Found expected message: " + expected.message); michael@0: do_check_false(expected.found); michael@0: michael@0: expected.found = true; michael@0: } michael@0: } michael@0: }; michael@0: michael@0: function run_deferred_event(fn) { michael@0: do_test_pending(); michael@0: Components.classes["@mozilla.org/thread-manager;1"]. michael@0: getService(Ci.nsIThreadManager).mainThread.dispatch(function() { michael@0: fn(); michael@0: do_test_finished(); michael@0: }, 0); michael@0: } michael@0: michael@0: function run_test() michael@0: { michael@0: let cs = Components.classes["@mozilla.org/consoleservice;1"]. michael@0: getService(Ci.nsIConsoleService); michael@0: cs.registerListener(kConsoleListener); michael@0: michael@0: var manifest = do_get_file('compmgr_warnings.manifest'); michael@0: Components.manager.QueryInterface(Ci.nsIComponentRegistrar). michael@0: autoRegister(manifest); michael@0: manifest = do_get_file('testcomponent.manifest'); michael@0: Components.manager.autoRegister(manifest); michael@0: michael@0: run_deferred_event(function() { michael@0: cs.unregisterListener(kConsoleListener); michael@0: michael@0: for each (let expected in gMessagesExpected) { michael@0: info("checking " + expected.message); michael@0: do_check_true(expected.found); michael@0: } michael@0: }); michael@0: }