summaryrefslogtreecommitdiff
path: root/test/py/tests/test_fit_mkimage_validate.py
diff options
context:
space:
mode:
authorAristo Chen <jj251510319013@gmail.com>2025-07-15 13:03:07 +0000
committerTom Rini <trini@konsulko.com>2025-07-23 13:12:16 -0600
commit93d09d3bd8ea941eff860443db2d8628cdbfe7e8 (patch)
tree124ec402bb724d471afa68e58e17bd5b38781b10 /test/py/tests/test_fit_mkimage_validate.py
parentedb4bf38688bb232ba0739585693aa94be5246f5 (diff)
test: fit: add test case for invalid default configuration reference
Recent changes to mkimage introduced a validation step to ensure that the 'default' property under the /configurations node in a FIT image references a valid configuration subnode. If the referenced node is missing, mkimage will now return an error. This patch adds a Python test case to verify that mkimage correctly fails when the 'default' configuration does not exist. The test creates a minimal ITS with an invalid default reference and checks that mkimage produces the expected error message. Signed-off-by: Aristo Chen <aristo.chen@canonical.com>
Diffstat (limited to 'test/py/tests/test_fit_mkimage_validate.py')
-rw-r--r--test/py/tests/test_fit_mkimage_validate.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/test/py/tests/test_fit_mkimage_validate.py b/test/py/tests/test_fit_mkimage_validate.py
index af56f08ca10..ef974c8c762 100644
--- a/test/py/tests/test_fit_mkimage_validate.py
+++ b/test/py/tests/test_fit_mkimage_validate.py
@@ -7,6 +7,7 @@ import os
import subprocess
import pytest
import fit_util
+import re
@pytest.mark.boardspec('sandbox')
@pytest.mark.requiredtool('dtc')
@@ -56,3 +57,47 @@ def test_fit_invalid_image_reference(ubman):
assert result.returncode != 0, "mkimage should fail due to missing image reference"
assert "references undefined image 'notexist'" in result.stderr
+def test_fit_invalid_default_config(ubman):
+ """Test that mkimage fails when default config is missing"""
+
+ its_fname = fit_util.make_fname(ubman, "invalid.its")
+ itb_fname = fit_util.make_fname(ubman, "invalid.itb")
+ kernel = fit_util.make_kernel(ubman, 'kernel.bin', 'kernel')
+
+ # Write ITS with an invalid reference to a nonexistent default config
+ its_text = '''
+/dts-v1/;
+
+/ {
+ images {
+ kernel@1 {
+ description = "Test Kernel";
+ data = /incbin/("kernel.bin");
+ type = "kernel";
+ arch = "sandbox";
+ os = "linux";
+ compression = "none";
+ load = <0x40000>;
+ entry = <0x40000>;
+ };
+ };
+
+ configurations {
+ default = "conf@1";
+ conf@2 {
+ kernel = "kernel@1";
+ };
+ };
+};
+'''
+
+ with open(its_fname, 'w') as f:
+ f.write(its_text)
+
+ mkimage = os.path.join(ubman.config.build_dir, 'tools/mkimage')
+ cmd = [mkimage, '-f', its_fname, itb_fname]
+
+ result = subprocess.run(cmd, capture_output=True, text=True)
+
+ assert result.returncode != 0, "mkimage should fail due to missing default config"
+ assert re.search(r"Default configuration '.*' not found under /configurations", result.stderr)