diff options
author | Tiago Gomes <tiago.gomes@codethink.co.uk> | 2018-08-17 15:22:00 +0100 |
---|---|---|
committer | Tiago Gomes <tiago.avv@gmail.com> | 2018-09-14 15:43:47 +0000 |
commit | 3cbcec43b929af17fd124ff0b787f02b4b5294af (patch) | |
tree | ba7de66f79b439d82e5b96e1b66dab7627307265 /tests | |
parent | 5e3587cd71dbcd82c6f45b297d03022c0156dcb6 (diff) | |
download | buildstream-3cbcec43b929af17fd124ff0b787f02b4b5294af.tar.gz |
Add tests for validating configuration variables
Diffstat (limited to 'tests')
-rw-r--r-- | tests/loader/variables.py | 99 | ||||
-rw-r--r-- | tests/loader/variables/simple/foo.txt | 1 | ||||
-rw-r--r-- | tests/loader/variables/simple/project.conf | 1 |
3 files changed, 101 insertions, 0 deletions
diff --git a/tests/loader/variables.py b/tests/loader/variables.py new file mode 100644 index 000000000..9871d63c6 --- /dev/null +++ b/tests/loader/variables.py @@ -0,0 +1,99 @@ +import os +import pytest + +from buildstream import _yaml +from buildstream._exceptions import ErrorDomain, LoadErrorReason +from tests.testutils import cli + +DATA_DIR = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + 'variables', +) + +PROTECTED_VARIABLES = [('project-name'), ('element-name'), ('max-jobs')] + + +@pytest.mark.parametrize('protected_var', PROTECTED_VARIABLES) +@pytest.mark.datafiles(DATA_DIR) +def test_use_of_protected_var_project_conf(cli, tmpdir, datafiles, protected_var): + project = os.path.join(str(datafiles), 'simple') + + conf = { + 'name': 'test', + 'variables': { + protected_var: 'some-value' + } + } + _yaml.dump(conf, os.path.join(project, 'project.conf')) + + element = { + 'kind': 'import', + 'sources': [ + { + 'kind': 'local', + 'path': 'foo.txt' + } + ], + } + _yaml.dump(element, os.path.join(project, 'target.bst')) + + result = cli.run(project=project, args=['build', 'target.bst']) + result.assert_main_error(ErrorDomain.LOAD, + LoadErrorReason.PROTECTED_VARIABLE_REDEFINED) + + +@pytest.mark.parametrize('protected_var', PROTECTED_VARIABLES) +@pytest.mark.datafiles(DATA_DIR) +def test_use_of_protected_var_element_overrides(cli, tmpdir, datafiles, protected_var): + project = os.path.join(str(datafiles), 'simple') + + conf = { + 'name': 'test', + 'elements': { + 'manual': { + 'variables': { + protected_var: 'some-value' + } + } + } + } + _yaml.dump(conf, os.path.join(project, 'project.conf')) + + element = { + 'kind': 'manual', + 'sources': [ + { + 'kind': 'local', + 'path': 'foo.txt' + } + ], + } + _yaml.dump(element, os.path.join(project, 'target.bst')) + + result = cli.run(project=project, args=['build', 'target.bst']) + result.assert_main_error(ErrorDomain.LOAD, + LoadErrorReason.PROTECTED_VARIABLE_REDEFINED) + + +@pytest.mark.parametrize('protected_var', PROTECTED_VARIABLES) +@pytest.mark.datafiles(DATA_DIR) +def test_use_of_protected_var_in_element(cli, tmpdir, datafiles, protected_var): + project = os.path.join(str(datafiles), 'simple') + + element = { + 'kind': 'import', + 'sources': [ + { + 'kind': 'local', + 'path': 'foo.txt' + } + ], + 'variables': { + protected_var: 'some-value' + } + } + _yaml.dump(element, os.path.join(project, 'target.bst')) + + result = cli.run(project=project, args=['build', 'target.bst']) + result.assert_main_error(ErrorDomain.LOAD, + LoadErrorReason.PROTECTED_VARIABLE_REDEFINED) diff --git a/tests/loader/variables/simple/foo.txt b/tests/loader/variables/simple/foo.txt new file mode 100644 index 000000000..257cc5642 --- /dev/null +++ b/tests/loader/variables/simple/foo.txt @@ -0,0 +1 @@ +foo diff --git a/tests/loader/variables/simple/project.conf b/tests/loader/variables/simple/project.conf new file mode 100644 index 000000000..5a240e3ed --- /dev/null +++ b/tests/loader/variables/simple/project.conf @@ -0,0 +1 @@ +name: foo |