summaryrefslogtreecommitdiffstats
path: root/test/py
diff options
context:
space:
mode:
authorAhmad Fatoum <a.fatoum@pengutronix.de>2021-06-04 10:47:01 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2021-06-09 12:20:05 +0200
commit6eb6998a2ba3eb314916df80bf42590e63bbfd3d (patch)
tree47084b1ae534ec642842ab030f95aca0913d7d37 /test/py
parent848c4c61c5b469910df2471c659b005f9f4538b9 (diff)
downloadbarebox-6eb6998a2ba3eb314916df80bf42590e63bbfd3d.tar.gz
barebox-6eb6998a2ba3eb314916df80bf42590e63bbfd3d.tar.xz
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__.py0
-rw-r--r--test/py/helper.py38
-rw-r--r--test/py/test_shell.py36
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 == []