summaryrefslogtreecommitdiff
path: root/tests/loader/dependencies.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/loader/dependencies.py')
-rw-r--r--tests/loader/dependencies.py236
1 files changed, 0 insertions, 236 deletions
diff --git a/tests/loader/dependencies.py b/tests/loader/dependencies.py
deleted file mode 100644
index 98374f6d0..000000000
--- a/tests/loader/dependencies.py
+++ /dev/null
@@ -1,236 +0,0 @@
-import os
-import pytest
-
-from buildstream._exceptions import LoadError, LoadErrorReason
-from buildstream._loader import Loader, MetaElement
-from tests.testutils import cli
-from . import make_loader
-
-DATA_DIR = os.path.join(
- os.path.dirname(os.path.realpath(__file__)),
- 'dependencies',
-)
-
-
-##############################################################
-# Basics: Test behavior loading projects with dependencies #
-##############################################################
-@pytest.mark.datafiles(DATA_DIR)
-def test_two_files(datafiles):
-
- basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = make_loader(basedir)
- element = loader.load(['elements/target.bst'])[0]
-
- assert(isinstance(element, MetaElement))
- assert(element.kind == 'pony')
-
- assert(len(element.dependencies) == 1)
- firstdep = element.dependencies[0]
- assert(isinstance(firstdep, MetaElement))
- assert(firstdep.kind == 'manual')
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_shared_dependency(datafiles):
-
- basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = make_loader(basedir)
- element = loader.load(['elements/shareddeptarget.bst'])[0]
-
- # Toplevel is 'pony' with 2 dependencies
- #
- assert(isinstance(element, MetaElement))
- assert(element.kind == 'pony')
- assert(len(element.dependencies) == 2)
-
- # The first specified dependency is 'thefirstdep'
- #
- firstdep = element.dependencies[0]
- assert(isinstance(firstdep, MetaElement))
- assert(firstdep.kind == 'manual')
- assert(len(firstdep.dependencies) == 0)
-
- # The second specified dependency is 'shareddep'
- #
- shareddep = element.dependencies[1]
- assert(isinstance(shareddep, MetaElement))
- assert(shareddep.kind == 'shareddep')
- assert(len(shareddep.dependencies) == 1)
-
- # The element which shareddep depends on is
- # the same element in memory as firstdep
- #
- shareddepdep = shareddep.dependencies[0]
- assert(isinstance(shareddepdep, MetaElement))
-
- # Assert they are in fact the same LoadElement
- #
- # Note we must use 'is' to test that both variables
- # refer to the same object in memory, not a regular
- # equality test with '==' which is one of those operator
- # overridable thingies.
- #
- assert(shareddepdep is firstdep)
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_dependency_dict(datafiles):
-
- basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = make_loader(basedir)
- element = loader.load(['elements/target-depdict.bst'])[0]
-
- assert(isinstance(element, MetaElement))
- assert(element.kind == 'pony')
-
- assert(len(element.dependencies) == 1)
- firstdep = element.dependencies[0]
- assert(isinstance(firstdep, MetaElement))
- assert(firstdep.kind == 'manual')
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_invalid_dependency_declaration(datafiles):
- basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = make_loader(basedir)
-
- with pytest.raises(LoadError) as exc:
- element = loader.load(['elements/invaliddep.bst'])[0]
-
- assert (exc.value.reason == LoadErrorReason.INVALID_DATA)
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_circular_dependency(datafiles):
- basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = make_loader(basedir)
-
- with pytest.raises(LoadError) as exc:
- element = loader.load(['elements/circulartarget.bst'])[0]
-
- assert (exc.value.reason == LoadErrorReason.CIRCULAR_DEPENDENCY)
- assert ("seconddep" in exc.value.args[0])
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_invalid_dependency_type(datafiles):
- basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = make_loader(basedir)
-
- with pytest.raises(LoadError) as exc:
- element = loader.load(['elements/invaliddeptype.bst'])[0]
-
- assert (exc.value.reason == LoadErrorReason.INVALID_DATA)
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_build_dependency(datafiles):
- basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = make_loader(basedir)
- element = loader.load(['elements/builddep.bst'])[0]
-
- assert(isinstance(element, MetaElement))
- assert(element.kind == 'pony')
-
- assert(len(element.build_dependencies) == 1)
- firstdep = element.build_dependencies[0]
- assert(isinstance(firstdep, MetaElement))
-
- assert(len(element.dependencies) == 0)
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_runtime_dependency(datafiles):
- basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = make_loader(basedir)
- element = loader.load(['elements/runtimedep.bst'])[0]
-
- assert(isinstance(element, MetaElement))
- assert(element.kind == 'pony')
-
- assert(len(element.dependencies) == 1)
- firstdep = element.dependencies[0]
- assert(isinstance(firstdep, MetaElement))
-
- assert(len(element.build_dependencies) == 0)
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_build_runtime_dependency(datafiles):
- basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = make_loader(basedir)
- element = loader.load(['elements/target.bst'])[0]
-
- assert(isinstance(element, MetaElement))
- assert(element.kind == 'pony')
-
- assert(len(element.dependencies) == 1)
- assert(len(element.build_dependencies) == 1)
- firstdep = element.dependencies[0]
- assert(isinstance(firstdep, MetaElement))
- firstbuilddep = element.build_dependencies[0]
- assert(firstdep == firstbuilddep)
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_all_dependency(datafiles):
- basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = make_loader(basedir)
- element = loader.load(['elements/alldep.bst'])[0]
-
- assert(isinstance(element, MetaElement))
- assert(element.kind == 'pony')
-
- assert(len(element.dependencies) == 1)
- assert(len(element.build_dependencies) == 1)
- firstdep = element.dependencies[0]
- assert(isinstance(firstdep, MetaElement))
- firstbuilddep = element.build_dependencies[0]
- assert(firstdep == firstbuilddep)
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_list_build_dependency(cli, datafiles):
- project = str(datafiles)
-
- # Check that the pipeline includes the build dependency
- deps = cli.get_pipeline(project, ['elements/builddep-list.bst'], scope="build")
- assert "elements/firstdep.bst" in deps
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_list_runtime_dependency(cli, datafiles):
- project = str(datafiles)
-
- # Check that the pipeline includes the runtime dependency
- deps = cli.get_pipeline(project, ['elements/runtimedep-list.bst'], scope="run")
- assert "elements/firstdep.bst" in deps
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_list_dependencies_combined(cli, datafiles):
- project = str(datafiles)
-
- # Check that runtime deps get combined
- rundeps = cli.get_pipeline(project, ['elements/list-combine.bst'], scope="run")
- assert "elements/firstdep.bst" not in rundeps
- assert "elements/seconddep.bst" in rundeps
- assert "elements/thirddep.bst" in rundeps
-
- # Check that build deps get combined
- builddeps = cli.get_pipeline(project, ['elements/list-combine.bst'], scope="build")
- assert "elements/firstdep.bst" in builddeps
- assert "elements/seconddep.bst" not in builddeps
- assert "elements/thirddep.bst" in builddeps
-
-
-@pytest.mark.datafiles(DATA_DIR)
-def test_list_overlap(cli, datafiles):
- project = str(datafiles)
-
- # Check that dependencies get merged
- rundeps = cli.get_pipeline(project, ['elements/list-overlap.bst'], scope="run")
- assert "elements/firstdep.bst" in rundeps
- builddeps = cli.get_pipeline(project, ['elements/list-overlap.bst'], scope="build")
- assert "elements/firstdep.bst" in builddeps