test_dediprog.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # Copyright (c) 2018 Foundries.io
  2. # Copyright (c) 2019 Nordic Semiconductor ASA.
  3. #
  4. # SPDX-License-Identifier: Apache-2.0
  5. import argparse
  6. import platform
  7. from unittest.mock import patch, call
  8. import pytest
  9. from runners.dediprog import DediProgBinaryRunner
  10. from conftest import RC_KERNEL_BIN
  11. DPCMD_EXE = 'dpcmd.exe' if platform.system() == 'Windows' else 'dpcmd'
  12. EXPECTED_COMMAND = {
  13. (RC_KERNEL_BIN, None):
  14. [DPCMD_EXE,
  15. '--auto', RC_KERNEL_BIN,
  16. '-x', 'ff',
  17. '--silent', '--verify'],
  18. (RC_KERNEL_BIN, '0'):
  19. [DPCMD_EXE,
  20. '--auto', RC_KERNEL_BIN, '--vcc', '0',
  21. '-x', 'ff',
  22. '--silent', '--verify'],
  23. (RC_KERNEL_BIN, '1'):
  24. [DPCMD_EXE,
  25. '--auto', RC_KERNEL_BIN, '--vcc', '1',
  26. '-x', 'ff',
  27. '--silent', '--verify'],
  28. }
  29. def require_patch(program):
  30. assert program in [DPCMD_EXE]
  31. def id_fn(tc):
  32. return 'spi_image={},vcc={}'.format(*tc)
  33. @pytest.mark.parametrize('tc', [
  34. (RC_KERNEL_BIN, None),
  35. (RC_KERNEL_BIN, '0'),
  36. (RC_KERNEL_BIN, '1'),
  37. ], ids=id_fn)
  38. @patch('runners.core.ZephyrBinaryRunner.require', side_effect=require_patch)
  39. @patch('runners.core.ZephyrBinaryRunner.check_call')
  40. def test_dediprog_init(cc, req, tc, runner_config):
  41. '''Test commands using a runner created by constructor.'''
  42. spi_image, vcc = tc
  43. runner = DediProgBinaryRunner(runner_config, spi_image=spi_image,
  44. vcc=vcc, retries=0)
  45. runner.run('flash')
  46. assert cc.call_args_list == [call(EXPECTED_COMMAND[tc])]
  47. @pytest.mark.parametrize('tc', [
  48. (RC_KERNEL_BIN, None),
  49. (RC_KERNEL_BIN, '0'),
  50. (RC_KERNEL_BIN, '1'),
  51. ], ids=id_fn)
  52. @patch('runners.core.ZephyrBinaryRunner.require', side_effect=require_patch)
  53. @patch('runners.core.ZephyrBinaryRunner.check_call')
  54. def test_dediprog_create(cc, req, tc, runner_config):
  55. '''Test commands using a runner created from command line parameters.'''
  56. spi_image, vcc = tc
  57. args = ['--spi-image', spi_image, '--retries', '0']
  58. if vcc:
  59. args.extend(['--vcc', vcc])
  60. parser = argparse.ArgumentParser()
  61. DediProgBinaryRunner.add_parser(parser)
  62. arg_namespace = parser.parse_args(args)
  63. runner = DediProgBinaryRunner.create(runner_config, arg_namespace)
  64. runner.run('flash')
  65. assert cc.call_args_list == [call(EXPECTED_COMMAND[tc])]