--- /dev/null
+#!/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()