From 8d676a84f7410ba337be3e3cd8d24d7255cefee7 Mon Sep 17 00:00:00 2001 From: Tristan Van Berkom Date: Fri, 11 Jan 2019 17:52:31 -0500 Subject: tests: Migrate dependencies test to tests/format This used to be an internal test, converted this to use the `cli` fixture. --- tests/format/dependencies.py | 133 ++++++++++++ tests/format/dependencies/elements/alldep.bst | 5 + .../format/dependencies/elements/builddep-list.bst | 4 + tests/format/dependencies/elements/builddep.bst | 5 + .../dependencies/elements/circular-firstdep.bst | 4 + .../dependencies/elements/circular-seconddep.bst | 4 + .../dependencies/elements/circulartarget.bst | 4 + tests/format/dependencies/elements/firstdep.bst | 2 + tests/format/dependencies/elements/invaliddep.bst | 4 + .../dependencies/elements/invaliddeptype.bst | 5 + .../format/dependencies/elements/list-combine.bst | 8 + .../format/dependencies/elements/list-overlap.bst | 7 + .../dependencies/elements/runtimedep-list.bst | 4 + tests/format/dependencies/elements/runtimedep.bst | 5 + tests/format/dependencies/elements/seconddep.bst | 2 + tests/format/dependencies/elements/shareddep.bst | 4 + .../dependencies/elements/shareddeptarget.bst | 5 + .../dependencies/elements/target-depdict.bst | 4 + tests/format/dependencies/elements/target.bst | 4 + tests/format/dependencies/elements/thirddep.bst | 2 + tests/format/dependencies/project.conf | 3 + tests/loader/__init__.py | 22 -- tests/loader/dependencies.py | 236 --------------------- tests/loader/dependencies/elements/alldep.bst | 5 - .../loader/dependencies/elements/builddep-list.bst | 4 - tests/loader/dependencies/elements/builddep.bst | 5 - .../dependencies/elements/circular-firstdep.bst | 4 - .../dependencies/elements/circular-seconddep.bst | 4 - .../dependencies/elements/circulartarget.bst | 4 - tests/loader/dependencies/elements/firstdep.bst | 2 - tests/loader/dependencies/elements/invaliddep.bst | 4 - .../dependencies/elements/invaliddeptype.bst | 5 - .../loader/dependencies/elements/list-combine.bst | 8 - .../loader/dependencies/elements/list-overlap.bst | 7 - .../dependencies/elements/runtimedep-list.bst | 4 - tests/loader/dependencies/elements/runtimedep.bst | 5 - tests/loader/dependencies/elements/seconddep.bst | 2 - tests/loader/dependencies/elements/shareddep.bst | 4 - .../dependencies/elements/shareddeptarget.bst | 5 - .../dependencies/elements/target-depdict.bst | 4 - tests/loader/dependencies/elements/target.bst | 4 - tests/loader/dependencies/elements/thirddep.bst | 2 - tests/loader/dependencies/project.conf | 2 - 43 files changed, 218 insertions(+), 342 deletions(-) create mode 100644 tests/format/dependencies.py create mode 100644 tests/format/dependencies/elements/alldep.bst create mode 100644 tests/format/dependencies/elements/builddep-list.bst create mode 100644 tests/format/dependencies/elements/builddep.bst create mode 100644 tests/format/dependencies/elements/circular-firstdep.bst create mode 100644 tests/format/dependencies/elements/circular-seconddep.bst create mode 100644 tests/format/dependencies/elements/circulartarget.bst create mode 100644 tests/format/dependencies/elements/firstdep.bst create mode 100644 tests/format/dependencies/elements/invaliddep.bst create mode 100644 tests/format/dependencies/elements/invaliddeptype.bst create mode 100644 tests/format/dependencies/elements/list-combine.bst create mode 100644 tests/format/dependencies/elements/list-overlap.bst create mode 100644 tests/format/dependencies/elements/runtimedep-list.bst create mode 100644 tests/format/dependencies/elements/runtimedep.bst create mode 100644 tests/format/dependencies/elements/seconddep.bst create mode 100644 tests/format/dependencies/elements/shareddep.bst create mode 100644 tests/format/dependencies/elements/shareddeptarget.bst create mode 100644 tests/format/dependencies/elements/target-depdict.bst create mode 100644 tests/format/dependencies/elements/target.bst create mode 100644 tests/format/dependencies/elements/thirddep.bst create mode 100644 tests/format/dependencies/project.conf delete mode 100644 tests/loader/__init__.py delete mode 100644 tests/loader/dependencies.py delete mode 100644 tests/loader/dependencies/elements/alldep.bst delete mode 100644 tests/loader/dependencies/elements/builddep-list.bst delete mode 100644 tests/loader/dependencies/elements/builddep.bst delete mode 100644 tests/loader/dependencies/elements/circular-firstdep.bst delete mode 100644 tests/loader/dependencies/elements/circular-seconddep.bst delete mode 100644 tests/loader/dependencies/elements/circulartarget.bst delete mode 100644 tests/loader/dependencies/elements/firstdep.bst delete mode 100644 tests/loader/dependencies/elements/invaliddep.bst delete mode 100644 tests/loader/dependencies/elements/invaliddeptype.bst delete mode 100644 tests/loader/dependencies/elements/list-combine.bst delete mode 100644 tests/loader/dependencies/elements/list-overlap.bst delete mode 100644 tests/loader/dependencies/elements/runtimedep-list.bst delete mode 100644 tests/loader/dependencies/elements/runtimedep.bst delete mode 100644 tests/loader/dependencies/elements/seconddep.bst delete mode 100644 tests/loader/dependencies/elements/shareddep.bst delete mode 100644 tests/loader/dependencies/elements/shareddeptarget.bst delete mode 100644 tests/loader/dependencies/elements/target-depdict.bst delete mode 100644 tests/loader/dependencies/elements/target.bst delete mode 100644 tests/loader/dependencies/elements/thirddep.bst delete mode 100644 tests/loader/dependencies/project.conf diff --git a/tests/format/dependencies.py b/tests/format/dependencies.py new file mode 100644 index 000000000..bcfa2929a --- /dev/null +++ b/tests/format/dependencies.py @@ -0,0 +1,133 @@ +import os +import pytest + +from buildstream._exceptions import ErrorDomain, LoadErrorReason +from tests.testutils import cli + +DATA_DIR = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + 'dependencies', +) + + +@pytest.mark.datafiles(DATA_DIR) +def test_two_files(cli, datafiles): + project = str(datafiles) + + elements = cli.get_pipeline(project, ['target.bst']) + assert elements == ['firstdep.bst', 'target.bst'] + + +@pytest.mark.datafiles(DATA_DIR) +def test_shared_dependency(cli, datafiles): + project = str(datafiles) + + elements = cli.get_pipeline(project, ['shareddeptarget.bst']) + assert elements == ['firstdep.bst', 'shareddep.bst', 'shareddeptarget.bst'] + + +@pytest.mark.datafiles(DATA_DIR) +def test_dependency_dict(cli, datafiles): + project = str(datafiles) + elements = cli.get_pipeline(project, ['target-depdict.bst']) + assert elements == ['firstdep.bst', 'target-depdict.bst'] + + +@pytest.mark.datafiles(DATA_DIR) +def test_invalid_dependency_declaration(cli, datafiles): + project = str(datafiles) + result = cli.run(project=project, args=['show', 'invaliddep.bst']) + result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.INVALID_DATA) + + +@pytest.mark.datafiles(DATA_DIR) +def test_invalid_dependency_type(cli, datafiles): + project = str(datafiles) + result = cli.run(project=project, args=['show', 'invaliddeptype.bst']) + result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.INVALID_DATA) + + +@pytest.mark.datafiles(DATA_DIR) +def test_circular_dependency(cli, datafiles): + project = str(datafiles) + result = cli.run(project=project, args=['show', 'circulartarget.bst']) + result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.CIRCULAR_DEPENDENCY) + + +@pytest.mark.datafiles(DATA_DIR) +def test_build_dependency(cli, datafiles): + project = str(datafiles) + + elements = cli.get_pipeline(project, ['builddep.bst'], scope='run') + assert elements == ['builddep.bst'] + + elements = cli.get_pipeline(project, ['builddep.bst'], scope='build') + assert elements == ['firstdep.bst'] + + +@pytest.mark.datafiles(DATA_DIR) +def test_runtime_dependency(cli, datafiles): + project = str(datafiles) + elements = cli.get_pipeline(project, ['runtimedep.bst'], scope='build') + + # FIXME: The empty line should probably never happen here when there are no results. + assert elements == [''] + elements = cli.get_pipeline(project, ['runtimedep.bst'], scope='run') + assert elements == ['firstdep.bst', 'runtimedep.bst'] + + +@pytest.mark.datafiles(DATA_DIR) +def test_all_dependency(cli, datafiles): + project = str(datafiles) + + elements = cli.get_pipeline(project, ['alldep.bst'], scope='build') + assert elements == ['firstdep.bst'] + + elements = cli.get_pipeline(project, ['alldep.bst'], scope='run') + assert elements == ['firstdep.bst', 'alldep.bst'] + + +@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, ['builddep-list.bst'], scope="build") + assert "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, ['runtimedep-list.bst'], scope="run") + assert "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, ['list-combine.bst'], scope="run") + assert "firstdep.bst" not in rundeps + assert "seconddep.bst" in rundeps + assert "thirddep.bst" in rundeps + + # Check that build deps get combined + builddeps = cli.get_pipeline(project, ['list-combine.bst'], scope="build") + assert "firstdep.bst" in builddeps + assert "seconddep.bst" not in builddeps + assert "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, ['list-overlap.bst'], scope="run") + assert "firstdep.bst" in rundeps + builddeps = cli.get_pipeline(project, ['list-overlap.bst'], scope="build") + assert "firstdep.bst" in builddeps diff --git a/tests/format/dependencies/elements/alldep.bst b/tests/format/dependencies/elements/alldep.bst new file mode 100644 index 000000000..7df79c92d --- /dev/null +++ b/tests/format/dependencies/elements/alldep.bst @@ -0,0 +1,5 @@ +kind: manual +description: This element has a dependency with type 'all' +depends: + - filename: firstdep.bst + type: all diff --git a/tests/format/dependencies/elements/builddep-list.bst b/tests/format/dependencies/elements/builddep-list.bst new file mode 100644 index 000000000..a0cbcaf23 --- /dev/null +++ b/tests/format/dependencies/elements/builddep-list.bst @@ -0,0 +1,4 @@ +kind: stack +description: This element has a build-only dependency specified via build-depends +build-depends: + - firstdep.bst diff --git a/tests/format/dependencies/elements/builddep.bst b/tests/format/dependencies/elements/builddep.bst new file mode 100644 index 000000000..ab8171e2c --- /dev/null +++ b/tests/format/dependencies/elements/builddep.bst @@ -0,0 +1,5 @@ +kind: manual +description: This element has a build-only dependency +depends: + - filename: firstdep.bst + type: build diff --git a/tests/format/dependencies/elements/circular-firstdep.bst b/tests/format/dependencies/elements/circular-firstdep.bst new file mode 100644 index 000000000..604212042 --- /dev/null +++ b/tests/format/dependencies/elements/circular-firstdep.bst @@ -0,0 +1,4 @@ +kind: manual +description: Depend on another dep which depends on the target +depends: +- circular-seconddep.bst diff --git a/tests/format/dependencies/elements/circular-seconddep.bst b/tests/format/dependencies/elements/circular-seconddep.bst new file mode 100644 index 000000000..1b944c912 --- /dev/null +++ b/tests/format/dependencies/elements/circular-seconddep.bst @@ -0,0 +1,4 @@ +kind: manual +description: Depend on the target, creating a circular dependency +depends: +- circulartarget.bst diff --git a/tests/format/dependencies/elements/circulartarget.bst b/tests/format/dependencies/elements/circulartarget.bst new file mode 100644 index 000000000..eac50469c --- /dev/null +++ b/tests/format/dependencies/elements/circulartarget.bst @@ -0,0 +1,4 @@ +kind: stack +description: This is a main target which introduces a circular dependency +depends: +- circular-firstdep.bst diff --git a/tests/format/dependencies/elements/firstdep.bst b/tests/format/dependencies/elements/firstdep.bst new file mode 100644 index 000000000..5c9c1c1e6 --- /dev/null +++ b/tests/format/dependencies/elements/firstdep.bst @@ -0,0 +1,2 @@ +kind: manual +description: This is the first dependency diff --git a/tests/format/dependencies/elements/invaliddep.bst b/tests/format/dependencies/elements/invaliddep.bst new file mode 100644 index 000000000..65c43c60a --- /dev/null +++ b/tests/format/dependencies/elements/invaliddep.bst @@ -0,0 +1,4 @@ +kind: pony +description: This is an invalid dependency +depends: + more: it should be a list, not a dict diff --git a/tests/format/dependencies/elements/invaliddeptype.bst b/tests/format/dependencies/elements/invaliddeptype.bst new file mode 100644 index 000000000..4f4dac973 --- /dev/null +++ b/tests/format/dependencies/elements/invaliddeptype.bst @@ -0,0 +1,5 @@ +kind: manual +description: This is an invalid dependency type +depends: + - filename: firstdep.bst + type: should be build or runtime diff --git a/tests/format/dependencies/elements/list-combine.bst b/tests/format/dependencies/elements/list-combine.bst new file mode 100644 index 000000000..ed3452206 --- /dev/null +++ b/tests/format/dependencies/elements/list-combine.bst @@ -0,0 +1,8 @@ +kind: stack +description: This element depends on three elements in different ways +build-depends: +- firstdep.bst +runtime-depends: +- seconddep.bst +depends: +- thirddep.bst diff --git a/tests/format/dependencies/elements/list-overlap.bst b/tests/format/dependencies/elements/list-overlap.bst new file mode 100644 index 000000000..0ee94f11c --- /dev/null +++ b/tests/format/dependencies/elements/list-overlap.bst @@ -0,0 +1,7 @@ +kind: stack +description: This element depends on two elements in different ways +build-depends: +- firstdep.bst +depends: +- filename: firstdep.bst + type: runtime diff --git a/tests/format/dependencies/elements/runtimedep-list.bst b/tests/format/dependencies/elements/runtimedep-list.bst new file mode 100644 index 000000000..1207a492d --- /dev/null +++ b/tests/format/dependencies/elements/runtimedep-list.bst @@ -0,0 +1,4 @@ +kind: stack +description: This element has a runtime-only dependency +runtime-depends: + - firstdep.bst diff --git a/tests/format/dependencies/elements/runtimedep.bst b/tests/format/dependencies/elements/runtimedep.bst new file mode 100644 index 000000000..6a5247117 --- /dev/null +++ b/tests/format/dependencies/elements/runtimedep.bst @@ -0,0 +1,5 @@ +kind: manual +description: This element has a runtime-only dependency +depends: + - filename: firstdep.bst + type: runtime diff --git a/tests/format/dependencies/elements/seconddep.bst b/tests/format/dependencies/elements/seconddep.bst new file mode 100644 index 000000000..93ded4359 --- /dev/null +++ b/tests/format/dependencies/elements/seconddep.bst @@ -0,0 +1,2 @@ +kind: manual +description: This is the second dependency diff --git a/tests/format/dependencies/elements/shareddep.bst b/tests/format/dependencies/elements/shareddep.bst new file mode 100644 index 000000000..ac123e253 --- /dev/null +++ b/tests/format/dependencies/elements/shareddep.bst @@ -0,0 +1,4 @@ +kind: stack +description: This is the first dependency +depends: +- firstdep.bst diff --git a/tests/format/dependencies/elements/shareddeptarget.bst b/tests/format/dependencies/elements/shareddeptarget.bst new file mode 100644 index 000000000..b6efb1306 --- /dev/null +++ b/tests/format/dependencies/elements/shareddeptarget.bst @@ -0,0 +1,5 @@ +kind: stack +description: This is the main target +depends: +- firstdep.bst +- shareddep.bst diff --git a/tests/format/dependencies/elements/target-depdict.bst b/tests/format/dependencies/elements/target-depdict.bst new file mode 100644 index 000000000..6a150753c --- /dev/null +++ b/tests/format/dependencies/elements/target-depdict.bst @@ -0,0 +1,4 @@ +kind: manual +description: This is the main target +depends: +- filename: firstdep.bst diff --git a/tests/format/dependencies/elements/target.bst b/tests/format/dependencies/elements/target.bst new file mode 100644 index 000000000..b856b0f93 --- /dev/null +++ b/tests/format/dependencies/elements/target.bst @@ -0,0 +1,4 @@ +kind: stack +description: This is the main target +depends: +- firstdep.bst diff --git a/tests/format/dependencies/elements/thirddep.bst b/tests/format/dependencies/elements/thirddep.bst new file mode 100644 index 000000000..39b58e57a --- /dev/null +++ b/tests/format/dependencies/elements/thirddep.bst @@ -0,0 +1,2 @@ +kind: manual +description: This is the third dependency diff --git a/tests/format/dependencies/project.conf b/tests/format/dependencies/project.conf new file mode 100644 index 000000000..fcd60b6df --- /dev/null +++ b/tests/format/dependencies/project.conf @@ -0,0 +1,3 @@ +# Basic project +name: test +element-path: elements diff --git a/tests/loader/__init__.py b/tests/loader/__init__.py deleted file mode 100644 index 812888181..000000000 --- a/tests/loader/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -import os -from buildstream._context import Context -from buildstream._project import Project -from buildstream._loader import Loader - -# -# This is used by the loader test modules, these should -# be removed in favor of testing the functionality via -# the CLI like in the frontend tests anyway. -# - - -def dummy_handler(message, context): - pass - - -def make_loader(basedir): - context = Context() - context.load(config=os.devnull) - context.set_message_handler(dummy_handler) - project = Project(basedir, context) - return project.loader 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 diff --git a/tests/loader/dependencies/elements/alldep.bst b/tests/loader/dependencies/elements/alldep.bst deleted file mode 100644 index c61c7ea15..000000000 --- a/tests/loader/dependencies/elements/alldep.bst +++ /dev/null @@ -1,5 +0,0 @@ -kind: pony -description: This element has a dependency with type 'all' -depends: - - filename: elements/firstdep.bst - type: all diff --git a/tests/loader/dependencies/elements/builddep-list.bst b/tests/loader/dependencies/elements/builddep-list.bst deleted file mode 100644 index 925de3afd..000000000 --- a/tests/loader/dependencies/elements/builddep-list.bst +++ /dev/null @@ -1,4 +0,0 @@ -kind: stack -description: This element has a build-only dependency specified via build-depends -build-depends: - - elements/firstdep.bst diff --git a/tests/loader/dependencies/elements/builddep.bst b/tests/loader/dependencies/elements/builddep.bst deleted file mode 100644 index 6d17f8498..000000000 --- a/tests/loader/dependencies/elements/builddep.bst +++ /dev/null @@ -1,5 +0,0 @@ -kind: pony -description: This element has a build-only dependency -depends: - - filename: elements/firstdep.bst - type: build diff --git a/tests/loader/dependencies/elements/circular-firstdep.bst b/tests/loader/dependencies/elements/circular-firstdep.bst deleted file mode 100644 index 92f6993a2..000000000 --- a/tests/loader/dependencies/elements/circular-firstdep.bst +++ /dev/null @@ -1,4 +0,0 @@ -kind: pony -description: Depend on another dep which depends on the target -depends: -- elements/circular-seconddep.bst diff --git a/tests/loader/dependencies/elements/circular-seconddep.bst b/tests/loader/dependencies/elements/circular-seconddep.bst deleted file mode 100644 index 12a67ba75..000000000 --- a/tests/loader/dependencies/elements/circular-seconddep.bst +++ /dev/null @@ -1,4 +0,0 @@ -kind: pony -description: Depend on the target, creating a circular dependency -depends: -- elements/circulartarget.bst diff --git a/tests/loader/dependencies/elements/circulartarget.bst b/tests/loader/dependencies/elements/circulartarget.bst deleted file mode 100644 index 14db24682..000000000 --- a/tests/loader/dependencies/elements/circulartarget.bst +++ /dev/null @@ -1,4 +0,0 @@ -kind: pony -description: This is a main target which introduces a circular dependency -depends: -- elements/circular-firstdep.bst diff --git a/tests/loader/dependencies/elements/firstdep.bst b/tests/loader/dependencies/elements/firstdep.bst deleted file mode 100644 index 5c9c1c1e6..000000000 --- a/tests/loader/dependencies/elements/firstdep.bst +++ /dev/null @@ -1,2 +0,0 @@ -kind: manual -description: This is the first dependency diff --git a/tests/loader/dependencies/elements/invaliddep.bst b/tests/loader/dependencies/elements/invaliddep.bst deleted file mode 100644 index 65c43c60a..000000000 --- a/tests/loader/dependencies/elements/invaliddep.bst +++ /dev/null @@ -1,4 +0,0 @@ -kind: pony -description: This is an invalid dependency -depends: - more: it should be a list, not a dict diff --git a/tests/loader/dependencies/elements/invaliddeptype.bst b/tests/loader/dependencies/elements/invaliddeptype.bst deleted file mode 100644 index 50ed798f0..000000000 --- a/tests/loader/dependencies/elements/invaliddeptype.bst +++ /dev/null @@ -1,5 +0,0 @@ -kind: pony -description: This is an invalid dependency type -depends: - - filename: elements/firstdep.bst - type: should be build or runtime diff --git a/tests/loader/dependencies/elements/list-combine.bst b/tests/loader/dependencies/elements/list-combine.bst deleted file mode 100644 index 2010d7008..000000000 --- a/tests/loader/dependencies/elements/list-combine.bst +++ /dev/null @@ -1,8 +0,0 @@ -kind: stack -description: This element depends on three elements in different ways -build-depends: -- elements/firstdep.bst -runtime-depends: -- elements/seconddep.bst -depends: -- elements/thirddep.bst diff --git a/tests/loader/dependencies/elements/list-overlap.bst b/tests/loader/dependencies/elements/list-overlap.bst deleted file mode 100644 index 1e98a20a5..000000000 --- a/tests/loader/dependencies/elements/list-overlap.bst +++ /dev/null @@ -1,7 +0,0 @@ -kind: stack -description: This element depends on two elements in different ways -build-depends: -- elements/firstdep.bst -depends: -- filename: elements/firstdep.bst - type: runtime diff --git a/tests/loader/dependencies/elements/runtimedep-list.bst b/tests/loader/dependencies/elements/runtimedep-list.bst deleted file mode 100644 index 790fa4d54..000000000 --- a/tests/loader/dependencies/elements/runtimedep-list.bst +++ /dev/null @@ -1,4 +0,0 @@ -kind: stack -description: This element has a runtime-only dependency -runtime-depends: - - elements/firstdep.bst diff --git a/tests/loader/dependencies/elements/runtimedep.bst b/tests/loader/dependencies/elements/runtimedep.bst deleted file mode 100644 index a08b59ebf..000000000 --- a/tests/loader/dependencies/elements/runtimedep.bst +++ /dev/null @@ -1,5 +0,0 @@ -kind: pony -description: This element has a runtime-only dependency -depends: - - filename: elements/firstdep.bst - type: runtime diff --git a/tests/loader/dependencies/elements/seconddep.bst b/tests/loader/dependencies/elements/seconddep.bst deleted file mode 100644 index 93ded4359..000000000 --- a/tests/loader/dependencies/elements/seconddep.bst +++ /dev/null @@ -1,2 +0,0 @@ -kind: manual -description: This is the second dependency diff --git a/tests/loader/dependencies/elements/shareddep.bst b/tests/loader/dependencies/elements/shareddep.bst deleted file mode 100644 index cb98171f6..000000000 --- a/tests/loader/dependencies/elements/shareddep.bst +++ /dev/null @@ -1,4 +0,0 @@ -kind: shareddep -description: This is the first dependency -depends: -- elements/firstdep.bst diff --git a/tests/loader/dependencies/elements/shareddeptarget.bst b/tests/loader/dependencies/elements/shareddeptarget.bst deleted file mode 100644 index 03982d69f..000000000 --- a/tests/loader/dependencies/elements/shareddeptarget.bst +++ /dev/null @@ -1,5 +0,0 @@ -kind: pony -description: This is the main target -depends: -- elements/firstdep.bst -- elements/shareddep.bst diff --git a/tests/loader/dependencies/elements/target-depdict.bst b/tests/loader/dependencies/elements/target-depdict.bst deleted file mode 100644 index 22bc87910..000000000 --- a/tests/loader/dependencies/elements/target-depdict.bst +++ /dev/null @@ -1,4 +0,0 @@ -kind: pony -description: This is the main target -depends: -- filename: elements/firstdep.bst diff --git a/tests/loader/dependencies/elements/target.bst b/tests/loader/dependencies/elements/target.bst deleted file mode 100644 index 05c767956..000000000 --- a/tests/loader/dependencies/elements/target.bst +++ /dev/null @@ -1,4 +0,0 @@ -kind: pony -description: This is the main target -depends: -- elements/firstdep.bst diff --git a/tests/loader/dependencies/elements/thirddep.bst b/tests/loader/dependencies/elements/thirddep.bst deleted file mode 100644 index 39b58e57a..000000000 --- a/tests/loader/dependencies/elements/thirddep.bst +++ /dev/null @@ -1,2 +0,0 @@ -kind: manual -description: This is the third dependency diff --git a/tests/loader/dependencies/project.conf b/tests/loader/dependencies/project.conf deleted file mode 100644 index afa0f5475..000000000 --- a/tests/loader/dependencies/project.conf +++ /dev/null @@ -1,2 +0,0 @@ -# Basic project -name: foo -- cgit v1.2.1