summaryrefslogtreecommitdiff
path: root/test/py/tests/test_source.py
blob: 29ab804f81bf86ebbd531e6ab5faad176985d3b7 (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
59
60
61
62
63
64
65
66
67
# SPDX-License-Identifier: GPL-2.0+
# Copyright (C) 2022 Sean Anderson <[email protected]>

import os
import pytest
import utils

@pytest.mark.boardspec('sandbox')
@pytest.mark.buildconfigspec('cmd_echo')
@pytest.mark.buildconfigspec('cmd_source')
@pytest.mark.buildconfigspec('fit')
def test_source(ubman):
    # Compile our test script image
    mkimage = os.path.join(ubman.config.build_dir, 'tools/mkimage')
    its = os.path.join(ubman.config.source_dir, 'test/py/tests/source.its')
    fit = os.path.join(ubman.config.build_dir, 'source.itb')
    utils.run_and_log(ubman, (mkimage, '-f', its, fit))
    ubman.run_command(f'host load hostfs - $loadaddr {fit}')

    assert '2' in ubman.run_command('source')
    assert '1' in ubman.run_command('source :')
    assert '1' in ubman.run_command('source :script-1')
    assert '2' in ubman.run_command('source :script-2')
    assert 'Fail' in ubman.run_command('source :not-a-script || echo Fail')
    assert '2' in ubman.run_command('source \\#')
    assert '1' in ubman.run_command('source \\#conf-1')
    assert '2' in ubman.run_command('source \\#conf-2')

    ubman.run_command('fdt addr $loadaddr')
    ubman.run_command('fdt rm /configurations default')
    assert '1' in ubman.run_command('source')
    assert 'Fail' in ubman.run_command('source \\# || echo Fail')

    ubman.run_command('fdt rm /images default')
    assert 'Fail' in ubman.run_command('source || echo Fail')
    assert 'Fail' in ubman.run_command('source \\# || echo Fail')

@pytest.mark.boardspec('sandbox')
@pytest.mark.buildconfigspec('cmd_echo')
@pytest.mark.buildconfigspec('cmd_source')
@pytest.mark.buildconfigspec('fit')
@pytest.mark.buildconfigspec('control_dtb_as_fit')
def test_source_control_dtb(ubman):
    output = ubman.run_command('source ${fdtcontroladdr}')
    assert '* default script' in output

    output = ubman.run_command('source ${fdtcontroladdr}:boot')
    assert '* default script' in output

    output = ubman.run_command('source ${fdtcontroladdr}:outer')
    assert '* outer 1' in output
    assert '* inner' in output
    assert '* outer 2' in output

    output = ubman.run_command('source ${fdtcontroladdr}:inner')
    assert '* outer' not in output
    assert '* inner' in output

    assert 'Fail' in ubman.run_command('source ${fdtcontroladdr}:no-such-script || echo Fail')

@pytest.mark.buildconfigspec('cmd_echo')
@pytest.mark.buildconfigspec('cmd_source')
@pytest.mark.buildconfigspec('fit')
@pytest.mark.notbuildconfigspec('control_dtb_as_fit')
def test_source_reject_control_dtb(ubman):
    assert 'Fail' in ubman.run_command('source ${fdtcontroladdr} || echo Fail')
    assert 'Fail' in ubman.run_command('source ${fdtcontroladdr}:boot || echo Fail')