Gui: test for ILoggerBlocker

This commit is contained in:
0penBrain
2022-06-21 16:26:53 +02:00
committed by wwmayer
parent 95a98669a4
commit 5dcd27df93
2 changed files with 92 additions and 0 deletions

View File

@@ -101,6 +101,11 @@ class ConsoleTestCase(unittest.TestCase):
def tearDown(self):
pass
def testILoggerBlocker(self):
if FreeCAD.GuiUp:
import QtUnitGui
QtUnitGui.testILoggerBlocker()
class ParameterTestCase(unittest.TestCase):
def setUp(self):
self.TestPar = FreeCAD.ParamGet("System parameter:Test")

View File

@@ -27,8 +27,87 @@
#include <Gui/Language/Translator.h>
#include <Base/Console.h>
#include <Base/ConsoleObserver.h>
#include <Base/Interpreter.h>
class ILoggerBlockerTest : public Base::ILogger
{
public:
virtual ~ILoggerBlockerTest() {Base::Console().DetachObserver(this);}
virtual const char *Name() {return "ILoggerBlockerTest";}
void flush() {buffer.str("");buffer.clear();}
void SendLog(const std::string& msg, Base::LogStyle level){
(void) msg;
switch(level){
case Base::LogStyle::Warning:
buffer << "WRN";
break;
case Base::LogStyle::Message:
buffer << "MSG";
break;
case Base::LogStyle::Error:
buffer << "ERR";
break;
case Base::LogStyle::Log:
buffer << "LOG";
break;
}
}
void runSingleTest(const char* comment, std::string expectedResult) {
Base::Console().Log(comment);
flush();
Base::Console().Log("LOG");
Base::Console().Message("MSG");
Base::Console().Warning("WRN");
Base::Console().Error("ERR");
if (buffer.str() != expectedResult)
throw Py::RuntimeError("ILoggerTest: " + buffer.str() + " different from " + expectedResult);
};
void runTest()
{
runSingleTest("Print all message types", "LOGMSGWRNERR");
{
Base::ILoggerBlocker blocker("ILoggerBlockerTest");
runSingleTest("All types blocked", "");
}
runSingleTest("Print all", "LOGMSGWRNERR");
{
Base::ILoggerBlocker blocker("ILoggerBlockerTest", Base::ConsoleSingleton::MsgType_Err | Base::ConsoleSingleton::MsgType_Wrn);
runSingleTest("Error & Warning blocked", "LOGMSG");
}
runSingleTest("Print all", "LOGMSGWRNERR");
{
Base::ILoggerBlocker blocker("ILoggerBlockerTest", Base::ConsoleSingleton::MsgType_Log | Base::ConsoleSingleton::MsgType_Txt);
runSingleTest("Log & Message blocked", "WRNERR");
}
runSingleTest("Print all", "LOGMSGWRNERR");
{
Base::ILoggerBlocker blocker("ILoggerBlockerTest", Base::ConsoleSingleton::MsgType_Err);
runSingleTest("Nested : Error blocked", "LOGMSGWRN");
{
Base::ILoggerBlocker blocker2("ILoggerBlockerTest", Base::ConsoleSingleton::MsgType_Err | Base::ConsoleSingleton::MsgType_Wrn);
runSingleTest("Nested : Warning blocked + Error (from nesting) + Error (redundancy)", "LOGMSG");
}
runSingleTest("Nested : Error still blocked", "LOGMSGWRN");
}
runSingleTest("Print all", "LOGMSGWRNERR");
{
Base::ILoggerBlocker blocker("ILoggerBlockerTest");
Base::Console().SetEnabledMsgType("ILoggerBlockerTest", Base::ConsoleSingleton::MsgType_Log, true);
runSingleTest("Log is enabled but a warning is triggered in debug mode", "LOG");
}
runSingleTest("Print all", "LOGMSGWRNERR");
};
private:
std::ostringstream buffer;
};
namespace TestGui {
class Module : public Py::ExtensionModule<Module>
@@ -41,6 +120,7 @@ public:
add_varargs_method("UnitTest",&Module::new_UnitTest,"UnitTest");
add_varargs_method("setTest",&Module::setTest,"setTest");
add_varargs_method("addTest",&Module::addTest,"addTest");
add_varargs_method("testILoggerBlocker",&Module::testILoggerBlocker,"testILoggerBlocker");
initialize("This module is the QtUnitGui module"); // register with Python
}
@@ -79,6 +159,13 @@ private:
dlg->raise();
return Py::None();
}
Py::Object testILoggerBlocker(const Py::Tuple& args) {
(void) args;
ILoggerBlockerTest iltest;
Base::Console().AttachObserver(static_cast<Base::ILogger *>(&iltest));
iltest.runTest();
return Py::None();
}
};
PyObject* initModule()