output_tests.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. """Tests for cement.core.output."""
  2. import os
  3. from tempfile import mkdtemp
  4. from cement.core import exc, backend, output
  5. from cement.utils import test
  6. from cement.utils.misc import init_defaults, rando
  7. APP = rando()[:12]
  8. class TestOutputHandler(output.TemplateOutputHandler):
  9. class Meta:
  10. label = 'test_output_handler'
  11. def render(self, data, template):
  12. content = self.load_template(template)
  13. return content % data
  14. TEST_TEMPLATE = "%(foo)s"
  15. class OutputTestCase(test.CementCoreTestCase):
  16. def setUp(self):
  17. self.app = self.make_app()
  18. def test_load_template_from_file(self):
  19. tmpdir = mkdtemp()
  20. template = os.path.join(tmpdir, 'mytemplate.txt')
  21. f = open(template, 'w')
  22. f.write(TEST_TEMPLATE)
  23. f.close()
  24. app = self.make_app(APP,
  25. config_files=[],
  26. template_dir=tmpdir,
  27. output_handler=TestOutputHandler,
  28. )
  29. app.setup()
  30. app.run()
  31. self.ok(app.render(dict(foo='bar'), 'mytemplate.txt'))
  32. @test.raises(exc.FrameworkError)
  33. def test_load_template_from_bad_file(self):
  34. tmpdir = mkdtemp()
  35. template = os.path.join(tmpdir, 'my-bogus-template.txt')
  36. app = self.make_app(APP,
  37. config_files=[],
  38. template_dir=tmpdir,
  39. output_handler=TestOutputHandler,
  40. )
  41. app.setup()
  42. app.run()
  43. app.render(dict(foo='bar'), 'my-bogus-template.txt')