diff options
Diffstat (limited to 'tests/plugins')
5 files changed, 68 insertions, 0 deletions
diff --git a/tests/plugins/third_party.py b/tests/plugins/third_party.py new file mode 100644 index 000000000..b82f112fe --- /dev/null +++ b/tests/plugins/third_party.py @@ -0,0 +1,50 @@ +import os +import pytest +import pkg_resources + +from pluginbase import PluginBase +from buildstream._elementfactory import ElementFactory +from buildstream._sourcefactory import SourceFactory + +from tests.testutils.setuptools import entry_fixture + +DATA_DIR = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + 'third_party' +) + + +# Simple fixture to create a PluginBase object that +# we use for loading plugins. +@pytest.fixture() +def plugin_fixture(): + return { + 'base': PluginBase(package='buildstream.plugins') + } + + +################################################################## +# Tests # +################################################################## +# Test that external element plugin loading works. +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'third_party_element')) +def test_custom_pip_element(plugin_fixture, entry_fixture, datafiles): + factory = ElementFactory(plugin_fixture['base'], []) + assert(isinstance(factory, ElementFactory)) + + entry_fixture(datafiles, 'buildstream.plugins', 'third_party_element:foop') + + foo_type, _ = factory.lookup('third_party_element:foop') + assert(foo_type.__name__ == 'FooElement') + + +# Test that external source plugin loading works. +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'third_party_source')) +def test_custom_pip_source(plugin_fixture, entry_fixture, datafiles): + factory = SourceFactory(plugin_fixture['base'], []) + assert(isinstance(factory, SourceFactory)) + + entry_fixture(datafiles, 'buildstream.plugins', 'third_party_source:foop') + + foo_type, _ = factory.lookup('third_party_source:foop') + assert(foo_type.__name__ == 'FooSource') diff --git a/tests/plugins/third_party/third_party_element/__init__.py b/tests/plugins/third_party/third_party_element/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/plugins/third_party/third_party_element/__init__.py diff --git a/tests/plugins/third_party/third_party_element/foop.py b/tests/plugins/third_party/third_party_element/foop.py new file mode 100644 index 000000000..260de8b27 --- /dev/null +++ b/tests/plugins/third_party/third_party_element/foop.py @@ -0,0 +1,9 @@ +from buildstream import Element + + +class FooElement(Element): + pass + + +def setup(): + return FooElement diff --git a/tests/plugins/third_party/third_party_source/__init__.py b/tests/plugins/third_party/third_party_source/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/plugins/third_party/third_party_source/__init__.py diff --git a/tests/plugins/third_party/third_party_source/foop.py b/tests/plugins/third_party/third_party_source/foop.py new file mode 100644 index 000000000..de78a00ce --- /dev/null +++ b/tests/plugins/third_party/third_party_source/foop.py @@ -0,0 +1,9 @@ +from buildstream import Source + + +class FooSource(Source): + pass + + +def setup(): + return FooSource |