test_pluginmanager.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. # some tests have been taking from
  2. # https://github.com/pytest-dev/pluggy/blob/master/testing/test_pluginmanager.py
  3. # and are licensed under the MIT License.
  4. import pytest
  5. def test_pluginmanager(plugin_manager):
  6. """Tests basic pluggy plugin registration."""
  7. class A(object):
  8. pass
  9. a1, a2 = A(), A()
  10. plugin_manager.register(a1)
  11. assert plugin_manager.is_registered(a1)
  12. plugin_manager.register(a2, "hello")
  13. assert plugin_manager.is_registered(a2)
  14. with pytest.raises(ValueError):
  15. assert plugin_manager.register(a1, internal=True)
  16. out = plugin_manager.get_plugins()
  17. assert a1 in out
  18. assert a2 in out
  19. assert plugin_manager.get_plugin('hello') == a2
  20. assert plugin_manager.unregister(a1) == a1
  21. assert not plugin_manager.is_registered(a1)
  22. out = plugin_manager.list_name_plugin()
  23. assert len(out) == 1
  24. assert out == [("hello", a2)]
  25. assert plugin_manager.list_name() == ["hello"]
  26. def test_register_internal(plugin_manager):
  27. """Tests registration of internal flaskbb plugins."""
  28. class A(object):
  29. pass
  30. a1, a2 = A(), A()
  31. plugin_manager.register(a1, "notinternal")
  32. plugin_manager.register(a2, "internal", internal=True)
  33. assert plugin_manager.is_registered(a2)
  34. out = plugin_manager.list_name_plugin()
  35. assert ('notinternal', a1) in out
  36. assert ('internal', a2) not in out
  37. out_internal = plugin_manager.list_internal_name_plugin()
  38. assert ('notinternal', a1) not in out_internal
  39. assert ('internal', a2) in out_internal
  40. assert plugin_manager.unregister(a2) == a2
  41. assert not plugin_manager.list_internal_name_plugin() # should be empty
  42. def test_set_blocked(plugin_manager):
  43. class A(object):
  44. pass
  45. a1 = A()
  46. name = plugin_manager.register(a1)
  47. assert plugin_manager.is_registered(a1)
  48. assert not plugin_manager.is_blocked(name)
  49. plugin_manager.set_blocked(name)
  50. assert plugin_manager.is_blocked(name)
  51. assert not plugin_manager.is_registered(a1)
  52. plugin_manager.set_blocked("somename")
  53. assert plugin_manager.is_blocked("somename")
  54. assert not plugin_manager.register(A(), "somename")
  55. plugin_manager.unregister(name="somename")
  56. assert plugin_manager.is_blocked("somename")
  57. def test_set_blocked_internal(plugin_manager):
  58. class A(object):
  59. pass
  60. a1 = A()
  61. name = plugin_manager.register(a1, internal=True)
  62. assert plugin_manager.is_registered(a1)
  63. assert not plugin_manager.is_blocked(name)
  64. plugin_manager.set_blocked(name)
  65. assert plugin_manager.is_blocked(name)
  66. assert not plugin_manager.is_registered(a1)
  67. def test_get_internal_plugin(plugin_manager):
  68. class A(object):
  69. pass
  70. a1, a2 = A(), A()
  71. plugin_manager.register(a1, "notinternal")
  72. plugin_manager.register(a2, "internal", internal=True)
  73. assert plugin_manager.get_plugin('notinternal') == a1
  74. assert plugin_manager.get_plugin('internal') == a2
  75. def test_get_internal_name(plugin_manager):
  76. class A(object):
  77. pass
  78. a1, a2 = A(), A()
  79. plugin_manager.register(a1, "notinternal")
  80. plugin_manager.register(a2, "internal", internal=True)
  81. assert plugin_manager.get_name(a1) == "notinternal"
  82. assert plugin_manager.get_name(a2) == "internal"