# -*- 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 's diff for " "your terminal" in err.getvalue())