1
0

log_printer_test.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from __future__ import unicode_literals
  2. from __future__ import absolute_import
  3. import os
  4. from fig.cli.log_printer import LogPrinter
  5. from .. import unittest
  6. class LogPrinterTest(unittest.TestCase):
  7. def test_single_container(self):
  8. def reader(*args, **kwargs):
  9. yield "hello\nworld"
  10. container = MockContainer(reader)
  11. output = run_log_printer([container])
  12. self.assertIn('hello', output)
  13. self.assertIn('world', output)
  14. def test_unicode(self):
  15. glyph = u'\u2022'.encode('utf-8')
  16. def reader(*args, **kwargs):
  17. yield glyph + b'\n'
  18. container = MockContainer(reader)
  19. output = run_log_printer([container])
  20. self.assertIn(glyph, output)
  21. def run_log_printer(containers):
  22. r, w = os.pipe()
  23. reader, writer = os.fdopen(r, 'r'), os.fdopen(w, 'w')
  24. printer = LogPrinter(containers, output=writer)
  25. printer.run()
  26. writer.close()
  27. return reader.read()
  28. class MockContainer(object):
  29. def __init__(self, reader):
  30. self._reader = reader
  31. @property
  32. def name(self):
  33. return 'myapp_web_1'
  34. @property
  35. def name_without_project(self):
  36. return 'web_1'
  37. def attach(self, *args, **kwargs):
  38. return self._reader()
  39. def wait(self, *args, **kwargs):
  40. return 0