mirror of
				https://github.com/docker/compose.git
				synced 2025-11-04 13:44:48 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import unicode_literals
 | 
						|
from __future__ import absolute_import
 | 
						|
import os
 | 
						|
 | 
						|
from compose.cli.log_printer import LogPrinter
 | 
						|
from .. import unittest
 | 
						|
 | 
						|
 | 
						|
class 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
 |