#!/usr/bin/env python3 import contextlib import tempfile import unittest import bootstrap import logging_utils as lutils import string_utils as sutils class TestLoggingUtils(unittest.TestCase): def test_output_context(self): unique_suffix = sutils.generate_uuid(True) filename = f'/tmp/logging_utils_test.{unique_suffix}' secret_message = f'This is a test, {unique_suffix}.' with tempfile.SpooledTemporaryFile(mode='r+') as tmpfile1: with tempfile.SpooledTemporaryFile(mode='r+') as tmpfile2: with contextlib.redirect_stdout(tmpfile1): with lutils.OutputContext( lutils.OutputMultiplexer.Destination.FILENAME | lutils.OutputMultiplexer.Destination.FILEHANDLE | lutils.OutputMultiplexer.Destination.STDOUT, filename = filename, handle = tmpfile2, ) as mplex: mplex.print(secret_message, end='') with open(filename, 'r') as rf: self.assertEqual(rf.readline(), secret_message) tmpfile2.seek(0) tmp = tmpfile2.readline() self.assertEqual(tmp, secret_message) tmpfile1.seek(0) tmp = tmpfile1.readline() self.assertEqual(tmp, secret_message) if __name__ == '__main__': unittest.main = bootstrap.initialize(unittest.main) unittest.main()