[PATCH 4/6] test: py: add test for valid JSON output from iomem/clk_dump
Ahmad Fatoum
a.fatoum at pengutronix.de
Thu Dec 11 12:50:06 PST 2025
Both iomem and clk_dump support a -j parameter for JSON output that's
easier to consume from test suites. Add a simple test that verifies the
JSON can actually be parsed.
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
test/py/test_shell.py | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/test/py/test_shell.py b/test/py/test_shell.py
index 3d2d85d80594..ac240636714d 100644
--- a/test/py/test_shell.py
+++ b/test/py/test_shell.py
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-only
from .helper import skip_disabled
+import json
def test_barebox_true(barebox, barebox_config):
@@ -39,3 +40,43 @@ def test_barebox_no_err(barebox, barebox_config):
# TODO extend by err once all qemu platforms conform
stdout, _, _ = barebox.run('dmesg -l crit,alert,emerg')
assert stdout == []
+
+
+def count_dicts_in_command_output(barebox, cmd):
+ def count_dicts(obj):
+ count = 0
+ if isinstance(obj, dict):
+ count += 1 # count this dict itself
+ for value in obj.values():
+ count += count_dicts(value)
+ elif isinstance(obj, list):
+ for item in obj:
+ count += count_dicts(item)
+ return count
+
+ stdout = "\n".join(barebox.run_check(cmd))
+ return count_dicts(json.loads(stdout))
+
+
+def test_cmd_iomem(barebox, barebox_config):
+ skip_disabled(barebox_config, "CONFIG_CMD_IOMEM")
+
+ regions = count_dicts_in_command_output(barebox, 'iomem -j')
+ assert regions > 0
+
+ assert count_dicts_in_command_output(barebox, 'iomem -jv') == regions
+ if regions > 1:
+ assert count_dicts_in_command_output(barebox, 'iomem -jg') > regions
+ assert count_dicts_in_command_output(barebox, 'iomem -vjg') > regions
+ else:
+ assert count_dicts_in_command_output(barebox, 'iomem -jg') >= regions
+ assert count_dicts_in_command_output(barebox, 'iomem -vjg') >= regions
+
+
+def test_cmd_clk(barebox, barebox_config):
+ skip_disabled(barebox_config, "CONFIG_CMD_CLK")
+
+ regions = count_dicts_in_command_output(barebox, 'clk_dump -j')
+ assert regions >= 0
+
+ assert count_dicts_in_command_output(barebox, 'clk_dump -vj') == regions
--
2.47.3
More information about the barebox
mailing list