test_term.py 1.8 KB

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