blob: d64055b52917cf12c16d04c4a855fb34440ab0a4 [file] [log] [blame]
# 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"],
},
{
"config": "custom_cfg_path",
"bitstream": None,
"fsbl": None,
"expected_cmd": ["xsdb", "custom_cfg_path"],
},
{
"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"])]