test_log.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. """Tests for distutils.log"""
  2. import sys
  3. import unittest
  4. from tempfile import NamedTemporaryFile
  5. from test.support import run_unittest
  6. from distutils import log
  7. class TestLog(unittest.TestCase):
  8. def test_non_ascii(self):
  9. # Issue #8663: test that non-ASCII text is escaped with
  10. # backslashreplace error handler (stream use ASCII encoding and strict
  11. # error handler)
  12. old_stdout = sys.stdout
  13. old_stderr = sys.stderr
  14. old_threshold = log.set_threshold(log.DEBUG)
  15. try:
  16. with NamedTemporaryFile(mode="w+", encoding='ascii') as stdout, \
  17. NamedTemporaryFile(mode="w+", encoding='ascii') as stderr:
  18. sys.stdout = stdout
  19. sys.stderr = stderr
  20. log.debug("debug:\xe9")
  21. log.fatal("fatal:\xe9")
  22. stdout.seek(0)
  23. self.assertEqual(stdout.read().rstrip(), "debug:\\xe9")
  24. stderr.seek(0)
  25. self.assertEqual(stderr.read().rstrip(), "fatal:\\xe9")
  26. finally:
  27. log.set_threshold(old_threshold)
  28. sys.stdout = old_stdout
  29. sys.stderr = old_stderr
  30. def test_suite():
  31. return unittest.makeSuite(TestLog)
  32. if __name__ == "__main__":
  33. run_unittest(test_suite())