summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2014-12-12 11:30:46 +0100
committerBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2014-12-12 11:30:46 +0100
commit3a86b9dbe2c98c32f08942b07354a0361e8bafdb (patch)
tree890c45e664534f8ce49a0f4cb9aeba68520f7543
parent5fde58b21baa7d92194c7910a85ab542a61897a9 (diff)
Slight changes to logging mechanism.
-rw-r--r--src/core/common/Logger.cpp14
-rw-r--r--src/core/common/Logger.hpp12
-rw-r--r--test/core/common/LoggerTest.cpp2
-rw-r--r--test/plugins/css/CSSParserTest.cpp47
4 files changed, 61 insertions, 14 deletions
diff --git a/src/core/common/Logger.cpp b/src/core/common/Logger.cpp
index ab62b03..1811b68 100644
--- a/src/core/common/Logger.cpp
+++ b/src/core/common/Logger.cpp
@@ -118,6 +118,16 @@ public:
return ss.str();
}
+ std::string bright() const
+ {
+ if (!active) {
+ return std::string{};
+ }
+ std::stringstream ss;
+ ss << "\x1b[1m";
+ return ss.str();
+ }
+
std::string reset() const
{
if (!active) {
@@ -152,7 +162,7 @@ void TerminalLogger::processMessage(Message msg)
std::string filename = currentFilename();
bool hasFile = !filename.empty();
if (hasFile) {
- os << t.color(Terminal::WHITE, true) << filename << t.reset();
+ os << t.bright() << filename << t.reset();
}
// Print line and column number
@@ -160,7 +170,7 @@ void TerminalLogger::processMessage(Message msg)
if (hasFile) {
os << ':';
}
- os << t.color(Terminal::WHITE, true) << msg.pos.line << t.reset();
+ os << t.bright() << msg.pos.line << t.reset();
if (msg.pos.hasColumn()) {
os << ':' << msg.pos.column;
}
diff --git a/src/core/common/Logger.hpp b/src/core/common/Logger.hpp
index be82ea0..6604756 100644
--- a/src/core/common/Logger.hpp
+++ b/src/core/common/Logger.hpp
@@ -257,7 +257,7 @@ public:
* context information.
*/
template <class PosType>
- void logAt(Severity severity, std::string msg, PosType &pos)
+ void log(Severity severity, std::string msg, PosType &pos)
{
log(severity, std::move(msg), pos.getPosition(), pos.getContext());
}
@@ -291,7 +291,7 @@ public:
void debug(std::string msg, PosType &pos)
{
#ifndef NDEBUG
- logAt(Severity::DEBUG, std::move(msg), pos);
+ log(Severity::DEBUG, std::move(msg), pos);
#endif
}
@@ -319,7 +319,7 @@ public:
template <class PosType>
void note(std::string msg, PosType &pos)
{
- logAt(Severity::NOTE, std::move(msg), pos);
+ log(Severity::NOTE, std::move(msg), pos);
}
/**
@@ -346,7 +346,7 @@ public:
template <class PosType>
void warning(std::string msg, PosType &pos)
{
- logAt(Severity::WARNING, std::move(msg), pos);
+ log(Severity::WARNING, std::move(msg), pos);
}
/**
@@ -373,7 +373,7 @@ public:
template <class PosType>
void error(std::string msg, PosType &pos)
{
- logAt(Severity::ERROR, std::move(msg), pos);
+ log(Severity::ERROR, std::move(msg), pos);
}
/**
@@ -401,7 +401,7 @@ public:
template <class PosType>
void fatalError(std::string msg, PosType &pos)
{
- logAt(Severity::FATAL_ERROR, std::move(msg), pos);
+ log(Severity::FATAL_ERROR, std::move(msg), pos);
}
/**
diff --git a/test/core/common/LoggerTest.cpp b/test/core/common/LoggerTest.cpp
index cc9f701..ee1fb6f 100644
--- a/test/core/common/LoggerTest.cpp
+++ b/test/core/common/LoggerTest.cpp
@@ -72,7 +72,7 @@ TEST(TerminalLogger, log)
logger.log(ex);
}
- logger.logAt(Severity::ERROR, "This is a positioned log message", pos);
+ logger.log(Severity::ERROR, "This is a positioned log message", pos);
}
TEST(TerminalLogger, fork)
diff --git a/test/plugins/css/CSSParserTest.cpp b/test/plugins/css/CSSParserTest.cpp
index 3ea3a19..e043f60 100644
--- a/test/plugins/css/CSSParserTest.cpp
+++ b/test/plugins/css/CSSParserTest.cpp
@@ -18,6 +18,7 @@
#include <gtest/gtest.h>
+#include <iostream>
#include <sstream>
#include <plugins/css/CSSParser.hpp>
@@ -130,7 +131,6 @@ TEST(CSSParser, testParseSelectors)
TEST(CSSParser, testParseCSS)
{
-
// create the CSS input
std::stringstream input;
input << "A, B A {\n";
@@ -203,7 +203,7 @@ TEST(CSSParser, testParseCSS)
Rooted<SelectorNode> Aselect = children[1];
ASSERT_EQ("A", Aselect->getName());
{
- PseudoSelector select{"select",{"a","b"}, false};
+ PseudoSelector select{"select", {"a", "b"}, false};
ASSERT_EQ(select, Aselect->getPseudoSelector());
}
ASSERT_EQ(0, Aselect->getEdges().size());
@@ -225,7 +225,7 @@ TEST(CSSParser, testParseCSS)
*/
children = root->getChildren("B");
ASSERT_EQ(1, children.size());
-
+
Rooted<SelectorNode> B = children[0];
ASSERT_EQ("B", B->getName());
{
@@ -235,10 +235,10 @@ TEST(CSSParser, testParseCSS)
ASSERT_EQ(1, B->getEdges().size());
ASSERT_FALSE(B->isAccepting());
ASSERT_EQ(0, B->getRuleSet()->getRules().size());
-
+
children = B->getChildren("A");
ASSERT_EQ(1, children.size());
-
+
Rooted<SelectorNode> BA = children[0];
ASSERT_EQ("A", BA->getName());
{
@@ -258,6 +258,43 @@ TEST(CSSParser, testParseCSS)
ASSERT_EQ("val2", v.asString());
}
}
+
+void assertException(std::string css)
+{
+ std::stringstream input;
+ input << css;
+ // initialize a parser context.
+ TerminalLogger logger(std::cerr, true);
+ Scope scope(nullptr);
+ Registry registry(logger);
+ Manager manager;
+ ParserContext ctx{scope, registry, logger, manager};
+
+ bool seenException = false;
+ // parse the input.
+ CSSParser instance;
+ try {
+ instance.parse(input, ctx).cast<SelectorNode>();
+ }
+ catch (ParserException ex) {
+ logger.log(ex);
+ seenException = true;
+ }
+ ASSERT_TRUE(seenException);
+}
+
+TEST(CSSParser, testParseExceptions)
+{
+ assertException(", ");
+ assertException("A::myGenerative , ");
+ assertException("A::(a)");
+ assertException("A::f()");
+ assertException("A#");
+ assertException("A[]");
+ assertException("A[a");
+ assertException("A[a=]");
+ assertException("A > ");
+}
}
}
}