blob: ce66ee51e7c177dfc562c469f3e09d9ee59093c0 [file] [log] [blame]
Victor Stinner5b08b4d2010-05-19 17:15:50 +00001"""Tests for distutils.log"""
2
3import sys
4import unittest
5from tempfile import NamedTemporaryFile
Éric Araujo70ec44a2010-11-06 02:44:43 +00006from test.support import run_unittest
Victor Stinner5b08b4d2010-05-19 17:15:50 +00007
8from distutils import log
9
10class TestLog(unittest.TestCase):
11 def test_non_ascii(self):
12 # Issue #8663: test that non-ASCII text is escaped with
13 # backslashreplace error handler (stream use ASCII encoding and strict
14 # error handler)
15 old_stdout = sys.stdout
16 old_stderr = sys.stderr
17 try:
18 log.set_threshold(log.DEBUG)
19 with NamedTemporaryFile(mode="w+", encoding='ascii') as stdout, \
20 NamedTemporaryFile(mode="w+", encoding='ascii') as stderr:
21 sys.stdout = stdout
22 sys.stderr = stderr
23 log.debug("debug:\xe9")
24 log.fatal("fatal:\xe9")
25 stdout.seek(0)
Ezio Melottib3aedd42010-11-20 19:04:17 +000026 self.assertEqual(stdout.read().rstrip(), "debug:\\xe9")
Victor Stinner5b08b4d2010-05-19 17:15:50 +000027 stderr.seek(0)
Ezio Melottib3aedd42010-11-20 19:04:17 +000028 self.assertEqual(stderr.read().rstrip(), "fatal:\\xe9")
Victor Stinner5b08b4d2010-05-19 17:15:50 +000029 finally:
30 sys.stdout = old_stdout
31 sys.stderr = old_stderr
32
33def test_suite():
34 return unittest.makeSuite(TestLog)
35
36if __name__ == "__main__":
Éric Araujo70ec44a2010-11-06 02:44:43 +000037 run_unittest(test_suite())