summaryrefslogtreecommitdiff
path: root/tests/plugins/filter.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/plugins/filter.py')
-rw-r--r--tests/plugins/filter.py87
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')