summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/test/test-plain-text-console.js
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/test/test-plain-text-console.js')
-rw-r--r--addon-sdk/source/test/test-plain-text-console.js278
1 files changed, 0 insertions, 278 deletions
diff --git a/addon-sdk/source/test/test-plain-text-console.js b/addon-sdk/source/test/test-plain-text-console.js
deleted file mode 100644
index d55328e34..000000000
--- a/addon-sdk/source/test/test-plain-text-console.js
+++ /dev/null
@@ -1,278 +0,0 @@
-/* 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/. */
-
-const prefs = require("sdk/preferences/service");
-const { id, name } = require("sdk/self");
-const { Cc, Cu, Ci } = require("chrome");
-const { loadSubScript } = Cc['@mozilla.org/moz/jssubscript-loader;1'].
- getService(Ci.mozIJSSubScriptLoader);
-
-const ADDON_LOG_LEVEL_PREF = "extensions." + id + ".sdk.console.logLevel";
-const SDK_LOG_LEVEL_PREF = "extensions.sdk.console.logLevel";
-
-const HAS_ORIGINAL_ADDON_LOG_LEVEL = prefs.has(ADDON_LOG_LEVEL_PREF);
-const ORIGINAL_ADDON_LOG_LEVEL = prefs.get(ADDON_LOG_LEVEL_PREF);
-const HAS_ORIGINAL_SDK_LOG_LEVEL = prefs.has(SDK_LOG_LEVEL_PREF);
-const ORIGINAL_SDK_LOG_LEVEL = prefs.get(SDK_LOG_LEVEL_PREF);
-
-exports.testPlainTextConsole = function(assert) {
- let prints = [];
- let tbLines;
- function print(message) {
- prints.push(message);
- }
- function lastPrint() {
- let last = prints.slice(-1)[0];
- prints = [];
- return last;
- }
-
- prefs.set(SDK_LOG_LEVEL_PREF, "all");
- prefs.reset(ADDON_LOG_LEVEL_PREF);
-
- let Console = require("sdk/console/plain-text").PlainTextConsole;
- let con = new Console(print);
-
- assert.ok("PlainTextConsole instantiates");
-
- con.log('testing', 1, [2, 3, 4]);
- assert.equal(lastPrint(), "console.log: " + name + ": testing 1 Array [2,3,4]\n",
- "PlainTextConsole.log() must work.");
-
- con.info('testing', 1, [2, 3, 4]);
- assert.equal(lastPrint(), "console.info: " + name + ": testing 1 Array [2,3,4]\n",
- "PlainTextConsole.info() must work.");
-
- con.warn('testing', 1, [2, 3, 4]);
- assert.equal(lastPrint(), "console.warn: " + name + ": testing 1 Array [2,3,4]\n",
- "PlainTextConsole.warn() must work.");
-
- con.error('testing', 1, [2, 3, 4]);
- assert.equal(prints[0], "console.error: " + name + ": \n",
- "PlainTextConsole.error() must work.");
- assert.equal(prints[1], " testing\n")
- assert.equal(prints[2], " 1\n")
- assert.equal(prints[3], "Array\n - 0 = 2\n - 1 = 3\n - 2 = 4\n - length = 3\n");
- prints = [];
-
- con.debug('testing', 1, [2, 3, 4]);
- assert.equal(prints[0], "console.debug: " + name + ": \n",
- "PlainTextConsole.debug() must work.");
- assert.equal(prints[1], " testing\n")
- assert.equal(prints[2], " 1\n")
- assert.equal(prints[3], "Array\n - 0 = 2\n - 1 = 3\n - 2 = 4\n - length = 3\n");
- prints = [];
-
- con.log('testing', undefined);
- assert.equal(lastPrint(), "console.log: " + name + ": testing undefined\n",
- "PlainTextConsole.log() must stringify undefined.");
-
- con.log('testing', null);
- assert.equal(lastPrint(), "console.log: " + name + ": testing null\n",
- "PlainTextConsole.log() must stringify null.");
-
- // TODO: Fix console.jsm to detect custom toString.
- con.log("testing", { toString: () => "obj.toString()" });
- assert.equal(lastPrint(), "console.log: " + name + ": testing {}\n",
- "PlainTextConsole.log() doesn't printify custom toString.");
-
- con.log("testing", { toString: function() { throw "fail!"; } });
- assert.equal(lastPrint(), "console.log: " + name + ": testing {}\n",
- "PlainTextConsole.log() must stringify custom bad toString.");
-
- con.exception(new Error("blah"));
-
- assert.equal(prints[0], "console.error: " + name + ": \n", "prints[0] is correct");
- tbLines = prints[1].split("\n");
- assert.equal(tbLines[0], " Message: Error: blah", "tbLines[0] is correct");
- assert.equal(tbLines[1], " Stack:", "tbLines[1] is correct");
- let lineNumber = prints[1].match(module.uri + ":(\\d+)")[1];
- assert.equal(lineNumber, "84", "line number is correct")
- assert.ok(prints[1].indexOf(module.uri + ":84") !== -1, "line number is correct");
- prints = []
-
- try {
- loadSubScript("invalid-url", {});
- assert.fail("successed in calling loadSubScript with invalid-url");
- }
- catch(e) {
- con.exception(e);
- }
- assert.equal(prints[0], "console.error: " + name + ": \n", "prints[0] is correct");
- assert.equal(prints[1], " Error creating URI (invalid URL scheme?)\n", "prints[1] is correct");
- prints = [];
-
- con.trace();
- tbLines = prints[0].split("\n");
- assert.equal(tbLines[0], "console.trace: " + name + ": ", "contains correct console.trace");
- assert.ok(tbLines[1].indexOf("_ain-text-console.js 106") == 0);
- prints = [];
-
- // Whether or not console methods should print at the various log levels,
- // structured as a hash of levels, each of which contains a hash of methods,
- // each of whose value is whether or not it should print, i.e.:
- // { [level]: { [method]: [prints?], ... }, ... }.
- let levels = {
- all: { debug: true, log: true, info: true, warn: true, error: true },
- debug: { debug: true, log: true, info: true, warn: true, error: true },
- info: { debug: false, log: true, info: true, warn: true, error: true },
- warn: { debug: false, log: false, info: false, warn: true, error: true },
- error: { debug: false, log: false, info: false, warn: false, error: true },
- off: { debug: false, log: false, info: false, warn: false, error: false },
- };
-
- // The messages we use to test the various methods, as a hash of methods.
- let messages = {
- debug: "console.debug: " + name + ": \n \n",
- log: "console.log: " + name + ": \n",
- info: "console.info: " + name + ": \n",
- warn: "console.warn: " + name + ": \n",
- error: "console.error: " + name + ": \n \n",
- };
-
- for (let level in levels) {
- let methods = levels[level];
- for (let method in methods) {
- // We have to reset the log level pref each time we run the test
- // because the test runner relies on the console to print test output,
- // and test results would not get printed to the console for some
- // values of the pref.
- prefs.set(SDK_LOG_LEVEL_PREF, level);
- con[method]("");
- prefs.set(SDK_LOG_LEVEL_PREF, "all");
- assert.equal(prints.join(""),
- (methods[method] ? messages[method] : ""),
- "at log level '" + level + "', " + method + "() " +
- (methods[method] ? "prints" : "doesn't print"));
- prints = [];
- }
- }
-
- prefs.set(SDK_LOG_LEVEL_PREF, "off");
- prefs.set(ADDON_LOG_LEVEL_PREF, "all");
- con.debug("");
- assert.equal(prints.join(""), messages["debug"],
- "addon log level 'all' overrides SDK log level 'off'");
- prints = [];
-
- prefs.set(SDK_LOG_LEVEL_PREF, "all");
- prefs.set(ADDON_LOG_LEVEL_PREF, "off");
- con.error("");
- prefs.reset(ADDON_LOG_LEVEL_PREF);
- assert.equal(lastPrint(), null,
- "addon log level 'off' overrides SDK log level 'all'");
-
- restorePrefs();
-};
-
-exports.testPlainTextConsoleBoundMethods = function(assert) {
- let prints = [];
- let tbLines;
- function print(message) {
- prints.push(message);
- }
- function lastPrint() {
- let last = prints.slice(-1)[0];
- prints = [];
- return last;
- }
-
- prefs.set(SDK_LOG_LEVEL_PREF, "all");
- prefs.reset(ADDON_LOG_LEVEL_PREF);
-
- let Console = require("sdk/console/plain-text").PlainTextConsole;
- let { log, info, warn, error, debug, exception, trace } = new Console(print);
-
- assert.ok("PlainTextConsole instantiates");
-
- log('testing', 1, [2, 3, 4]);
- assert.equal(lastPrint(), "console.log: " + name + ": testing 1 Array [2,3,4]\n",
- "PlainTextConsole.log() must work.");
-
- info('testing', 1, [2, 3, 4]);
- assert.equal(lastPrint(), "console.info: " + name + ": testing 1 Array [2,3,4]\n",
- "PlainTextConsole.info() must work.");
-
- warn('testing', 1, [2, 3, 4]);
- assert.equal(lastPrint(), "console.warn: " + name + ": testing 1 Array [2,3,4]\n",
- "PlainTextConsole.warn() must work.");
-
- error('testing', 1, [2, 3, 4]);
- assert.equal(prints[0], "console.error: " + name + ": \n",
- "PlainTextConsole.error() must work.");
- assert.equal(prints[1], " testing\n")
- assert.equal(prints[2], " 1\n")
- assert.equal(prints[3], "Array\n - 0 = 2\n - 1 = 3\n - 2 = 4\n - length = 3\n");
- prints = [];
-
- debug('testing', 1, [2, 3, 4]);
- assert.equal(prints[0], "console.debug: " + name + ": \n",
- "PlainTextConsole.debug() must work.");
- assert.equal(prints[1], " testing\n", "prints[1] is correct");
- assert.equal(prints[2], " 1\n", "prints[2] is correct");
- assert.equal(prints[3],
- "Array\n - 0 = 2\n - 1 = 3\n - 2 = 4\n - length = 3\n",
- "prints[3] is correct");
- prints = [];
-
- exception(new Error("blah"));
-
- assert.equal(prints[0], "console.error: " + name + ": \n", "prints[0] is correct");
- tbLines = prints[1].split("\n");
- assert.equal(tbLines[0], " Message: Error: blah", "tbLines[0] is correct");
- assert.equal(tbLines[1], " Stack:", "tbLines[1] is correct");
- assert.ok(prints[1].indexOf(module.uri + ":219") !== -1, "correct line number");
- prints = []
-
- trace();
- tbLines = prints[0].split("\n");
- assert.equal(tbLines[0], "console.trace: " + name + ": ", "console.trace is correct");
- assert.ok(tbLines[1].indexOf("_ain-text-console.js 228") === 0, "correct line number");
- prints = [];
-
- restorePrefs();
-};
-
-exports.testConsoleInnerID = function(assert) {
- let Console = require("sdk/console/plain-text").PlainTextConsole;
- let { log, info, warn, error, debug, exception, trace } = new Console(function() {}, "test ID");
-
- prefs.set(SDK_LOG_LEVEL_PREF, "all");
-
- let messages = [];
- function onMessage({ subject }) {
- let message = subject.wrappedJSObject;
- messages.push({ msg: message.arguments[0], type: message.level, innerID: message.innerID });
- }
-
- const system = require("sdk/system/events");
- system.on("console-api-log-event", onMessage);
-
- log("Test log");
- warn("Test warning");
- error("Test error");
-
- assert.equal(messages.length, 3, "Should see 3 log events");
- assert.deepEqual(messages[0], { msg: "Test log", type: "log", innerID: "test ID" }, "Should see the right event");
- assert.deepEqual(messages[1], { msg: "Test warning", type: "warn", innerID: "test ID" }, "Should see the right event");
- assert.deepEqual(messages[2], { msg: "Test error", type: "error", innerID: "test ID" }, "Should see the right event");
-
- system.off("console-api-log-event", onMessage);
-
- restorePrefs();
-};
-
-function restorePrefs() {
- if (HAS_ORIGINAL_ADDON_LOG_LEVEL)
- prefs.set(ADDON_LOG_LEVEL_PREF, ORIGINAL_ADDON_LOG_LEVEL);
- else
- prefs.reset(ADDON_LOG_LEVEL_PREF);
-
- if (HAS_ORIGINAL_SDK_LOG_LEVEL)
- prefs.set(SDK_LOG_LEVEL_PREF, ORIGINAL_SDK_LOG_LEVEL);
- else
- prefs.reset(SDK_LOG_LEVEL_PREF);
-}
-
-require("sdk/test").run(exports);