]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
Modified tests to redirect stderr themselves, instead of relying on an external varia...
authorLinux Karlsson <karlsson@ntp.org>
Sat, 21 Aug 2010 10:15:45 +0000 (12:15 +0200)
committerLinux Karlsson <karlsson@ntp.org>
Sat, 21 Aug 2010 10:15:45 +0000 (12:15 +0200)
bk: 4c6fa751-XfZt4zceh0D-FFSnmvuuw

tests/sntp/logFile.cpp

index 6c4d07fee606211c7a2bd345762558593e29bdc6..0d0683016b758ade5232991be2112fd1eed286e6 100644 (file)
@@ -2,6 +2,7 @@
 
 extern "C" {
 #include "log.h"
+#include <fcntl.h>
 };
 
 class logFileTest : public fileHandlingTest {
@@ -34,14 +35,26 @@ TEST_F(logFileTest, WriteDebugMessage) {
 
        std::string filename = CreatePath("log-output-debug", OUTPUT_DIR);
 
-       extern FILE** debug_log_file;
+       // Create and/or truncate the file.
        FILE* debugFile = fopen(filename.c_str(), "w");
-       debug_log_file = &debugFile;
+
+       fflush(stderr);
+
+       /* 
+        * Copy stderr's original file handle, so we can restore
+        * it later on. Then redirect stderr to our debugFile.
+        */
+       int orig = dup(fileno(stderr));
+       dup2(fileno(debugFile), fileno(stderr));
+       fclose(debugFile);
 
        debug_msg("This is a debug message");
        debug_msg("Another debug message");
 
-       fclose(debugFile);
+       // Restore the original stderr handle.
+       fflush(stderr);
+       dup2(orig, fileno(stderr));
+       close(orig);
 
        /*
         * Compare the file size, since the contents differs in the