| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | from __future__ import unicode_literalsfrom __future__ import absolute_importimport osfrom compose.cli.log_printer import LogPrinterfrom .. import unittestclass LogPrinterTest(unittest.TestCase):    def get_default_output(self, monochrome=False):        def reader(*args, **kwargs):            yield "hello\nworld"        container = MockContainer(reader)        output = run_log_printer([container], monochrome=monochrome)        return output    def test_single_container(self):        output = self.get_default_output()        self.assertIn('hello', output)        self.assertIn('world', output)    def test_monochrome(self):        output = self.get_default_output(monochrome=True)        self.assertNotIn('\033[', output)    def test_polychrome(self):        output = self.get_default_output()        self.assertIn('\033[', output)    def test_unicode(self):        glyph = u'\u2022'.encode('utf-8')        def reader(*args, **kwargs):            yield glyph + b'\n'        container = MockContainer(reader)        output = run_log_printer([container])        self.assertIn(glyph, output)def run_log_printer(containers, monochrome=False):    r, w = os.pipe()    reader, writer = os.fdopen(r, 'r'), os.fdopen(w, 'w')    printer = LogPrinter(containers, output=writer, monochrome=monochrome)    printer.run()    writer.close()    return reader.read()class MockContainer(object):    def __init__(self, reader):        self._reader = reader    @property    def name(self):        return 'myapp_web_1'    @property    def name_without_project(self):        return 'web_1'    def attach(self, *args, **kwargs):        return self._reader()    def wait(self, *args, **kwargs):        return 0
 |