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
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"])]
|
|
|