The test can be run manually with e.g. labgrid-pytest --lg-env test/arm/qemu_virt64_defconfig.yaml test/py Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- test/.gitignore | 1 + test/__init__.py | 0 test/conftest.py | 21 +++++++++++++++++++++ test/py/__init__.py | 0 test/py/helper.py | 33 +++++++++++++++++++++++++++++++++ test/py/test_shell.py | 16 ++++++++++++++++ 6 files changed, 71 insertions(+) create mode 100644 test/.gitignore create mode 100644 test/__init__.py create mode 100644 test/conftest.py create mode 100644 test/py/__init__.py create mode 100644 test/py/helper.py create mode 100644 test/py/test_shell.py diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 000000000000..bee8a64b79a9 --- /dev/null +++ b/test/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/conftest.py b/test/conftest.py new file mode 100644 index 000000000000..019840d0909d --- /dev/null +++ b/test/conftest.py @@ -0,0 +1,21 @@ +import pytest +from .py import helper + + +@pytest.fixture(scope='function') +def barebox(strategy, target): + strategy.transition('barebox') + return target.get_driver('BareboxDriver') + + +@pytest.fixture(scope='function') +def shell(strategy, target): + strategy.transition('shell') + return target.get_driver('ShellDriver') + + +@pytest.fixture(scope="session") +def barebox_config(strategy, target): + strategy.transition('barebox') + command = target.get_driver("BareboxDriver") + return helper.get_config(command) diff --git a/test/py/__init__.py b/test/py/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/py/helper.py b/test/py/helper.py new file mode 100644 index 000000000000..f4a110d89a09 --- /dev/null +++ b/test/py/helper.py @@ -0,0 +1,33 @@ +from labgrid.driver import BareboxDriver +import pytest + + +def get_config(command): + """Returns the enabled config options of barebox, either from + a running instance if supported or by looking into .config + in the build directory. + Args: + command (BareboxDriver): An instance of the BareboxDriver + Returns: + list: list of the enabled config options + """ + assert isinstance(command, BareboxDriver) + + out, err, returncode = command.run("cat /env/data/config") + if returncode != 0: + try: + with open('.config') as f: + out = f.read().splitlines() + except OSError: + return [] + + options = [] + for line in out: + if line and line.startswith("CONFIG_"): + options.append(line.split('=')[0]) + return options + + +def skip_disabled(config, option): + if bool(config) and not option in config: + pytest.skip("skipping test due to disabled " + option + "=y dependency") diff --git a/test/py/test_shell.py b/test/py/test_shell.py new file mode 100644 index 000000000000..13a57061f6db --- /dev/null +++ b/test/py/test_shell.py @@ -0,0 +1,16 @@ +import pytest +from .helper import * + + +def test_barebox_true(barebox, barebox_config): + skip_disabled(barebox_config, "CONFIG_CMD_TRUE") + + _, _, returncode = barebox.run('true') + assert returncode == 0 + + +def test_barebox_false(barebox, barebox_config): + skip_disabled(barebox_config, "CONFIG_CMD_FALSE") + + _, _, returncode = barebox.run('false') + assert returncode == 1 -- 2.29.2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox