summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qloggingregistry/tst_qloggingregistry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/io/qloggingregistry/tst_qloggingregistry.cpp')
-rw-r--r--tests/auto/corelib/io/qloggingregistry/tst_qloggingregistry.cpp130
1 files changed, 130 insertions, 0 deletions
diff --git a/tests/auto/corelib/io/qloggingregistry/tst_qloggingregistry.cpp b/tests/auto/corelib/io/qloggingregistry/tst_qloggingregistry.cpp
index dc6f16828b..4318396bd4 100644
--- a/tests/auto/corelib/io/qloggingregistry/tst_qloggingregistry.cpp
+++ b/tests/auto/corelib/io/qloggingregistry/tst_qloggingregistry.cpp
@@ -45,6 +45,13 @@
#include <QtCore/private/qloggingregistry_p.h>
QT_USE_NAMESPACE
+enum LoggingRuleState {
+ Invalid,
+ Match,
+ NoMatch
+};
+Q_DECLARE_METATYPE(LoggingRuleState);
+Q_DECLARE_METATYPE(QtMsgType);
class tst_QLoggingRegistry : public QObject
{
@@ -57,6 +64,122 @@ private slots:
// ensure a clean environment
QStandardPaths::setTestModeEnabled(true);
qunsetenv("QT_LOGGING_CONF");
+ qunsetenv("QT_LOGGING_RULES");
+ }
+
+ void QLoggingRule_parse_data()
+ {
+ QTest::addColumn<QString>("pattern");
+ QTest::addColumn<QString>("category");
+ QTest::addColumn<QtMsgType>("msgType");
+ QTest::addColumn<LoggingRuleState>("result");
+
+ // _empty_ should match (only) _empty_
+ QTest::newRow("_empty_-_empty_")
+ << QString("") << QString("") << QtDebugMsg << Match;
+ QTest::newRow("_empty_-default")
+ << QString("") << QString("default") << QtDebugMsg << NoMatch;
+ QTest::newRow(".debug-_empty_")
+ << QString(".debug") << QString("") << QtDebugMsg << Match;
+ QTest::newRow(".warning-default")
+ << QString(".warning") << QString("default") << QtDebugMsg << NoMatch;
+
+ // literal should match only literal
+ QTest::newRow("qt-qt")
+ << QString("qt") << QString("qt") << QtDebugMsg << Match;
+ QTest::newRow("qt-_empty_")
+ << QString("qt") << QString("") << QtDebugMsg << NoMatch;
+ QTest::newRow("qt-qtx")
+ << QString("qt") << QString("qtx") << QtDebugMsg << NoMatch;
+ QTest::newRow("qt-qt.io")
+ << QString("qt") << QString("qt.io") << QtDebugMsg << NoMatch;
+ QTest::newRow("qt.debug-qt")
+ << QString("qt.debug") << QString("qt") << QtDebugMsg << Match;
+ QTest::newRow("qt.critical-qt")
+ << QString("qt.critical") << QString("qt") << QtDebugMsg << NoMatch;
+
+ // * should match everything
+ QTest::newRow("_star_-qt.io.debug")
+ << QString("*") << QString("qt.io") << QtDebugMsg << Match;
+ QTest::newRow("_star_-qt.io.warning")
+ << QString("*") << QString("qt.io") << QtWarningMsg << Match;
+ QTest::newRow("_star_-qt.io.critical")
+ << QString("*") << QString("qt.io") << QtCriticalMsg << Match;
+ QTest::newRow("_star_-_empty_")
+ << QString("*") << QString("") << QtDebugMsg << Match;
+ QTest::newRow("_star_.debug-qt.io")
+ << QString("*.debug") << QString("qt.io") << QtDebugMsg << Match;
+ QTest::newRow("_star_.warning-qt.io")
+ << QString("*.warning") << QString("qt.io") << QtDebugMsg << NoMatch;
+
+ // qt.* should match everything starting with 'qt.'
+ QTest::newRow("qt._star_-qt.io")
+ << QString("qt.*") << QString("qt.io") << QtDebugMsg << Match;
+ QTest::newRow("qt._star_-qt")
+ << QString("qt.*") << QString("qt") << QtDebugMsg << NoMatch;
+ QTest::newRow("qt__star_-qt")
+ << QString("qt*") << QString("qt") << QtDebugMsg << Match;
+ QTest::newRow("qt._star_-qt.io.fs")
+ << QString("qt.*") << QString("qt.io.fs") << QtDebugMsg << Match;
+ QTest::newRow("qt._star_.debug-qt.io.fs")
+ << QString("qt.*.debug") << QString("qt.io.fs") << QtDebugMsg << Match;
+ QTest::newRow("qt._star_.warning-qt.io.fs")
+ << QString("qt.*.warning") << QString("qt.io.fs") << QtDebugMsg << NoMatch;
+
+ // *.io should match everything ending with .io
+ QTest::newRow("_star_.io-qt.io")
+ << QString("*.io") << QString("qt.io") << QtDebugMsg << Match;
+ QTest::newRow("_star_io-qt.io")
+ << QString("*io") << QString("qt.io") << QtDebugMsg << Match;
+ QTest::newRow("_star_.io-io")
+ << QString("*.io") << QString("io") << QtDebugMsg << NoMatch;
+ QTest::newRow("_star_io-io")
+ << QString("*io") << QString("io") << QtDebugMsg << Match;
+ QTest::newRow("_star_.io-qt.ios")
+ << QString("*.io") << QString("qt.ios") << QtDebugMsg << NoMatch;
+ QTest::newRow("_star_.io-qt.io.x")
+ << QString("*.io") << QString("qt.io.x") << QtDebugMsg << NoMatch;
+ QTest::newRow("_star_.io.debug-qt.io")
+ << QString("*.io.debug") << QString("qt.io") << QtDebugMsg << Match;
+ QTest::newRow("_star_.io.warning-qt.io")
+ << QString("*.io.warning") << QString("qt.io") << QtDebugMsg << NoMatch;
+
+ // *qt* should match everything that contains 'qt'
+ QTest::newRow("_star_qt_star_-qt.core.io")
+ << QString("*qt*") << QString("qt.core.io") << QtDebugMsg << Match;
+ QTest::newRow("_star_qt_star_-default")
+ << QString("*qt*") << QString("default") << QtDebugMsg << NoMatch;
+ QTest::newRow("_star_qt._star_.debug-qt.io")
+ << QString("*qt.*.debug") << QString("qt.io") << QtDebugMsg << Match;
+ QTest::newRow("_star_.qt._star_.warning-qt.io")
+ << QString("*.qt.*.warning") << QString("qt.io") << QtDebugMsg << NoMatch;
+ QTest::newRow("**")
+ << QString("**") << QString("qt.core.io") << QtDebugMsg << Match;
+
+ // * outside of start/end
+ QTest::newRow("qt.*.io")
+ << QString("qt.*.io") << QString("qt.core.io") << QtDebugMsg << Invalid;
+ QTest::newRow("***")
+ << QString("***") << QString("qt.core.io") << QtDebugMsg << Invalid;
+ }
+
+ void QLoggingRule_parse()
+ {
+ QFETCH(QString, pattern);
+ QFETCH(QString, category);
+ QFETCH(QtMsgType, msgType);
+ QFETCH(LoggingRuleState, result);
+
+ QLoggingRule rule(QStringRef(&pattern), true);
+ LoggingRuleState state = Invalid;
+ if (rule.flags != QLoggingRule::Invalid) {
+ switch (rule.pass(category, msgType)) {
+ case -1: QFAIL("Shoudn't happen, we set pattern to true"); break;
+ case 0: state = NoMatch; break;
+ case 1: state = Match; break;
+ }
+ }
+ QCOMPARE(state, result);
}
void QLoggingSettingsParser_iniStyle()
@@ -97,6 +220,13 @@ private slots:
QCOMPARE(registry.envRules.size(), 1);
QCOMPARE(registry.rules.size(), 1);
+
+ // check that QT_LOGGING_RULES take precedence
+ qputenv("QT_LOGGING_RULES", "Digia.*=true");
+ registry.init();
+ QCOMPARE(registry.envRules.size(), 2);
+ QCOMPARE(registry.envRules.at(1).enabled, true);
+ QCOMPARE(registry.rules.size(), 2);
}
void QLoggingRegistry_config()