diff options
author | Raoul Hidalgo Charman <raoul.hidalgocharman@codethink.co.uk> | 2018-11-23 12:08:06 +0000 |
---|---|---|
committer | Raoul Hidalgo Charman <raoul.hidalgocharman@codethink.co.uk> | 2018-12-05 10:44:02 +0000 |
commit | defec11250773152c65dc6b05239d58f90d0a217 (patch) | |
tree | 1316157b2afcd35a4f0e5d0befc5311f319d7f77 | |
parent | 8e09a81c5cf7541ee826d52e3dfecb7ea143eb85 (diff) | |
download | buildstream-defec11250773152c65dc6b05239d58f90d0a217.tar.gz |
optionos.py: Add tests for OptionOS
Same format as OptionArch tests, but with OS's.
-rw-r--r-- | tests/format/option-os/element.bst | 12 | ||||
-rw-r--r-- | tests/format/option-os/project.conf | 11 | ||||
-rw-r--r-- | tests/format/optionos.py | 76 |
3 files changed, 99 insertions, 0 deletions
diff --git a/tests/format/option-os/element.bst b/tests/format/option-os/element.bst new file mode 100644 index 000000000..8208d67e8 --- /dev/null +++ b/tests/format/option-os/element.bst @@ -0,0 +1,12 @@ +kind: autotools +variables: + result: "Nothing" + (?): + - machine_os == "Linux": + result: "Linuxy" + - machine_os == "Darwin": + result: "Darwiny" + - machine_os == "SunOS": + result: "SunOSy" + - machine_os == "FreeBSD": + result: "FreeBSDy"
\ No newline at end of file diff --git a/tests/format/option-os/project.conf b/tests/format/option-os/project.conf new file mode 100644 index 000000000..5edb5072f --- /dev/null +++ b/tests/format/option-os/project.conf @@ -0,0 +1,11 @@ +name: test + +options: + machine_os: + type: os + description: The operating system + values: + - Linux + - Darwin + - FreeBSD + - SunOS diff --git a/tests/format/optionos.py b/tests/format/optionos.py new file mode 100644 index 000000000..b05d7e49e --- /dev/null +++ b/tests/format/optionos.py @@ -0,0 +1,76 @@ +import os +import pytest +from contextlib import contextmanager + +from buildstream import _yaml +from buildstream._exceptions import ErrorDomain, LoadErrorReason +from tests.testutils.runcli import cli + +DATA_DIR = os.path.dirname(os.path.realpath(__file__)) + + +@contextmanager +def override_uname_os(name): + orig_uname = os.uname + orig_tuple = tuple(os.uname()) + override_result = (name, orig_tuple[1], + orig_tuple[2], orig_tuple[3], + orig_tuple[4]) + + def override(): + return override_result + + os.uname = override + yield + os.uname = orig_uname + + +@pytest.mark.datafiles(DATA_DIR) +@pytest.mark.parametrize("uname,value,expected", [ + # Test explicitly provided arches + ('Darwin', 'Linux', 'Linuxy'), + ('SunOS', 'FreeBSD', 'FreeBSDy'), + + # Test automatically derived arches + ('Linux', None, 'Linuxy'), + ('Darwin', None, 'Darwiny'), + + # Test that explicitly provided arches dont error out + # when the `uname` reported arch is not supported + ('AIX', 'Linux', 'Linuxy'), + ('HaikuOS', 'SunOS', 'SunOSy'), +]) +def test_conditionals(cli, datafiles, uname, value, expected): + with override_uname_os(uname): + project = os.path.join(datafiles.dirname, datafiles.basename, 'option-os') + + bst_args = [] + if value is not None: + bst_args += ['--option', 'machine_os', value] + + bst_args += [ + 'show', + '--deps', 'none', + '--format', '%{vars}', + 'element.bst' + ] + result = cli.run(project=project, silent=True, args=bst_args) + result.assert_success() + + loaded = _yaml.load_data(result.output) + assert loaded['result'] == expected + + +@pytest.mark.datafiles(DATA_DIR) +def test_unsupported_arch(cli, datafiles): + + with override_uname_os("AIX"): + project = os.path.join(datafiles.dirname, datafiles.basename, 'option-os') + result = cli.run(project=project, silent=True, args=[ + 'show', + '--deps', 'none', + '--format', '%{vars}', + 'element.bst' + ]) + + result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.INVALID_DATA) |