| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | from __future__ import absolute_importfrom __future__ import unicode_literalsimport loggingfrom compose import containerfrom compose.cli.errors import UserErrorfrom compose.cli.formatter import ConsoleWarningFormatterfrom compose.cli.main import build_log_printerfrom compose.cli.main import convergence_strategy_from_optsfrom compose.cli.main import setup_console_handlerfrom compose.service import ConvergenceStrategyfrom tests import mockfrom tests import unittestdef mock_container(service, number):    return mock.create_autospec(        container.Container,        service=service,        number=number,        name_without_project='{0}_{1}'.format(service, number))class CLIMainTestCase(unittest.TestCase):    def test_build_log_printer(self):        containers = [            mock_container('web', 1),            mock_container('web', 2),            mock_container('db', 1),            mock_container('other', 1),            mock_container('another', 1),        ]        service_names = ['web', 'db']        log_printer = build_log_printer(containers, service_names, True, False)        self.assertEqual(log_printer.containers, containers[:3])    def test_build_log_printer_all_services(self):        containers = [            mock_container('web', 1),            mock_container('db', 1),            mock_container('other', 1),        ]        service_names = []        log_printer = build_log_printer(containers, service_names, True, False)        self.assertEqual(log_printer.containers, containers)class SetupConsoleHandlerTestCase(unittest.TestCase):    def setUp(self):        self.stream = mock.Mock()        self.stream.isatty.return_value = True        self.handler = logging.StreamHandler(stream=self.stream)    def test_with_tty_verbose(self):        setup_console_handler(self.handler, True)        assert type(self.handler.formatter) == ConsoleWarningFormatter        assert '%(name)s' in self.handler.formatter._fmt        assert '%(funcName)s' in self.handler.formatter._fmt    def test_with_tty_not_verbose(self):        setup_console_handler(self.handler, False)        assert type(self.handler.formatter) == ConsoleWarningFormatter        assert '%(name)s' not in self.handler.formatter._fmt        assert '%(funcName)s' not in self.handler.formatter._fmt    def test_with_not_a_tty(self):        self.stream.isatty.return_value = False        setup_console_handler(self.handler, False)        assert type(self.handler.formatter) == logging.Formatterclass ConvergeStrategyFromOptsTestCase(unittest.TestCase):    def test_invalid_opts(self):        options = {'--force-recreate': True, '--no-recreate': True}        with self.assertRaises(UserError):            convergence_strategy_from_opts(options)    def test_always(self):        options = {'--force-recreate': True, '--no-recreate': False}        self.assertEqual(            convergence_strategy_from_opts(options),            ConvergenceStrategy.always        )    def test_never(self):        options = {'--force-recreate': False, '--no-recreate': True}        self.assertEqual(            convergence_strategy_from_opts(options),            ConvergenceStrategy.never        )    def test_changed(self):        options = {'--force-recreate': False, '--no-recreate': False}        self.assertEqual(            convergence_strategy_from_opts(options),            ConvergenceStrategy.changed        )
 |