diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 05:43:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 05:43:14 +0000 |
commit | 8dd16259287f58f9273002717ec4d27e97127719 (patch) | |
tree | 3863e62a53829a84037444beab3abd4ed9dfc7d0 /services/common/tests | |
parent | Releasing progress-linux version 126.0.1-1~progress7.99u1. (diff) | |
download | firefox-8dd16259287f58f9273002717ec4d27e97127719.tar.xz firefox-8dd16259287f58f9273002717ec4d27e97127719.zip |
Merging upstream version 127.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'services/common/tests')
-rw-r--r-- | services/common/tests/unit/test_load_modules.js | 8 | ||||
-rw-r--r-- | services/common/tests/unit/test_logmanager.js | 330 | ||||
-rw-r--r-- | services/common/tests/unit/xpcshell.toml | 2 |
3 files changed, 2 insertions, 338 deletions
diff --git a/services/common/tests/unit/test_load_modules.js b/services/common/tests/unit/test_load_modules.js index d86165266f..f188acb4f5 100644 --- a/services/common/tests/unit/test_load_modules.js +++ b/services/common/tests/unit/test_load_modules.js @@ -6,12 +6,7 @@ const { AppConstants } = ChromeUtils.importESModule( ); const MODULE_BASE = "resource://services-common/"; -const shared_modules = [ - "async.sys.mjs", - "logmanager.sys.mjs", - "rest.sys.mjs", - "utils.sys.mjs", -]; +const shared_modules = ["async.sys.mjs", "rest.sys.mjs", "utils.sys.mjs"]; const non_android_modules = ["tokenserverclient.sys.mjs"]; @@ -51,6 +46,7 @@ function expectImportsToFail(mm, base = MODULE_BASE) { function run_test() { expectImportsToSucceed(shared_modules); expectImportsToSucceed(shared_test_modules, TEST_BASE); + expectImportsToSucceed(["LogManager.sys.mjs"], "resource://gre/modules/"); if (AppConstants.platform != "android") { expectImportsToSucceed(non_android_modules); diff --git a/services/common/tests/unit/test_logmanager.js b/services/common/tests/unit/test_logmanager.js deleted file mode 100644 index 89ac274e61..0000000000 --- a/services/common/tests/unit/test_logmanager.js +++ /dev/null @@ -1,330 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -// NOTE: The sync test_errorhandler_* tests have quite good coverage for -// other aspects of this. - -const { LogManager } = ChromeUtils.importESModule( - "resource://services-common/logmanager.sys.mjs" -); -const { FileUtils } = ChromeUtils.importESModule( - "resource://gre/modules/FileUtils.sys.mjs" -); - -// Returns an array of [consoleAppender, dumpAppender, [fileAppenders]] for -// the specified log. Note that fileAppenders will usually have length=1 -function getAppenders(log) { - let capps = log.appenders.filter(app => app instanceof Log.ConsoleAppender); - equal(capps.length, 1, "should only have one console appender"); - let dapps = log.appenders.filter(app => app instanceof Log.DumpAppender); - equal(dapps.length, 1, "should only have one dump appender"); - let fapps = log.appenders.filter( - app => app instanceof LogManager.StorageStreamAppender - ); - return [capps[0], dapps[0], fapps]; -} - -// Test that the correct thing happens when no prefs exist for the log manager. -add_task(async function test_noPrefs() { - // tell the log manager to init with a pref branch that doesn't exist. - let lm = new LogManager("no-such-branch.", ["TestLog"], "test"); - - let log = Log.repository.getLogger("TestLog"); - let [capp, dapp, fapps] = getAppenders(log); - // The console appender gets "Fatal" while the "dump" appender gets "Error" levels - equal(capp.level, Log.Level.Fatal); - equal(dapp.level, Log.Level.Error); - // and the file (stream) appender gets Debug by default - equal(fapps.length, 1, "only 1 file appender"); - equal(fapps[0].level, Log.Level.Debug); - lm.finalize(); -}); - -// Test that changes to the prefs used by the log manager are updated dynamically. -add_task(async function test_PrefChanges() { - Services.prefs.setStringPref( - "log-manager.test.log.appender.console", - "Trace" - ); - Services.prefs.setStringPref("log-manager.test.log.appender.dump", "Trace"); - Services.prefs.setStringPref( - "log-manager.test.log.appender.file.level", - "Trace" - ); - let lm = new LogManager("log-manager.test.", ["TestLog2"], "test"); - - let log = Log.repository.getLogger("TestLog2"); - let [capp, dapp, [fapp]] = getAppenders(log); - equal(capp.level, Log.Level.Trace); - equal(dapp.level, Log.Level.Trace); - equal(fapp.level, Log.Level.Trace); - // adjust the prefs and they should magically be reflected in the appenders. - Services.prefs.setStringPref( - "log-manager.test.log.appender.console", - "Debug" - ); - Services.prefs.setStringPref("log-manager.test.log.appender.dump", "Debug"); - Services.prefs.setStringPref( - "log-manager.test.log.appender.file.level", - "Debug" - ); - equal(capp.level, Log.Level.Debug); - equal(dapp.level, Log.Level.Debug); - equal(fapp.level, Log.Level.Debug); - // and invalid values should cause them to fallback to their defaults. - Services.prefs.setStringPref("log-manager.test.log.appender.console", "xxx"); - Services.prefs.setStringPref("log-manager.test.log.appender.dump", "xxx"); - Services.prefs.setStringPref( - "log-manager.test.log.appender.file.level", - "xxx" - ); - equal(capp.level, Log.Level.Fatal); - equal(dapp.level, Log.Level.Error); - equal(fapp.level, Log.Level.Debug); - lm.finalize(); -}); - -// Test that the same log used by multiple log managers does the right thing. -add_task(async function test_SharedLogs() { - // create the prefs for the first instance. - Services.prefs.setStringPref( - "log-manager-1.test.log.appender.console", - "Trace" - ); - Services.prefs.setStringPref("log-manager-1.test.log.appender.dump", "Trace"); - Services.prefs.setStringPref( - "log-manager-1.test.log.appender.file.level", - "Trace" - ); - let lm1 = new LogManager("log-manager-1.test.", ["TestLog3"], "test"); - - // and the second. - Services.prefs.setStringPref( - "log-manager-2.test.log.appender.console", - "Debug" - ); - Services.prefs.setStringPref("log-manager-2.test.log.appender.dump", "Debug"); - Services.prefs.setStringPref( - "log-manager-2.test.log.appender.file.level", - "Debug" - ); - let lm2 = new LogManager("log-manager-2.test.", ["TestLog3"], "test"); - - let log = Log.repository.getLogger("TestLog3"); - let [capp, dapp] = getAppenders(log); - - // console and dump appenders should be "trace" as it is more verbose than - // "debug" - equal(capp.level, Log.Level.Trace); - equal(dapp.level, Log.Level.Trace); - - // Set the prefs on the -1 branch to "Error" - it should then end up with - // "Debug" from the -2 branch. - Services.prefs.setStringPref( - "log-manager-1.test.log.appender.console", - "Error" - ); - Services.prefs.setStringPref("log-manager-1.test.log.appender.dump", "Error"); - Services.prefs.setStringPref( - "log-manager-1.test.log.appender.file.level", - "Error" - ); - - equal(capp.level, Log.Level.Debug); - equal(dapp.level, Log.Level.Debug); - - lm1.finalize(); - lm2.finalize(); -}); - -// A little helper to test what log files exist. We expect exactly zero (if -// prefix is null) or exactly one with the specified prefix. -function checkLogFile(prefix) { - let logsdir = FileUtils.getDir("ProfD", ["weave", "logs"]); - let entries = logsdir.directoryEntries; - if (!prefix) { - // expecting no files. - ok(!entries.hasMoreElements()); - } else { - // expecting 1 file. - ok(entries.hasMoreElements()); - let logfile = entries.getNext().QueryInterface(Ci.nsIFile); - equal(logfile.leafName.slice(-4), ".txt"); - ok(logfile.leafName.startsWith(prefix + "-test-"), logfile.leafName); - // and remove it ready for the next check. - logfile.remove(false); - } -} - -// Test that we correctly write error logs by default -add_task(async function test_logFileErrorDefault() { - let lm = new LogManager("log-manager.test.", ["TestLog2"], "test"); - - let log = Log.repository.getLogger("TestLog2"); - log.error("an error message"); - await lm.resetFileLog(lm.REASON_ERROR); - // One error log file exists. - checkLogFile("error"); - - lm.finalize(); -}); - -// Test that we correctly write success logs. -add_task(async function test_logFileSuccess() { - Services.prefs.setBoolPref( - "log-manager.test.log.appender.file.logOnError", - false - ); - Services.prefs.setBoolPref( - "log-manager.test.log.appender.file.logOnSuccess", - false - ); - - let lm = new LogManager("log-manager.test.", ["TestLog2"], "test"); - - let log = Log.repository.getLogger("TestLog2"); - log.info("an info message"); - await lm.resetFileLog(); - // Zero log files exist. - checkLogFile(null); - - // Reset logOnSuccess and do it again - log should appear. - Services.prefs.setBoolPref( - "log-manager.test.log.appender.file.logOnSuccess", - true - ); - log.info("an info message"); - await lm.resetFileLog(); - - checkLogFile("success"); - - // Now test with no "reason" specified and no "error" record. - log.info("an info message"); - await lm.resetFileLog(); - // should get a "success" entry. - checkLogFile("success"); - - // With no "reason" and an error record - should get no success log. - log.error("an error message"); - await lm.resetFileLog(); - // should get no entry - checkLogFile(null); - - // And finally now with no error, to ensure that the fact we had an error - // previously doesn't persist after the .resetFileLog call. - log.info("an info message"); - await lm.resetFileLog(); - checkLogFile("success"); - - lm.finalize(); -}); - -// Test that we correctly write error logs. -add_task(async function test_logFileError() { - Services.prefs.setBoolPref( - "log-manager.test.log.appender.file.logOnError", - false - ); - Services.prefs.setBoolPref( - "log-manager.test.log.appender.file.logOnSuccess", - false - ); - - let lm = new LogManager("log-manager.test.", ["TestLog2"], "test"); - - let log = Log.repository.getLogger("TestLog2"); - log.info("an info message"); - let reason = await lm.resetFileLog(); - Assert.equal(reason, null, "null returned when no file created."); - // Zero log files exist. - checkLogFile(null); - - // Reset logOnSuccess - success logs should appear if no error records. - Services.prefs.setBoolPref( - "log-manager.test.log.appender.file.logOnSuccess", - true - ); - log.info("an info message"); - reason = await lm.resetFileLog(); - Assert.equal(reason, lm.SUCCESS_LOG_WRITTEN); - checkLogFile("success"); - - // Set logOnError and unset logOnSuccess - error logs should appear. - Services.prefs.setBoolPref( - "log-manager.test.log.appender.file.logOnSuccess", - false - ); - Services.prefs.setBoolPref( - "log-manager.test.log.appender.file.logOnError", - true - ); - log.error("an error message"); - reason = await lm.resetFileLog(); - Assert.equal(reason, lm.ERROR_LOG_WRITTEN); - checkLogFile("error"); - - // Now test with no "error" record. - log.info("an info message"); - reason = await lm.resetFileLog(); - // should get no file - Assert.equal(reason, null); - checkLogFile(null); - - // With an error record we should get an error log. - log.error("an error message"); - reason = await lm.resetFileLog(); - // should get en error log - Assert.equal(reason, lm.ERROR_LOG_WRITTEN); - checkLogFile("error"); - - // And finally now with success, to ensure that the fact we had an error - // previously doesn't persist after the .resetFileLog call. - log.info("an info message"); - await lm.resetFileLog(); - checkLogFile(null); - - lm.finalize(); -}); - -function countLogFiles() { - let logsdir = FileUtils.getDir("ProfD", ["weave", "logs"]); - let count = 0; - for (let entry of logsdir.directoryEntries) { - void entry; - count += 1; - } - return count; -} - -// Test that removeAllLogs removes all log files. -add_task(async function test_logFileError() { - Services.prefs.setBoolPref( - "log-manager.test.log.appender.file.logOnError", - true - ); - Services.prefs.setBoolPref( - "log-manager.test.log.appender.file.logOnSuccess", - true - ); - - let lm = new LogManager("log-manager.test.", ["TestLog2"], "test"); - - let log = Log.repository.getLogger("TestLog2"); - log.info("an info message"); - let reason = await lm.resetFileLog(); - Assert.equal(reason, lm.SUCCESS_LOG_WRITTEN, "success log was written."); - - log.error("an error message"); - reason = await lm.resetFileLog(); - Assert.equal(reason, lm.ERROR_LOG_WRITTEN); - - Assert.equal(countLogFiles(), 2, "expect 2 log files"); - await lm.removeAllLogs(); - Assert.equal( - countLogFiles(), - 0, - "should be no log files after removing them" - ); - - lm.finalize(); -}); diff --git a/services/common/tests/unit/xpcshell.toml b/services/common/tests/unit/xpcshell.toml index e4035f66b2..35c10dfce3 100644 --- a/services/common/tests/unit/xpcshell.toml +++ b/services/common/tests/unit/xpcshell.toml @@ -20,8 +20,6 @@ tags = "blocklist" ["test_load_modules.js"] -["test_logmanager.js"] - ["test_observers.js"] ["test_restrequest.js"] |