1234567891011121314151617181920212223242526272829303132333435363738 |
- """Tests for distutils.log"""
- import sys
- import unittest
- from tempfile import NamedTemporaryFile
- from test.support import run_unittest
- from distutils import log
- class TestLog(unittest.TestCase):
- def test_non_ascii(self):
- # Issue #8663: test that non-ASCII text is escaped with
- # backslashreplace error handler (stream use ASCII encoding and strict
- # error handler)
- old_stdout = sys.stdout
- old_stderr = sys.stderr
- old_threshold = log.set_threshold(log.DEBUG)
- try:
- with NamedTemporaryFile(mode="w+", encoding='ascii') as stdout, \
- NamedTemporaryFile(mode="w+", encoding='ascii') as stderr:
- sys.stdout = stdout
- sys.stderr = stderr
- log.debug("debug:\xe9")
- log.fatal("fatal:\xe9")
- stdout.seek(0)
- self.assertEqual(stdout.read().rstrip(), "debug:\\xe9")
- stderr.seek(0)
- self.assertEqual(stderr.read().rstrip(), "fatal:\\xe9")
- finally:
- log.set_threshold(old_threshold)
- sys.stdout = old_stdout
- sys.stderr = old_stderr
- def test_suite():
- return unittest.makeSuite(TestLog)
- if __name__ == "__main__":
- run_unittest(test_suite())
|