diff options
author | Tristan Maat <tristan.maat@codethink.co.uk> | 2017-09-13 11:19:17 +0100 |
---|---|---|
committer | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2017-09-14 14:36:32 -0400 |
commit | 65dcf0a5c05ea98f485cf849e2172aceb292fce9 (patch) | |
tree | 8c9f2fe11ecd3fd5566543b6bb33976acc0c9051 /tests/plugins | |
parent | 28456348c01b6c949f9e9139bc75cc2e2e3f6f08 (diff) | |
download | buildstream-65dcf0a5c05ea98f485cf849e2172aceb292fce9.tar.gz |
Add tests
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 |