test: Save logs during testing and add them to version control

This change removes the ConsoleLogger from the TestSuiteFixture and registers a PlainFileLogger instead, which saves
logs during testing into the file bin/test/data/log/test_log.txt.
This commit is contained in:
Eberhard Graether
2014-06-30 17:15:17 +02:00
parent b38252e894
commit 3a983598e6
7 changed files with 93 additions and 6 deletions
+6
View File
@@ -0,0 +1,6 @@
Graph.cpp removeEdge() ERROR: Can't remove member edge, without removing the child node.
TextAccess.cpp checkIndexIntervalInRange() WARNING: Index 'firstLine' has to be lower or equal index 'lastLine', is 2 > 1
TextAccess.cpp checkIndexInRange() WARNING: Tried to access index 9. Maximum index is 7
TextAccess.cpp checkIndexInRange() WARNING: Tried to access index 9. Maximum index is 7
TextAccess.cpp getLine() WARNING: Line numbers start with one, is 0
TextAccess.cpp getLines() WARNING: Line numbers start with one, is 0
+3
View File
@@ -15,4 +15,7 @@ rm -rf bin/lib/Release
rm -rf bin/test/Debug
rm -rf bin/test/Release
# Remove log files
find bin/test/data/log -type f -name 'log*' -delete
echo -e $SUCCESS "clean complete"
+2
View File
@@ -94,6 +94,8 @@ add_files(
gui/WidgetWrapper.cpp
gui/WidgetWrapper.h
utility/logging/PlainFileLogger.cpp
utility/logging/PlainFileLogger.h
utility/logging/ConsoleLogger.cpp
utility/logging/ConsoleLogger.h
utility/logging/FileLogger.cpp
@@ -0,0 +1,47 @@
#include "utility/logging/PlainFileLogger.h"
#include <fstream>
#include <sstream>
PlainFileLogger::PlainFileLogger(std::string filePath)
: Logger("PlainFileLogger")
, m_filePath(filePath)
{
std::ofstream fileStream;
fileStream.open(m_filePath, std::ios::trunc);
fileStream.close();
}
PlainFileLogger::~PlainFileLogger()
{
}
void PlainFileLogger::logString(std::string str)
{
std::ofstream fileStream;
fileStream.open(m_filePath, std::ios::app);
fileStream << str;
fileStream.close();
}
void PlainFileLogger::logInfo(const LogMessage& message)
{
logMessage("INFO", message);
}
void PlainFileLogger::logWarning(const LogMessage& message)
{
logMessage("WARNING", message);
}
void PlainFileLogger::logError(const LogMessage& message)
{
logMessage("ERROR", message);
}
void PlainFileLogger::logMessage(const std::string& type, const LogMessage& message)
{
std::stringstream ss;
ss << message.getFileName() << " " << message.functionName << "() " << type << ": " << message.message << std::endl;
logString(ss.str());
}
+27
View File
@@ -0,0 +1,27 @@
#ifndef PLAIN_FILE_LOGGER_H
#define PLAIN_FILE_LOGGER_H
#include <string>
#include "utility/logging/Logger.h"
#include "utility/logging/LogMessage.h"
class PlainFileLogger: public Logger
{
public:
PlainFileLogger(std::string filePath);
virtual ~PlainFileLogger();
void logString(std::string str);
virtual void logInfo(const LogMessage& message);
virtual void logWarning(const LogMessage& message);
virtual void logError(const LogMessage& message);
private:
void logMessage(const std::string& type, const LogMessage& message);
std::string m_filePath;
};
#endif // PLAIN_FILE_LOGGER_H
+6 -4
View File
@@ -1,9 +1,11 @@
#include "TestSuiteFixture.h"
#include "utility/logging/ConsoleLogger.h"
#include <sstream>
#include "utility/logging/FileLogger.h"
#include "utility/logging/logging.h"
#include "utility/logging/LogManager.h"
#include "utility/logging/PlainFileLogger.h"
TestSuiteFixture::TestSuiteFixture()
{
@@ -13,15 +15,15 @@ TestSuiteFixture::~TestSuiteFixture()
{
}
bool TestSuiteFixture::setUp()
bool TestSuiteFixture::setUpWorld()
{
LogManager::getInstance()->addLogger(std::make_shared<ConsoleLogger>());
LogManager::getInstance()->addLogger(std::make_shared<PlainFileLogger>("data/log/test_log.txt"));
LogManager::getInstance()->addLogger(std::make_shared<FileLogger>());
return true;
}
bool TestSuiteFixture::tearDown()
bool TestSuiteFixture::tearDownWorld()
{
LogManager::destroyInstance();
+2 -2
View File
@@ -9,8 +9,8 @@ public:
TestSuiteFixture();
virtual ~TestSuiteFixture();
virtual bool setUp();
virtual bool tearDown();
virtual bool setUpWorld();
virtual bool tearDownWorld();
};
// According to the CxxTest Documentation global fixtures are actually supposed to be implemented as global static instances