Add plugin support
authorKarl O. Pinc <kop@karlpinc.com>
Sat, 27 Jun 2020 23:02:44 +0000 (18:02 -0500)
committerKarl O. Pinc <kop@karlpinc.com>
Sat, 27 Jun 2020 23:02:44 +0000 (18:02 -0500)
src/pgwui_common/plugin.py [new file with mode: 0644]
tests/test_plugin.py [new file with mode: 0644]

diff --git a/src/pgwui_common/plugin.py b/src/pgwui_common/plugin.py
new file mode 100644 (file)
index 0000000..4577223
--- /dev/null
@@ -0,0 +1,32 @@
+# Copyright (C) 2020 The Meme Factory, Inc.  http://www.karlpinc.com/
+
+# This file is part of PGWUI_Common.
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public
+# License along with this program.  If not, see
+# <http://www.gnu.org/licenses/>.
+#
+
+# Karl O. Pinc <kop@karlpinc.com>
+
+'''Plugin support library for PGWUI
+'''
+
+import pkg_resources
+
+
+def find_pgwui_components():
+    '''Return list of all pgwui component names as strings
+    '''
+    return [entry_point.resolve().__name__ for entry_point in
+            pkg_resources.iter_entry_points('pgwui.components')]
diff --git a/tests/test_plugin.py b/tests/test_plugin.py
new file mode 100644 (file)
index 0000000..4ddc91f
--- /dev/null
@@ -0,0 +1,48 @@
+# Copyright (C) 2020 The Meme Factory, Inc.  http://www.karlpinc.com/
+
+# This file is part of PGWUI_Common.
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public
+# License along with this program.  If not, see
+# <http://www.gnu.org/licenses/>.
+#
+
+# Karl O. Pinc <kop@karlpinc.com>
+
+from pgwui_common import plugin
+
+
+# find_pgwui_components()
+
+def test_find_pgwui_components(monkeypatch):
+    '''Returns list of entry points via iter_entry_points()
+    '''
+    entry_points = ['a', 'b', 'c']
+
+    class MockEntryPoint():
+        def __init__(self, val):
+            self.__name__ = val
+
+        def resolve(self):
+            return self
+
+    class MockPkgResources():
+        def iter_entry_points(*args):
+            return [MockEntryPoint(name) for name in entry_points]
+
+    monkeypatch.setattr(
+        plugin, 'pkg_resources', MockPkgResources())
+
+    result = plugin.find_pgwui_components()
+
+    assert result == entry_points