diff options
author | Jonathan Maw <jonathan.maw@codethink.co.uk> | 2017-11-24 15:34:50 +0000 |
---|---|---|
committer | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2017-12-13 13:17:28 -0500 |
commit | 1171e1fb871e82292fad22830b62b69ab388ea07 (patch) | |
tree | c0c044ad3417e4a94dda7d0bf8460443ca412dc7 /tests/plugins | |
parent | 4912ed5f8922b47c1a16c3752eb92a3f1dea76b2 (diff) | |
download | buildstream-1171e1fb871e82292fad22830b62b69ab388ea07.tar.gz |
Update tests for changed plugin loading
Checking for plugins with the same name no longer happens in the
plugincontext, it happens in project, so the old test was removed and a
new one added.
Diffstat (limited to 'tests/plugins')
-rw-r--r-- | tests/plugins/basics.py | 188 | ||||
-rw-r--r-- | tests/plugins/pipeline/badversionelement/project.conf | 13 | ||||
-rw-r--r-- | tests/plugins/pipeline/badversionsource/project.conf | 11 | ||||
-rw-r--r-- | tests/plugins/pipeline/customelement/project.conf | 6 | ||||
-rw-r--r-- | tests/plugins/pipeline/customsource/project.conf | 6 | ||||
-rw-r--r-- | tests/plugins/third_party.py | 18 |
6 files changed, 143 insertions, 99 deletions
diff --git a/tests/plugins/basics.py b/tests/plugins/basics.py index 993d87cec..740a20c66 100644 --- a/tests/plugins/basics.py +++ b/tests/plugins/basics.py @@ -43,9 +43,13 @@ def test_element_factory(plugin_fixture): ############################################################## @pytest.mark.datafiles(os.path.join(DATA_DIR, 'customsource')) def test_custom_source(plugin_fixture, datafiles): - factory = SourceFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = SourceFactory(plugin_fixture['base'], plugins) assert(isinstance(factory, SourceFactory)) foo_type, _ = factory.lookup('foo') @@ -54,9 +58,13 @@ def test_custom_source(plugin_fixture, datafiles): @pytest.mark.datafiles(os.path.join(DATA_DIR, 'customelement')) def test_custom_element(plugin_fixture, datafiles): - factory = ElementFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = ElementFactory(plugin_fixture['base'], plugins) assert(isinstance(factory, ElementFactory)) foo_type, _ = factory.lookup('foo') @@ -84,40 +92,16 @@ def test_missing_element(plugin_fixture): foo_type = factory.lookup('foo') -# Load one factory with 2 plugin directories both containing a foo plugin -@pytest.mark.datafiles(DATA_DIR) -def test_conflict_source(plugin_fixture, datafiles): - plugins1 = os.path.join(datafiles.dirname, - datafiles.basename, - 'customsource') - plugins2 = os.path.join(datafiles.dirname, - datafiles.basename, - 'anothersource') - - with pytest.raises(PluginError) as exc: - factory = SourceFactory(plugin_fixture['base'], [plugins1, plugins2]) - - -# Load one factory with 2 plugin directories both containing a foo plugin -@pytest.mark.datafiles(DATA_DIR) -def test_conflict_element(plugin_fixture, datafiles): - plugins1 = os.path.join(datafiles.dirname, - datafiles.basename, - 'customelement') - plugins2 = os.path.join(datafiles.dirname, - datafiles.basename, - 'anotherelement') - - with pytest.raises(PluginError) as exc: - factory = ElementFactory(plugin_fixture['base'], [plugins1, plugins2]) - - # Load a factory with a plugin that returns a value instead of Source subclass @pytest.mark.datafiles(os.path.join(DATA_DIR, 'notatype')) def test_source_notatype(plugin_fixture, datafiles): - factory = SourceFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = SourceFactory(plugin_fixture['base'], plugins) with pytest.raises(PluginError) as exc: foo_type = factory.lookup('foo') @@ -125,9 +109,13 @@ def test_source_notatype(plugin_fixture, datafiles): # Load a factory with a plugin that returns a value instead of Element subclass @pytest.mark.datafiles(os.path.join(DATA_DIR, 'notatype')) def test_element_notatype(plugin_fixture, datafiles): - factory = ElementFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = ElementFactory(plugin_fixture['base'], plugins) with pytest.raises(PluginError) as exc: foo_type = factory.lookup('foo') @@ -136,9 +124,13 @@ def test_element_notatype(plugin_fixture, datafiles): # which is not a Source subclass @pytest.mark.datafiles(os.path.join(DATA_DIR, 'wrongtype')) def test_source_wrongtype(plugin_fixture, datafiles): - factory = SourceFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = SourceFactory(plugin_fixture['base'], plugins) with pytest.raises(PluginError) as exc: foo_type = factory.lookup('foo') @@ -147,9 +139,13 @@ def test_source_wrongtype(plugin_fixture, datafiles): # which is not a Element subclass @pytest.mark.datafiles(os.path.join(DATA_DIR, 'wrongtype')) def test_element_wrongtype(plugin_fixture, datafiles): - factory = ElementFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = ElementFactory(plugin_fixture['base'], plugins) with pytest.raises(PluginError) as exc: foo_type = factory.lookup('foo') @@ -157,9 +153,13 @@ def test_element_wrongtype(plugin_fixture, datafiles): # Load a factory with a plugin which fails to provide a setup() function @pytest.mark.datafiles(os.path.join(DATA_DIR, 'nosetup')) def test_source_missing_setup(plugin_fixture, datafiles): - factory = SourceFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = SourceFactory(plugin_fixture['base'], plugins) with pytest.raises(PluginError) as exc: foo_type = factory.lookup('foo') @@ -167,9 +167,13 @@ def test_source_missing_setup(plugin_fixture, datafiles): # Load a factory with a plugin which fails to provide a setup() function @pytest.mark.datafiles(os.path.join(DATA_DIR, 'nosetup')) def test_element_missing_setup(plugin_fixture, datafiles): - factory = ElementFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = ElementFactory(plugin_fixture['base'], plugins) with pytest.raises(PluginError) as exc: foo_type = factory.lookup('foo') @@ -178,9 +182,13 @@ def test_element_missing_setup(plugin_fixture, datafiles): # that is not a function @pytest.mark.datafiles(os.path.join(DATA_DIR, 'badsetup')) def test_source_bad_setup(plugin_fixture, datafiles): - factory = SourceFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = SourceFactory(plugin_fixture['base'], plugins) with pytest.raises(PluginError) as exc: foo_type = factory.lookup('foo') @@ -189,9 +197,13 @@ def test_source_bad_setup(plugin_fixture, datafiles): # that is not a function @pytest.mark.datafiles(os.path.join(DATA_DIR, 'badsetup')) def test_element_bad_setup(plugin_fixture, datafiles): - factory = ElementFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = ElementFactory(plugin_fixture['base'], plugins) with pytest.raises(PluginError) as exc: foo_type = factory.lookup('foo') @@ -200,9 +212,13 @@ def test_element_bad_setup(plugin_fixture, datafiles): # high version of buildstream @pytest.mark.datafiles(os.path.join(DATA_DIR, 'badversionsource')) def test_source_badversion(plugin_fixture, datafiles): - factory = SourceFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = SourceFactory(plugin_fixture['base'], plugins) with pytest.raises(PluginError) as exc: foo_type = factory.lookup('foo') @@ -211,9 +227,13 @@ def test_source_badversion(plugin_fixture, datafiles): # high version of buildstream @pytest.mark.datafiles(os.path.join(DATA_DIR, 'badversionelement')) def test_element_badversion(plugin_fixture, datafiles): - factory = ElementFactory(plugin_fixture['base'], - [os.path.join(datafiles.dirname, - datafiles.basename)]) + plugins = [{ + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename), + 'plugins': {'foo': 0} + }] + factory = ElementFactory(plugin_fixture['base'], plugins) with pytest.raises(PluginError) as exc: foo_type = factory.lookup('foo') @@ -225,12 +245,20 @@ def test_element_badversion(plugin_fixture, datafiles): # Load two factories, both of which define a different 'foo' plugin @pytest.mark.datafiles(DATA_DIR) def test_source_multicontext(plugin_fixture, datafiles): - plugins1 = os.path.join(datafiles.dirname, - datafiles.basename, - 'customsource') - plugins2 = os.path.join(datafiles.dirname, - datafiles.basename, - 'anothersource') + plugins1 = { + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename, + 'customsource'), + 'plugins': {'foo': 0} + } + plugins2 = { + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename, + 'anothersource'), + 'plugins': {'foo': 0} + } factory1 = SourceFactory(plugin_fixture['base'], [plugins1]) factory2 = SourceFactory(plugin_fixture['base'], [plugins2]) @@ -246,12 +274,20 @@ def test_source_multicontext(plugin_fixture, datafiles): # Load two factories, both of which define a different 'foo' plugin @pytest.mark.datafiles(DATA_DIR) def test_element_multicontext(plugin_fixture, datafiles): - plugins1 = os.path.join(datafiles.dirname, - datafiles.basename, - 'customelement') - plugins2 = os.path.join(datafiles.dirname, - datafiles.basename, - 'anotherelement') + plugins1 = { + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename, + 'customelement'), + 'plugins': {'foo': 0} + } + plugins2 = { + 'origin': 'local', + 'path': os.path.join(datafiles.dirname, + datafiles.basename, + 'anotherelement'), + 'plugins': {'foo': 0} + } factory1 = ElementFactory(plugin_fixture['base'], [plugins1]) factory2 = ElementFactory(plugin_fixture['base'], [plugins2]) diff --git a/tests/plugins/pipeline/badversionelement/project.conf b/tests/plugins/pipeline/badversionelement/project.conf index 66d0f5549..4f32752c3 100644 --- a/tests/plugins/pipeline/badversionelement/project.conf +++ b/tests/plugins/pipeline/badversionelement/project.conf @@ -1,12 +1,9 @@ name: pony element-path: elements -required-versions: - - # We provided bar at version 5, should be a conflict. - sources: - foo: 10 - plugins: - sources: - - customelements +- origin: local + path: customelements + elements: + # We provided bar at version 5, should be a conflict. + foo: 10 diff --git a/tests/plugins/pipeline/badversionsource/project.conf b/tests/plugins/pipeline/badversionsource/project.conf index 2925989d1..58cf9c577 100644 --- a/tests/plugins/pipeline/badversionsource/project.conf +++ b/tests/plugins/pipeline/badversionsource/project.conf @@ -1,12 +1,9 @@ name: pony element-path: elements -required-versions: - - # We provided bar at version 5, should be a conflict. +plugins: +- origin: local + path: customsources sources: + # We provided bar at version 5, should be a conflict. foo: 10 - -plugins: - sources: - - customsources diff --git a/tests/plugins/pipeline/customelement/project.conf b/tests/plugins/pipeline/customelement/project.conf index fa80eea01..bdc909985 100644 --- a/tests/plugins/pipeline/customelement/project.conf +++ b/tests/plugins/pipeline/customelement/project.conf @@ -1,5 +1,7 @@ name: pony element-path: elements plugins: - elements: - - pluginelements +- origin: local + path: pluginelements + elements: + foo: 0 diff --git a/tests/plugins/pipeline/customsource/project.conf b/tests/plugins/pipeline/customsource/project.conf index 0be4f201b..8205d185a 100644 --- a/tests/plugins/pipeline/customsource/project.conf +++ b/tests/plugins/pipeline/customsource/project.conf @@ -1,5 +1,7 @@ name: pony element-path: elements plugins: - sources: - - pluginsources +- origin: local + path: pluginsources + sources: + foo: 0 diff --git a/tests/plugins/third_party.py b/tests/plugins/third_party.py index 35705358a..a786fc7c2 100644 --- a/tests/plugins/third_party.py +++ b/tests/plugins/third_party.py @@ -28,22 +28,32 @@ def plugin_fixture(): # 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'], []) + origin_data = [{ + 'origin': 'local', + 'path': str(datafiles), + 'plugins': {'foop': 0} + }] + factory = ElementFactory(plugin_fixture['base'], origin_data) assert(isinstance(factory, ElementFactory)) entry_fixture(datafiles, 'buildstream.plugins', 'third_party_element:foop') - foo_type, _ = factory.lookup('third_party_element:foop') + foo_type, _ = factory.lookup('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'], []) + origin_data = [{ + 'origin': 'local', + 'path': str(datafiles), + 'plugins': {'foop': 0} + }] + factory = SourceFactory(plugin_fixture['base'], origin_data) assert(isinstance(factory, SourceFactory)) entry_fixture(datafiles, 'buildstream.plugins', 'third_party_source:foop') - foo_type, _ = factory.lookup('third_party_source:foop') + foo_type, _ = factory.lookup('foop') assert(foo_type.__name__ == 'FooSource') |