extension_tests.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. """Tests for cement.core.extension."""
  2. from cement.core import exc, backend, extension, handler, output, interface
  3. from cement.utils import test
  4. class IBogus(interface.Interface):
  5. class IMeta:
  6. label = 'bogus'
  7. class BogusExtensionHandler(extension.CementExtensionHandler):
  8. class Meta:
  9. interface = IBogus
  10. label = 'bogus'
  11. class ExtensionTestCase(test.CementCoreTestCase):
  12. @test.raises(exc.FrameworkError)
  13. def test_invalid_extension_handler(self):
  14. # the handler type bogus doesn't exist
  15. handler.register(BogusExtensionHandler)
  16. def test_load_extensions(self):
  17. ext = extension.CementExtensionHandler()
  18. ext._setup(self.app)
  19. ext.load_extensions(['cement.ext.ext_configparser'])
  20. def test_load_extensions_again(self):
  21. ext = extension.CementExtensionHandler()
  22. ext._setup(self.app)
  23. ext.load_extensions(['cement.ext.ext_configparser'])
  24. ext.load_extensions(['cement.ext.ext_configparser'])
  25. @test.raises(exc.FrameworkError)
  26. def test_load_bogus_extension(self):
  27. ext = extension.CementExtensionHandler()
  28. ext._setup(self.app)
  29. ext.load_extensions(['bogus'])
  30. def test_get_loaded_extensions(self):
  31. ext = extension.CementExtensionHandler()
  32. ext._setup(self.app)
  33. res = 'cement.ext.ext_json' not in ext.get_loaded_extensions()
  34. self.ok(res)
  35. ext.load_extensions(['json'])
  36. res = 'cement.ext.ext_json' in ext.get_loaded_extensions()
  37. self.ok(res)