diff options
author | Jonathan Maw <jonathan.maw@codethink.co.uk> | 2018-02-27 13:11:44 +0000 |
---|---|---|
committer | Jonathan Maw <jonathan.maw@codethink.co.uk> | 2018-03-01 13:28:44 +0000 |
commit | b29615032ecf116879291bd97a805cec012bc476 (patch) | |
tree | 7e080c4512df80790cd784ade12bf945dfdc775a /tests/plugins/filter.py | |
parent | 63069e9da45ffe611d8a6ba691f77db555f8f6bd (diff) | |
download | buildstream-214-we-need-a-way-to-make-elements-depend-on-a-subset-of-an-element-s-output.tar.gz |
tests: Add filter element tests214-we-need-a-way-to-make-elements-depend-on-a-subset-of-an-element-s-output
Diffstat (limited to 'tests/plugins/filter.py')
-rw-r--r-- | tests/plugins/filter.py | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/tests/plugins/filter.py b/tests/plugins/filter.py new file mode 100644 index 000000000..a8e7257c3 --- /dev/null +++ b/tests/plugins/filter.py @@ -0,0 +1,87 @@ +import os +import pytest +from tests.testutils.runcli import cli +from buildstream._exceptions import ErrorDomain + +DATA_DIR = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + 'filter', +) + + +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic')) +def test_filter_include(datafiles, cli, tmpdir): + project = os.path.join(datafiles.dirname, datafiles.basename) + result = cli.run(project=project, args=['build', 'output-include.bst']) + result.assert_success() + + checkout = os.path.join(tmpdir.dirname, tmpdir.basename, 'checkout') + result = cli.run(project=project, args=['checkout', 'output-include.bst', checkout]) + result.assert_success() + assert os.path.exists(os.path.join(checkout, "foo")) + + +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic')) +def test_filter_exclude(datafiles, cli, tmpdir): + project = os.path.join(datafiles.dirname, datafiles.basename) + result = cli.run(project=project, args=['build', 'output-exclude.bst']) + result.assert_success() + + checkout = os.path.join(tmpdir.dirname, tmpdir.basename, 'checkout') + result = cli.run(project=project, args=['checkout', 'output-exclude.bst', checkout]) + result.assert_success() + assert os.path.exists(os.path.join(checkout, "bar")) + + +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic')) +def test_filter_orphans(datafiles, cli, tmpdir): + project = os.path.join(datafiles.dirname, datafiles.basename) + result = cli.run(project=project, args=['build', 'output-orphans.bst']) + result.assert_success() + + checkout = os.path.join(tmpdir.dirname, tmpdir.basename, 'checkout') + result = cli.run(project=project, args=['checkout', 'output-orphans.bst', checkout]) + result.assert_success() + assert os.path.exists(os.path.join(checkout, "baz")) + + +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic')) +def test_filter_deps_ok(datafiles, cli): + project = os.path.join(datafiles.dirname, datafiles.basename) + result = cli.run(project=project, args=['build', 'deps-permitted.bst']) + result.assert_success() + + result = cli.run(project=project, + args=['show', '--deps=run', "--format='%{name}'", 'deps-permitted.bst']) + result.assert_success() + + assert 'output-exclude.bst' in result.output + assert 'output-orphans.bst' in result.output + + +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic')) +def test_filter_forbid_sources(datafiles, cli): + project = os.path.join(datafiles.dirname, datafiles.basename) + result = cli.run(project=project, args=['build', 'forbidden-source.bst']) + result.assert_main_error(ErrorDomain.PIPELINE, 'element-forbidden-sources') + + +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic')) +def test_filter_forbid_multi_bdep(datafiles, cli): + project = os.path.join(datafiles.dirname, datafiles.basename) + result = cli.run(project=project, args=['build', 'forbidden-multi-bdep.bst']) + result.assert_main_error(ErrorDomain.PIPELINE, 'filter-bdepend-wrong-count') + + +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic')) +def test_filter_forbid_no_bdep(datafiles, cli): + project = os.path.join(datafiles.dirname, datafiles.basename) + result = cli.run(project=project, args=['build', 'forbidden-no-bdep.bst']) + result.assert_main_error(ErrorDomain.PIPELINE, 'filter-bdepend-wrong-count') + + +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic')) +def test_filter_forbid_also_rdep(datafiles, cli): + project = os.path.join(datafiles.dirname, datafiles.basename) + result = cli.run(project=project, args=['build', 'forbidden-also-rdep.bst']) + result.assert_main_error(ErrorDomain.PIPELINE, 'filter-bdepend-also-rdepend') |