Skip to content

Commit 9f78767

Browse files
committed
Add erase-flash option to erase the flash before programming.
Signed-off-by: Abdelatif Guettouche <abdelatif.guettouche@espressif.com>
1 parent e9e46aa commit 9f78767

File tree

3 files changed

+20
-1
lines changed
  • pytest-embedded/pytest_embedded
  • pytest-embedded-arduino/pytest_embedded_arduino
  • pytest-embedded-serial-esp/pytest_embedded_serial_esp

3 files changed

+20
-1
lines changed

pytest-embedded-arduino/pytest_embedded_arduino/serial.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@ def __init__(
2525
baud: int = EspSerial.DEFAULT_BAUDRATE,
2626
target: Optional[str] = None,
2727
skip_autoflash: bool = False,
28+
erase_flash: bool = False,
2829
**kwargs,
2930
) -> None:
3031
self.app = app
31-
super().__init__(pexpect_proc, target or self.app.target, port, baud, skip_autoflash, **kwargs)
32+
super().__init__(pexpect_proc, target or self.app.target, port, baud, skip_autoflash, erase_flash, **kwargs)
3233

3334
def _start(self):
3435
if self.skip_autoflash:
@@ -68,6 +69,9 @@ def __init__(self, attributes):
6869
default_kwargs['force'] = False
6970
default_kwargs['chip'] = self.app.target
7071

72+
if self.erase_flash:
73+
default_kwargs['erase_all'] = True
74+
7175
default_kwargs.update(self.app.flash_settings)
7276
flash_args = FlashArgs(default_kwargs)
7377

pytest-embedded-serial-esp/pytest_embedded_serial_esp/serial.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def __init__(
4242
port: Optional[str] = None,
4343
baud: int = DEFAULT_BAUDRATE,
4444
skip_autoflash: bool = False,
45+
erase_flash: bool = False,
4546
port_target_cache: Dict[str, str] = None,
4647
**kwargs,
4748
) -> None:
@@ -87,6 +88,7 @@ def __init__(
8788
self.target = target
8889

8990
self.skip_autoflash = skip_autoflash
91+
self.erase_flash = erase_flash
9092
super().__init__(pexpect_proc, port=self.esp._port, **kwargs)
9193

9294
def _post_init(self):

pytest-embedded/pytest_embedded/plugin.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,10 @@ def pytest_addoption(parser):
115115
'--skip-autoflash',
116116
help='y/yes/true for True and n/no/false for False. Set to True to disable auto flash. (Default: False)',
117117
)
118+
esp_group.addoption(
119+
'--erase-flash',
120+
help='y/yes/true for True and n/no/false for False. Set to True to erase flash before programming. (Default: False)',
121+
)
118122

119123
idf_group = parser.getgroup('embedded-idf')
120124
idf_group.addoption(
@@ -566,6 +570,13 @@ def skip_autoflash(request: FixtureRequest) -> Optional[bool]:
566570
return _request_param_or_config_option_or_default(request, 'skip_autoflash', None)
567571

568572

573+
@pytest.fixture
574+
@multi_dut_argument
575+
def erase_flash(request: FixtureRequest) -> Optional[bool]:
576+
"""Enable parametrization for the same cli option"""
577+
return _request_param_or_config_option_or_default(request, 'erase_flash', None)
578+
579+
569580
#######
570581
# idf #
571582
#######
@@ -704,6 +715,7 @@ def _fixture_classes_and_options(
704715
target,
705716
baud,
706717
skip_autoflash,
718+
erase_flash,
707719
part_tool,
708720
confirm_target_elf_sha256,
709721
erase_nvs,
@@ -792,6 +804,7 @@ def _fixture_classes_and_options(
792804
'port': os.getenv('ESPPORT') or port,
793805
'baud': int(os.getenv('ESPBAUD') or baud or EspSerial.DEFAULT_BAUDRATE),
794806
'skip_autoflash': skip_autoflash,
807+
'erase_flash': erase_flash,
795808
}
796809
if 'idf' in _services:
797810
from pytest_embedded_idf.serial import IdfSerial

0 commit comments

Comments
 (0)