diff options
author | Ahmad Fatoum <a.fatoum@pengutronix.de> | 2021-06-04 10:47:01 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2021-06-09 12:20:05 +0200 |
commit | 6eb6998a2ba3eb314916df80bf42590e63bbfd3d (patch) | |
tree | 47084b1ae534ec642842ab030f95aca0913d7d37 /test/py | |
parent | 848c4c61c5b469910df2471c659b005f9f4538b9 (diff) | |
download | barebox-6eb6998a2ba3eb314916df80bf42590e63bbfd3d.tar.gz |
test: add first sample tests
The test can be run manually with e.g.
labgrid-pytest --lg-env test/arm/qemu_virt64_defconfig.yaml test/py
Acked-by: Rouven Czerwinski <r.czerwinski@pengutronix.de>
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Link: https://lore.barebox.org/20210604084704.17410-11-a.fatoum@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'test/py')
-rw-r--r-- | test/py/__init__.py | 0 | ||||
-rw-r--r-- | test/py/helper.py | 38 | ||||
-rw-r--r-- | test/py/test_shell.py | 36 |
3 files changed, 74 insertions, 0 deletions
diff --git a/test/py/__init__.py b/test/py/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/test/py/__init__.py diff --git a/test/py/helper.py b/test/py/helper.py new file mode 100644 index 0000000000..4a68e83669 --- /dev/null +++ b/test/py/helper.py @@ -0,0 +1,38 @@ +from labgrid.driver import BareboxDriver +import pytest +import os +from itertools import filterfalse + + +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(os.environ['LG_BUILDDIR'] + "/.config") as f: + out = f.read().splitlines() + except OSError: + return set() + + options = set() + for line in out: + if line and line.startswith("CONFIG_"): + options.add(line.split('=')[0]) + return options + + +def skip_disabled(config, *options): + if bool(config): + undefined = list(filterfalse(config.__contains__, options)) + + if bool(undefined): + pytest.skip("skipping test due to disabled " + (",".join(undefined)) + " dependency") diff --git a/test/py/test_shell.py b/test/py/test_shell.py new file mode 100644 index 0000000000..1af7d597a1 --- /dev/null +++ b/test/py/test_shell.py @@ -0,0 +1,36 @@ +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 + +def test_barebox_md5sum(barebox, barebox_config): + skip_disabled(barebox_config, "CONFIG_CMD_MD5SUM", "CONFIG_CMD_ECHO") + + barebox.run_check("echo -o md5 test") + out = barebox.run_check("md5sum md5") + assert out == ["d8e8fca2dc0f896fd7cb4cb0031ba249 md5"] + +def test_barebox_version(barebox, barebox_config): + skip_disabled(barebox_config, "CONFIG_CMD_VERSION") + + stdout, _, returncode = barebox.run('version') + assert 'barebox' in stdout[1] + assert returncode == 0 + +def test_barebox_no_err(barebox, barebox_config): + skip_disabled(barebox_config, "CONFIG_CMD_DMESG") + + # TODO extend by err once all qemu platforms conform + stdout, _, _ = barebox.run('dmesg -l crit,alert,emerg') + assert stdout == [] |