summaryrefslogtreecommitdiff
path: root/test/py/tests/test_fit_mkimage_validate.py
blob: af56f08ca10703c876029083d9899fcafeae3f00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# SPDX-License-Identifier: GPL-2.0+
# Copyright (c) 2025
#
# Test that mkimage validates image references in configurations

import os
import subprocess
import pytest
import fit_util

@pytest.mark.boardspec('sandbox')
@pytest.mark.requiredtool('dtc')
def test_fit_invalid_image_reference(ubman):
    """Test that mkimage fails when configuration references a missing image"""

    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 image
    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@1 {
            kernel = "kernel@1";
            fdt = "notexist";
        };
    };
};
'''

    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 image reference"
    assert "references undefined image 'notexist'" in result.stderr