| # -*- coding: utf-8 -*- |
| import sys |
| import codecs |
| import logging |
| import io |
| import unittest |
| |
| from lib2to3 import main |
| |
| |
| class TestMain(unittest.TestCase): |
| |
| def tearDown(self): |
| # Clean up logging configuration down by main. |
| del logging.root.handlers[:] |
| |
| def run_2to3_capture(self, args, in_capture, out_capture, err_capture): |
| save_stdin = sys.stdin |
| save_stdout = sys.stdout |
| save_stderr = sys.stderr |
| sys.stdin = in_capture |
| sys.stdout = out_capture |
| sys.stderr = err_capture |
| try: |
| return main.main("lib2to3.fixes", args) |
| finally: |
| sys.stdin = save_stdin |
| sys.stdout = save_stdout |
| sys.stderr = save_stderr |
| |
| def test_unencodable_diff(self): |
| input_stream = io.StringIO("print 'nothing'\nprint u'über'\n") |
| out = io.BytesIO() |
| out_enc = codecs.getwriter("ascii")(out) |
| err = io.StringIO() |
| ret = self.run_2to3_capture(["-"], input_stream, out_enc, err) |
| self.assertEqual(ret, 0) |
| output = out.getvalue().decode("ascii") |
| self.assertTrue("-print 'nothing'" in output) |
| self.assertTrue("WARNING: couldn't encode <stdin>'s diff for " |
| "your terminal" in err.getvalue()) |