test: hook up test of allowing control DTB to act as FIT image
Add a test demonstrating how one can embed various scripts in the
control DTB.
Verify that the source command can be used with ${fdtcontroladdr} by
itself (invoking the default script), and with :<node-name>
suffix. Check that the scripts themselves can invoke "sibling"
scripts. Also verify that without CONTROL_DTB_AS_FIT set, the control
DTB is not accepted by the source command.
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Rasmus Villemoes <rv@rasmusvillemoes.dk>
This commit is contained in:
committed by
Tom Rini
parent
a6369b8bb2
commit
c8a636af67
@@ -0,0 +1,2 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
echo "* default script"
|
||||
@@ -0,0 +1,4 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
|
||||
# Some comment.
|
||||
echo "* inner"
|
||||
@@ -0,0 +1,4 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
echo "* outer 1"
|
||||
source ${fdtcontroladdr}:inner
|
||||
echo "* outer 2"
|
||||
@@ -0,0 +1,24 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
/ {
|
||||
images {
|
||||
default = "boot";
|
||||
boot {
|
||||
description = "Test boot script";
|
||||
data = /incbin/("sandbox-boot.sh");
|
||||
type = "script";
|
||||
compression = "none";
|
||||
};
|
||||
outer {
|
||||
description = "Script testing recursion";
|
||||
data = /incbin/("sandbox-outer.sh");
|
||||
type = "script";
|
||||
compression = "none";
|
||||
};
|
||||
inner {
|
||||
description = "Another test script";
|
||||
data = /incbin/("sandbox-inner.sh");
|
||||
type = "script";
|
||||
compression = "none";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -20,6 +20,7 @@ CONFIG_EFI_CAPSULE_AUTHENTICATE=y
|
||||
CONFIG_EFI_CAPSULE_CRT_FILE="board/sandbox/capsule_pub_key_good.crt"
|
||||
CONFIG_BUTTON_CMD=y
|
||||
CONFIG_FIT=y
|
||||
CONFIG_CONTROL_DTB_AS_FIT=y
|
||||
CONFIG_FIT_SIGNATURE=y
|
||||
CONFIG_FIT_CIPHER=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
@@ -152,6 +153,7 @@ CONFIG_CMD_STACKPROTECTOR_TEST=y
|
||||
CONFIG_CMD_SPAWN=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_OF_LIVE=y
|
||||
CONFIG_DEVICE_TREE_INCLUDES="sandbox_scripts.dtsi"
|
||||
CONFIG_ENV_IS_NOWHERE=y
|
||||
CONFIG_ENV_IS_IN_FAT=y
|
||||
CONFIG_ENV_IS_IN_EXT4=y
|
||||
|
||||
@@ -34,3 +34,34 @@ def test_source(ubman):
|
||||
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')
|
||||
|
||||
Reference in New Issue
Block a user