Disables allowing the python argparse library from automatically shortening command line arguments, this prevents issues whereby a new command is added and code that wrongly uses the shortened command of an existing argument which is the same as the new command being added will silently change script behaviour. Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
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])]
|