test: Add test for source command
This adds a basic test for FIT image handling by the source command.
It's a python test becase we need to run mkimage.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
diff --git a/test/py/tests/source.its b/test/py/tests/source.its
new file mode 100644
index 0000000..3c62f77
--- /dev/null
+++ b/test/py/tests/source.its
@@ -0,0 +1,43 @@
+/dts-v1/;
+
+/ {
+ description = "FIT image to test the source command";
+ #address-cells = <1>;
+
+ images {
+ default = "script-1";
+
+ script-1 {
+ data = "echo 1";
+ type = "script";
+ arch = "sandbox";
+ compression = "none";
+ };
+
+ script-2 {
+ data = "echo 2";
+ type = "script";
+ arch = "sandbox";
+ compression = "none";
+ };
+
+ not-a-script {
+ data = "echo 3";
+ type = "kernel";
+ arch = "sandbox";
+ compression = "none";
+ };
+ };
+
+ configurations {
+ default = "conf-2";
+
+ conf-1 {
+ script = "script-1";
+ };
+
+ conf-2 {
+ script = "script-2";
+ };
+ };
+};
diff --git a/test/py/tests/test_source.py b/test/py/tests/test_source.py
new file mode 100644
index 0000000..e5ffdfe
--- /dev/null
+++ b/test/py/tests/test_source.py
@@ -0,0 +1,28 @@
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright (C) 2022 Sean Anderson <sean.anderson@seco.com>
+
+import os
+import pytest
+import u_boot_utils as util
+
+@pytest.mark.boardspec('sandbox')
+@pytest.mark.buildconfigspec('cmd_echo')
+@pytest.mark.buildconfigspec('cmd_source')
+@pytest.mark.buildconfigspec('fit')
+def test_source(u_boot_console):
+ # Compile our test script image
+ cons = u_boot_console
+ mkimage = os.path.join(cons.config.build_dir, 'tools/mkimage')
+ its = os.path.join(cons.config.source_dir, 'test/py/tests/source.its')
+ fit = os.path.join(cons.config.build_dir, 'source.itb')
+ util.run_and_log(cons, (mkimage, '-f', its, fit))
+ cons.run_command(f'host load hostfs - $loadaddr {fit}')
+
+ assert '1' in cons.run_command('source')
+ assert '1' in cons.run_command('source :script-1')
+ assert '2' in cons.run_command('source :script-2')
+ assert 'Fail' in cons.run_command('source :not-a-script || echo Fail')
+
+ cons.run_command('fdt addr $loadaddr')
+ cons.run_command('fdt rm /images default')
+ assert 'Fail' in cons.run_command('source || echo Fail')