Log: Silence errorstream during unittests
authorkwolekr <kwolekr@minetest.net>
Fri, 12 Dec 2014 20:12:31 +0000 (15:12 -0500)
committerkwolekr <kwolekr@minetest.net>
Fri, 12 Dec 2014 20:51:55 +0000 (15:51 -0500)
src/log.cpp
src/log.h
src/test.cpp

index ff2e163333d6c85ac50c229d33ea5307e367d0b1..8ed1f7694eaff9aa909383396b9ebe95699e953c 100644 (file)
@@ -60,6 +60,21 @@ void log_remove_output(ILogOutput *out)
        }
 }
 
+void log_set_lev_silence(enum LogMessageLevel lev, bool silence)
+{
+       log_threadnamemutex.Lock();
+
+       for (std::list<ILogOutput *>::iterator
+                       it = log_outputs[lev].begin();
+                       it != log_outputs[lev].end();
+                       ++it) {
+               ILogOutput *out = *it;
+               out->silence = silence;
+       }
+
+       log_threadnamemutex.Unlock();
+}
+
 void log_register_thread(const std::string &name)
 {
        threadid_t id = get_current_thread_id();
@@ -107,6 +122,9 @@ void log_printline(enum LogMessageLevel lev, const std::string &text)
        for(std::list<ILogOutput*>::iterator i = log_outputs[lev].begin();
                        i != log_outputs[lev].end(); i++){
                ILogOutput *out = *i;
+               if (out->silence)
+                       continue;
+
                out->printLog(os.str());
                out->printLog(os.str(), lev);
                out->printLog(lev, text);
index 7d8b60b71845cb32b215f9026d8374d978107eeb..6240e34ed009ee6df24b8b4182b6c59416173a69 100644 (file)
--- a/src/log.h
+++ b/src/log.h
@@ -24,7 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 /*
        Use this for logging everything.
-       
+
        If you need to explicitly print something, use dstream or cout or cerr.
 */
 
@@ -39,18 +39,25 @@ enum LogMessageLevel {
 class ILogOutput
 {
 public:
+       ILogOutput() :
+               silence(false)
+       {}
+
        /* line: Full line with timestamp, level and thread */
        virtual void printLog(const std::string &line){};
        /* line: Full line with timestamp, level and thread */
        virtual void printLog(const std::string &line, enum LogMessageLevel lev){};
        /* line: Only actual printed text */
        virtual void printLog(enum LogMessageLevel lev, const std::string &line){};
+
+       bool silence;
 };
 
 void log_add_output(ILogOutput *out, enum LogMessageLevel lev);
 void log_add_output_maxlev(ILogOutput *out, enum LogMessageLevel lev);
 void log_add_output_all_levs(ILogOutput *out);
 void log_remove_output(ILogOutput *out);
+void log_set_lev_silence(enum LogMessageLevel lev, bool silence);
 
 void log_register_thread(const std::string &name);
 void log_deregister_thread();
index 072bda8ef79ab63bd5abae70662328667918db68..fa18989e5dd1b5745cb59945b056f4d58fca9378 100644 (file)
@@ -2177,6 +2177,8 @@ void run_tests()
        IWritableNodeDefManager *ndef = createNodeDefManager();
        define_some_nodes(idef, ndef);
 
+       log_set_lev_silence(LMT_ERROR, true);
+
        infostream<<"run_tests() started"<<std::endl;
        TEST(TestUtilities);
        TEST(TestPath);
@@ -2198,6 +2200,8 @@ void run_tests()
                dout_con<<"=== END RUNNING UNIT TESTS FOR CONNECTION ==="<<std::endl;
        }
 
+       log_set_lev_silence(LMT_ERROR, false);
+
        delete idef;
        delete ndef;