|
@@ -0,0 +1,108 @@
|
|
|
+# some tests have been taking from
|
|
|
+# https://github.com/pytest-dev/pluggy/blob/master/testing/test_pluginmanager.py
|
|
|
+# and are licensed under the MIT License.
|
|
|
+import pytest
|
|
|
+
|
|
|
+
|
|
|
+def test_pluginmanager(plugin_manager):
|
|
|
+ """Tests basic pluggy plugin registration."""
|
|
|
+ class A(object):
|
|
|
+ pass
|
|
|
+
|
|
|
+ a1, a2 = A(), A()
|
|
|
+ plugin_manager.register(a1)
|
|
|
+ assert plugin_manager.is_registered(a1)
|
|
|
+ plugin_manager.register(a2, "hello")
|
|
|
+ assert plugin_manager.is_registered(a2)
|
|
|
+
|
|
|
+ with pytest.raises(ValueError):
|
|
|
+ assert plugin_manager.register(a1, internal=True)
|
|
|
+
|
|
|
+ out = plugin_manager.get_plugins()
|
|
|
+ assert a1 in out
|
|
|
+ assert a2 in out
|
|
|
+ assert plugin_manager.get_plugin('hello') == a2
|
|
|
+ assert plugin_manager.unregister(a1) == a1
|
|
|
+ assert not plugin_manager.is_registered(a1)
|
|
|
+
|
|
|
+ out = plugin_manager.list_name_plugin()
|
|
|
+ assert len(out) == 1
|
|
|
+ assert out == [("hello", a2)]
|
|
|
+ assert plugin_manager.list_name() == ["hello"]
|
|
|
+
|
|
|
+
|
|
|
+def test_register_internal(plugin_manager):
|
|
|
+ """Tests registration of internal flaskbb plugins."""
|
|
|
+ class A(object):
|
|
|
+ pass
|
|
|
+
|
|
|
+ a1, a2 = A(), A()
|
|
|
+ plugin_manager.register(a1, "notinternal")
|
|
|
+ plugin_manager.register(a2, "internal", internal=True)
|
|
|
+ assert plugin_manager.is_registered(a2)
|
|
|
+
|
|
|
+ out = plugin_manager.list_name_plugin()
|
|
|
+ assert ('notinternal', a1) in out
|
|
|
+ assert ('internal', a2) not in out
|
|
|
+
|
|
|
+ out_internal = plugin_manager.list_internal_name_plugin()
|
|
|
+ assert ('notinternal', a1) not in out_internal
|
|
|
+ assert ('internal', a2) in out_internal
|
|
|
+
|
|
|
+ assert plugin_manager.unregister(a2) == a2
|
|
|
+ assert not plugin_manager.list_internal_name_plugin() # should be empty
|
|
|
+
|
|
|
+
|
|
|
+def test_set_blocked(plugin_manager):
|
|
|
+ class A(object):
|
|
|
+ pass
|
|
|
+
|
|
|
+ a1 = A()
|
|
|
+ name = plugin_manager.register(a1)
|
|
|
+ assert plugin_manager.is_registered(a1)
|
|
|
+ assert not plugin_manager.is_blocked(name)
|
|
|
+ plugin_manager.set_blocked(name)
|
|
|
+ assert plugin_manager.is_blocked(name)
|
|
|
+ assert not plugin_manager.is_registered(a1)
|
|
|
+
|
|
|
+ plugin_manager.set_blocked("somename")
|
|
|
+ assert plugin_manager.is_blocked("somename")
|
|
|
+ assert not plugin_manager.register(A(), "somename")
|
|
|
+ plugin_manager.unregister(name="somename")
|
|
|
+ assert plugin_manager.is_blocked("somename")
|
|
|
+
|
|
|
+
|
|
|
+def test_set_blocked_internal(plugin_manager):
|
|
|
+ class A(object):
|
|
|
+ pass
|
|
|
+
|
|
|
+ a1 = A()
|
|
|
+ name = plugin_manager.register(a1, internal=True)
|
|
|
+ assert plugin_manager.is_registered(a1)
|
|
|
+ assert not plugin_manager.is_blocked(name)
|
|
|
+ plugin_manager.set_blocked(name)
|
|
|
+ assert plugin_manager.is_blocked(name)
|
|
|
+ assert not plugin_manager.is_registered(a1)
|
|
|
+
|
|
|
+
|
|
|
+def test_get_internal_plugin(plugin_manager):
|
|
|
+ class A(object):
|
|
|
+ pass
|
|
|
+
|
|
|
+ a1, a2 = A(), A()
|
|
|
+ plugin_manager.register(a1, "notinternal")
|
|
|
+ plugin_manager.register(a2, "internal", internal=True)
|
|
|
+ assert plugin_manager.get_plugin('notinternal') == a1
|
|
|
+ assert plugin_manager.get_plugin('internal') == a2
|
|
|
+
|
|
|
+
|
|
|
+def test_get_internal_name(plugin_manager):
|
|
|
+ class A(object):
|
|
|
+ pass
|
|
|
+
|
|
|
+ a1, a2 = A(), A()
|
|
|
+ plugin_manager.register(a1, "notinternal")
|
|
|
+ plugin_manager.register(a2, "internal", internal=True)
|
|
|
+
|
|
|
+ assert plugin_manager.get_name(a1) == "notinternal"
|
|
|
+ assert plugin_manager.get_name(a2) == "internal"
|