mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
|
# SPDX-License-Identifier: Unlicense OR CC0-1.0
|
|
import re
|
|
|
|
import pytest
|
|
from pytest_embedded import Dut
|
|
|
|
DEFAULT_TIMEOUT = 20
|
|
TEST_SUBMENU_PATTERN_PYTEST = re.compile(rb'\s+\((\d+)\)\s+"([^"]+)"\r?\n')
|
|
|
|
|
|
def run_multiple_stages(dut: Dut, test_case_num: int, stages: int) -> None:
|
|
for stage in range(1, stages + 1):
|
|
dut.write(str(test_case_num))
|
|
dut.expect(TEST_SUBMENU_PATTERN_PYTEST, timeout=DEFAULT_TIMEOUT)
|
|
dut.write(str(stage))
|
|
if stage != stages:
|
|
dut.expect_exact('Press ENTER to see the list of tests.')
|
|
|
|
|
|
@pytest.mark.supported_targets
|
|
@pytest.mark.temp_skip_ci(targets=['esp32c5'], reason='C5 has not supported deep sleep') # TODO: [ESP32C5] IDF-8640, IDF-10317
|
|
@pytest.mark.generic
|
|
def test_app_update(dut: Dut) -> None:
|
|
extra_data = dut.parse_test_menu()
|
|
for test_case in extra_data:
|
|
if test_case.type != 'multi_stage':
|
|
dut.write(str(test_case.index))
|
|
else:
|
|
run_multiple_stages(dut, test_case.index, len(test_case.subcases))
|
|
dut.expect_unity_test_output(timeout=90)
|
|
dut.expect_exact("Enter next test, or 'enter' to see menu")
|