summaryrefslogtreecommitdiff
path: root/tests/logging_utils_test.py
blob: 48e5015f12f1f0af1595c3e1aa026bdcb9236123 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/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()