1# -*- coding: utf-8 -*- 2from __future__ import absolute_import, unicode_literals 3 4import pytest 5from case import skip 6 7from celery.five import text_t 8from celery.utils import term 9from celery.utils.term import colored, fg 10 11 12@skip.if_win32() 13class test_colored: 14 15 @pytest.fixture(autouse=True) 16 def preserve_encoding(self, patching): 17 patching('sys.getdefaultencoding', 'utf-8') 18 19 @pytest.mark.parametrize('name,color', [ 20 ('black', term.BLACK), 21 ('red', term.RED), 22 ('green', term.GREEN), 23 ('yellow', term.YELLOW), 24 ('blue', term.BLUE), 25 ('magenta', term.MAGENTA), 26 ('cyan', term.CYAN), 27 ('white', term.WHITE), 28 ]) 29 def test_colors(self, name, color): 30 assert fg(30 + color) in str(colored().names[name]('foo')) 31 32 @pytest.mark.parametrize('name', [ 33 'bold', 'underline', 'blink', 'reverse', 'bright', 34 'ired', 'igreen', 'iyellow', 'iblue', 'imagenta', 35 'icyan', 'iwhite', 'reset', 36 ]) 37 def test_modifiers(self, name): 38 assert str(getattr(colored(), name)('f')) 39 40 def test_unicode(self): 41 assert text_t(colored().green('∂bar')) 42 assert colored().red('éefoo') + colored().green('∂bar') 43 assert colored().red('foo').no_color() == 'foo' 44 45 def test_repr(self): 46 assert repr(colored().blue('åfoo')) 47 assert "''" in repr(colored()) 48 49 def test_more_unicode(self): 50 c = colored() 51 s = c.red('foo', c.blue('bar'), c.green('baz')) 52 assert s.no_color() 53 c._fold_no_color(s, 'øfoo') 54 c._fold_no_color('fooå', s) 55 56 c = colored().red('åfoo') 57 assert c._add(c, 'baræ') == '\x1b[1;31m\xe5foo\x1b[0mbar\xe6' 58 59 c2 = colored().blue('ƒƒz') 60 c3 = c._add(c, c2) 61 assert c3 == '\x1b[1;31m\xe5foo\x1b[0m\x1b[1;34m\u0192\u0192z\x1b[0m' 62