aboutsummaryrefslogtreecommitdiff
path: root/test/py
diff options
context:
space:
mode:
authorRoger Knecht2022-09-03 13:15:04 +0000
committerTom Rini2022-10-11 15:40:48 -0400
commit23c0df6e7cd3f220a81151b662f0280bba0054b9 (patch)
tree15bac492af33d58a7b244c914cd1714a7ffc3964 /test/py
parent690a1d694899c55c7cc6a168c54984f765ff761e (diff)
cmd: xxd: add new command
Add xxd command to print file content as hexdump to standard out Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Roger Knecht <rknecht@pm.me>
Diffstat (limited to 'test/py')
-rw-r--r--test/py/tests/test_xxd/conftest.py35
-rw-r--r--test/py/tests/test_xxd/test_xxd.py23
2 files changed, 58 insertions, 0 deletions
diff --git a/test/py/tests/test_xxd/conftest.py b/test/py/tests/test_xxd/conftest.py
new file mode 100644
index 00000000000..59285aadf40
--- /dev/null
+++ b/test/py/tests/test_xxd/conftest.py
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: GPL-2.0+
+
+"""Fixture for xxd command test
+"""
+
+import os
+import shutil
+from subprocess import check_call, CalledProcessError
+import pytest
+
+@pytest.fixture(scope='session')
+def xxd_data(u_boot_config):
+ """Set up a file system to be used in xxd tests
+
+ Args:
+ u_boot_config -- U-boot configuration.
+ """
+ mnt_point = u_boot_config.persistent_data_dir + '/test_xxd'
+ image_path = u_boot_config.persistent_data_dir + '/xxd.img'
+
+ try:
+ os.mkdir(mnt_point, mode = 0o755)
+
+ with open(mnt_point + '/hello', 'w', encoding = 'ascii') as file:
+ file.write('hello world\n\x00\x01\x02\x03\x04\x05')
+
+ check_call(f'virt-make-fs --partition=gpt --size=+1M --type=vfat {mnt_point} {image_path}',
+ shell=True)
+
+ yield image_path
+ except CalledProcessError:
+ pytest.skip('Setup failed')
+ finally:
+ shutil.rmtree(mnt_point)
+ os.remove(image_path)
diff --git a/test/py/tests/test_xxd/test_xxd.py b/test/py/tests/test_xxd/test_xxd.py
new file mode 100644
index 00000000000..06b9cfc0003
--- /dev/null
+++ b/test/py/tests/test_xxd/test_xxd.py
@@ -0,0 +1,23 @@
+# SPDX-License-Identifier: GPL-2.0+
+
+""" Unit test for xxd command
+"""
+
+import pytest
+
+@pytest.mark.boardspec('sandbox')
+@pytest.mark.buildconfigspec('cmd_xxd')
+def test_xxd(u_boot_console, xxd_data):
+ """ Unit test for xxd
+
+ Args:
+ u_boot_console -- U-Boot console
+ xxd_data -- Path to the disk image used for testing.
+ """
+ response = u_boot_console.run_command_list([
+ f'host bind 0 {xxd_data}',
+ 'xxd host 0 hello'])
+
+ assert '00000000: 68 65 6c 6c 6f 20 77 6f 72 6c 64 0a 00 01 02 03 hello world.....\r\r\n' + \
+ '00000010: 04 05 ..' \
+ in response