Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

87 lines
2.7 KiB

# Copyright (c) 2024 Advanced Micro Devices, Inc.
#
# SPDX-License-Identifier: Apache-2.0
import argparse
from unittest.mock import patch, call
import pytest
from runners.xsdb import XSDBBinaryRunner
from conftest import RC_KERNEL_ELF
TEST_CASES = [
{
"config": None,
"bitstream": None,
"fsbl": None,
"expected_cmd": ["xsdb", "default_cfg_path", RC_KERNEL_ELF],
},
{
"config": "custom_cfg_path",
"bitstream": None,
"fsbl": None,
"expected_cmd": ["xsdb", "custom_cfg_path", RC_KERNEL_ELF],
},
{
"config": None,
"bitstream": "bitstream_path",
"fsbl": None,
"expected_cmd": ["xsdb", "default_cfg_path", RC_KERNEL_ELF, "bitstream_path"],
},
{
"config": None,
"bitstream": None,
"fsbl": "fsbl_path",
"expected_cmd": ["xsdb", "default_cfg_path", RC_KERNEL_ELF, "fsbl_path"],
},
{
"config": None,
"bitstream": "bitstream_path",
"fsbl": "fsbl_path",
"expected_cmd": ["xsdb", "default_cfg_path", RC_KERNEL_ELF, "bitstream_path", "fsbl_path"],
},
]
@pytest.mark.parametrize("tc", TEST_CASES)
@patch("runners.xsdb.os.path.exists", return_value=True)
@patch("runners.xsdb.XSDBBinaryRunner.check_call")
def test_xsdbbinaryrunner_init(check_call, path_exists, tc, runner_config):
'''Test actions using a runner created by constructor.'''
# Mock the default config path
with patch("runners.xsdb.os.path.join", return_value="default_cfg_path"):
runner = XSDBBinaryRunner(
cfg=runner_config,
config=tc["config"],
bitstream=tc["bitstream"],
fsbl=tc["fsbl"],
)
runner.do_run("flash")
assert check_call.call_args_list == [call(tc["expected_cmd"])]
@pytest.mark.parametrize("tc", TEST_CASES)
@patch("runners.xsdb.os.path.exists", return_value=True)
@patch("runners.xsdb.XSDBBinaryRunner.check_call")
def test_xsdbbinaryrunner_create(check_call, path_exists, tc, runner_config):
'''Test actions using a runner created from action line parameters.'''
args = []
if tc["config"]:
args.extend(["--config", tc["config"]])
if tc["bitstream"]:
args.extend(["--bitstream", tc["bitstream"]])
if tc["fsbl"]:
args.extend(["--fsbl", tc["fsbl"]])
parser = argparse.ArgumentParser(allow_abbrev=False)
XSDBBinaryRunner.add_parser(parser)
arg_namespace = parser.parse_args(args)
# Mock the default config path
with patch("runners.xsdb.os.path.join", return_value="default_cfg_path"):
runner = XSDBBinaryRunner.create(runner_config, arg_namespace)
runner.do_run("flash")
assert check_call.call_args_list == [call(tc["expected_cmd"])]