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.
77 lines
2.3 KiB
77 lines
2.3 KiB
# Copyright (c) 2018 Foundries.io |
|
# Copyright (c) 2019 Nordic Semiconductor ASA. |
|
# |
|
# SPDX-License-Identifier: Apache-2.0 |
|
|
|
import argparse |
|
import platform |
|
from unittest.mock import patch, call |
|
|
|
import pytest |
|
|
|
from runners.dediprog import DediProgBinaryRunner |
|
from conftest import RC_KERNEL_BIN |
|
|
|
DPCMD_EXE = 'dpcmd.exe' if platform.system() == 'Windows' else 'dpcmd' |
|
|
|
EXPECTED_COMMAND = { |
|
(RC_KERNEL_BIN, None): |
|
[DPCMD_EXE, |
|
'--auto', RC_KERNEL_BIN, |
|
'-x', 'ff', |
|
'--silent', '--verify'], |
|
|
|
|
|
(RC_KERNEL_BIN, '0'): |
|
[DPCMD_EXE, |
|
'--auto', RC_KERNEL_BIN, '--vcc', '0', |
|
'-x', 'ff', |
|
'--silent', '--verify'], |
|
|
|
(RC_KERNEL_BIN, '1'): |
|
[DPCMD_EXE, |
|
'--auto', RC_KERNEL_BIN, '--vcc', '1', |
|
'-x', 'ff', |
|
'--silent', '--verify'], |
|
} |
|
|
|
def require_patch(program): |
|
assert program in [DPCMD_EXE] |
|
|
|
def id_fn(tc): |
|
return 'spi_image={},vcc={}'.format(*tc) |
|
|
|
@pytest.mark.parametrize('tc', [ |
|
(RC_KERNEL_BIN, None), |
|
(RC_KERNEL_BIN, '0'), |
|
(RC_KERNEL_BIN, '1'), |
|
], ids=id_fn) |
|
@patch('runners.core.ZephyrBinaryRunner.require', side_effect=require_patch) |
|
@patch('runners.core.ZephyrBinaryRunner.check_call') |
|
def test_dediprog_init(cc, req, tc, runner_config): |
|
'''Test commands using a runner created by constructor.''' |
|
spi_image, vcc = tc |
|
runner = DediProgBinaryRunner(runner_config, spi_image=spi_image, |
|
vcc=vcc, retries=0) |
|
runner.run('flash') |
|
assert cc.call_args_list == [call(EXPECTED_COMMAND[tc])] |
|
|
|
@pytest.mark.parametrize('tc', [ |
|
(RC_KERNEL_BIN, None), |
|
(RC_KERNEL_BIN, '0'), |
|
(RC_KERNEL_BIN, '1'), |
|
], ids=id_fn) |
|
@patch('runners.core.ZephyrBinaryRunner.require', side_effect=require_patch) |
|
@patch('runners.core.ZephyrBinaryRunner.check_call') |
|
def test_dediprog_create(cc, req, tc, runner_config): |
|
'''Test commands using a runner created from command line parameters.''' |
|
spi_image, vcc = tc |
|
args = ['--spi-image', spi_image, '--retries', '0'] |
|
if vcc: |
|
args.extend(['--vcc', vcc]) |
|
parser = argparse.ArgumentParser(allow_abbrev=False) |
|
DediProgBinaryRunner.add_parser(parser) |
|
arg_namespace = parser.parse_args(args) |
|
runner = DediProgBinaryRunner.create(runner_config, arg_namespace) |
|
runner.run('flash') |
|
assert cc.call_args_list == [call(EXPECTED_COMMAND[tc])]
|
|
|