[PATCH 12/17] test: add first sample tests

Ahmad Fatoum a.fatoum at pengutronix.de
Mon Apr 12 08:16:46 BST 2021


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 at pengutronix.de>
---
 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
+
+
+ at pytest.fixture(scope='function')
+def barebox(strategy, target):
+    strategy.transition('barebox')
+    return target.get_driver('BareboxDriver')
+
+
+ at pytest.fixture(scope='function')
+def shell(strategy, target):
+    strategy.transition('shell')
+    return target.get_driver('ShellDriver')
+
+
+ at 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




More information about the barebox mailing list