1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/xpcom/tests/unit/test_compmgr_warnings.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,72 @@ 1.4 +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 1.5 + 1.6 +const Cc = Components.classes; 1.7 +const Ci = Components.interfaces; 1.8 + 1.9 +function info(s) { 1.10 + dump("TEST-INFO | test_compmgr_warnings.js | " + s + "\n"); 1.11 +} 1.12 + 1.13 +var gMessagesExpected = [ 1.14 + { line: 2, message: /Malformed CID/, found: false }, 1.15 + { line: 6, message: /re-register/, found: false }, 1.16 + { line: 9, message: /Could not/, found: false }, 1.17 + { line: 2, message: /binary component twice/, found: false }, 1.18 + { line: 3, message: /binary component twice/, found: false }, 1.19 +]; 1.20 + 1.21 +const kConsoleListener = { 1.22 + QueryInterface: XPCOMUtils.generateQI([Ci.nsIConsoleListener]), 1.23 + 1.24 + observe: function listener_observe(message) { 1.25 + if (!(message instanceof Ci.nsIScriptError)) { 1.26 + info("Not a script error: " + message.message); 1.27 + return; 1.28 + } 1.29 + 1.30 + info("Script error... " + message.sourceName + ":" + message.lineNumber + ": " + message.errorMessage); 1.31 + for each (let expected in gMessagesExpected) { 1.32 + if (message.lineNumber != expected.line) 1.33 + continue; 1.34 + 1.35 + if (!expected.message.test(message.errorMessage)) 1.36 + continue; 1.37 + 1.38 + info("Found expected message: " + expected.message); 1.39 + do_check_false(expected.found); 1.40 + 1.41 + expected.found = true; 1.42 + } 1.43 + } 1.44 +}; 1.45 + 1.46 +function run_deferred_event(fn) { 1.47 + do_test_pending(); 1.48 + Components.classes["@mozilla.org/thread-manager;1"]. 1.49 + getService(Ci.nsIThreadManager).mainThread.dispatch(function() { 1.50 + fn(); 1.51 + do_test_finished(); 1.52 + }, 0); 1.53 +} 1.54 + 1.55 +function run_test() 1.56 +{ 1.57 + let cs = Components.classes["@mozilla.org/consoleservice;1"]. 1.58 + getService(Ci.nsIConsoleService); 1.59 + cs.registerListener(kConsoleListener); 1.60 + 1.61 + var manifest = do_get_file('compmgr_warnings.manifest'); 1.62 + Components.manager.QueryInterface(Ci.nsIComponentRegistrar). 1.63 + autoRegister(manifest); 1.64 + manifest = do_get_file('testcomponent.manifest'); 1.65 + Components.manager.autoRegister(manifest); 1.66 + 1.67 + run_deferred_event(function() { 1.68 + cs.unregisterListener(kConsoleListener); 1.69 + 1.70 + for each (let expected in gMessagesExpected) { 1.71 + info("checking " + expected.message); 1.72 + do_check_true(expected.found); 1.73 + } 1.74 + }); 1.75 +}