test_term.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # -*- coding: utf-8 -*-
  2. from __future__ import absolute_import, unicode_literals
  3. import sys
  4. from celery.utils import term
  5. from celery.utils.term import colored, fg
  6. from celery.five import text_t
  7. from celery.tests.case import Case, SkipTest
  8. class test_colored(Case):
  9. def setUp(self):
  10. if sys.platform == 'win32':
  11. raise SkipTest('Colors not supported on Windows')
  12. self._prev_encoding = sys.getdefaultencoding
  13. def getdefaultencoding():
  14. return 'utf-8'
  15. sys.getdefaultencoding = getdefaultencoding
  16. def tearDown(self):
  17. sys.getdefaultencoding = self._prev_encoding
  18. def test_colors(self):
  19. colors = (
  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. for name, key in colors:
  30. self.assertIn(fg(30 + key), str(colored().names[name]('foo')))
  31. self.assertTrue(str(colored().bold('f')))
  32. self.assertTrue(str(colored().underline('f')))
  33. self.assertTrue(str(colored().blink('f')))
  34. self.assertTrue(str(colored().reverse('f')))
  35. self.assertTrue(str(colored().bright('f')))
  36. self.assertTrue(str(colored().ired('f')))
  37. self.assertTrue(str(colored().igreen('f')))
  38. self.assertTrue(str(colored().iyellow('f')))
  39. self.assertTrue(str(colored().iblue('f')))
  40. self.assertTrue(str(colored().imagenta('f')))
  41. self.assertTrue(str(colored().icyan('f')))
  42. self.assertTrue(str(colored().iwhite('f')))
  43. self.assertTrue(str(colored().reset('f')))
  44. self.assertTrue(text_t(colored().green('∂bar')))
  45. self.assertTrue(
  46. colored().red('éefoo') + colored().green('∂bar'))
  47. self.assertEqual(
  48. colored().red('foo').no_color(), 'foo')
  49. self.assertTrue(
  50. repr(colored().blue('åfoo')))
  51. self.assertIn("''", repr(colored()))
  52. c = colored()
  53. s = c.red('foo', c.blue('bar'), c.green('baz'))
  54. self.assertTrue(s.no_color())
  55. c._fold_no_color(s, 'øfoo')
  56. c._fold_no_color('fooå', s)
  57. c = colored().red('åfoo')
  58. self.assertEqual(
  59. c._add(c, 'baræ'),
  60. '\x1b[1;31m\xe5foo\x1b[0mbar\xe6',
  61. )
  62. c2 = colored().blue('ƒƒz')
  63. c3 = c._add(c, c2)
  64. self.assertEqual(
  65. c3,
  66. '\x1b[1;31m\xe5foo\x1b[0m\x1b[1;34m\u0192\u0192z\x1b[0m',
  67. )