78 lines
2.3 KiB
Python
78 lines
2.3 KiB
Python
# 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])]
|