Benjamin Peterson | ffa94b0 | 2009-12-29 00:06:20 +0000 | [diff] [blame] | 1 | # -*- coding: utf-8 -*- |
| 2 | import sys |
| 3 | import codecs |
Benjamin Peterson | 2591d21 | 2009-12-30 19:52:54 +0000 | [diff] [blame] | 4 | import logging |
Benjamin Peterson | ffa94b0 | 2009-12-29 00:06:20 +0000 | [diff] [blame] | 5 | import io |
| 6 | import unittest |
| 7 | |
| 8 | from lib2to3 import main |
| 9 | |
| 10 | |
| 11 | class TestMain(unittest.TestCase): |
| 12 | |
Benjamin Peterson | 2591d21 | 2009-12-30 19:52:54 +0000 | [diff] [blame] | 13 | def tearDown(self): |
| 14 | # Clean up logging configuration down by main. |
| 15 | del logging.root.handlers[:] |
| 16 | |
Benjamin Peterson | ffa94b0 | 2009-12-29 00:06:20 +0000 | [diff] [blame] | 17 | def run_2to3_capture(self, args, in_capture, out_capture, err_capture): |
| 18 | save_stdin = sys.stdin |
| 19 | save_stdout = sys.stdout |
| 20 | save_stderr = sys.stderr |
| 21 | sys.stdin = in_capture |
| 22 | sys.stdout = out_capture |
| 23 | sys.stderr = err_capture |
| 24 | try: |
| 25 | return main.main("lib2to3.fixes", args) |
| 26 | finally: |
| 27 | sys.stdin = save_stdin |
| 28 | sys.stdout = save_stdout |
| 29 | sys.stderr = save_stderr |
| 30 | |
| 31 | def test_unencodable_diff(self): |
| 32 | input_stream = io.StringIO("print 'nothing'\nprint u'über'\n") |
Benjamin Peterson | 60a9c69 | 2009-12-29 00:37:04 +0000 | [diff] [blame] | 33 | out = io.BytesIO() |
Benjamin Peterson | ffa94b0 | 2009-12-29 00:06:20 +0000 | [diff] [blame] | 34 | out_enc = codecs.getwriter("ascii")(out) |
| 35 | err = io.StringIO() |
| 36 | ret = self.run_2to3_capture(["-"], input_stream, out_enc, err) |
| 37 | self.assertEqual(ret, 0) |
Benjamin Peterson | 60a9c69 | 2009-12-29 00:37:04 +0000 | [diff] [blame] | 38 | output = out.getvalue().decode("ascii") |
Benjamin Peterson | ffa94b0 | 2009-12-29 00:06:20 +0000 | [diff] [blame] | 39 | self.assertTrue("-print 'nothing'" in output) |
| 40 | self.assertTrue("WARNING: couldn't encode <stdin>'s diff for " |
| 41 | "your terminal" in err.getvalue()) |