From 9148af683144530634f2df6ea50ee66cee8d9deb Mon Sep 17 00:00:00 2001 From: "igor.udot" Date: Wed, 3 Dec 2025 10:59:37 +0800 Subject: [PATCH 1/4] ci: fix mismatch in check_build_test_rules --- tools/ci/check_build_test_rules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci/check_build_test_rules.py b/tools/ci/check_build_test_rules.py index 1b40348495..cee1bc69b3 100755 --- a/tools/ci/check_build_test_rules.py +++ b/tools/ci/check_build_test_rules.py @@ -266,7 +266,7 @@ def check_test_scripts( if manifest_targets == actual_targets: continue - if not (set(manifest_targets) - set(actual_targets + (bypass_targets or []))): + if not ((set(manifest_targets) ^ set(actual_targets)) - set(bypass_targets or [])): continue print(f'Test target MISMATCH!!!: {app_dir}') From e075bf278134cc499c2fda726df08bfd30bf5229 Mon Sep 17 00:00:00 2001 From: "igor.udot" Date: Thu, 4 Dec 2025 12:05:00 +0800 Subject: [PATCH 2/4] ci: wildcard temp_skip and support multiple temp_skip markers --- tools/ci/idf_pytest/plugin.py | 44 ++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/tools/ci/idf_pytest/plugin.py b/tools/ci/idf_pytest/plugin.py index cfa8d8ffcf..2372b43ecd 100644 --- a/tools/ci/idf_pytest/plugin.py +++ b/tools/ci/idf_pytest/plugin.py @@ -50,20 +50,20 @@ def requires_elf_or_map(case: PytestCase) -> bool: def skipped_targets(item: Function) -> set[str]: def _get_temp_markers_disabled_targets(marker_name: str) -> set[str]: - temp_marker = item.get_closest_marker(marker_name) + targets = [] + for _m in item.own_markers: + if _m.name == marker_name: + if not _m.kwargs.get('targets') or not _m.kwargs.get('reason'): + raise ValueError( + f'`{marker_name}` should always use keyword arguments `targets` and `reason`. ' # noqa: W604 + f'For example: ' + f'`@pytest.mark.{marker_name}(targets=["esp32"], reason="IDF-xxxx, will fix it ASAP")`' + ) + targets.extend(to_list(_m.kwargs['targets'])) - if not temp_marker: - return set() - - # temp markers should always use keyword arguments `targets` and `reason` - if not temp_marker.kwargs.get('targets') or not temp_marker.kwargs.get('reason'): - raise ValueError( - f'`{marker_name}` should always use keyword arguments `targets` and `reason`. ' # noqa: W604 - f'For example: ' - f'`@pytest.mark.{marker_name}(targets=["esp32"], reason="IDF-xxxx, will fix it ASAP")`' - ) - - return set(to_list(temp_marker.kwargs['targets'])) + if targets: + return set(targets) + return set() _count = IdfLocalPlugin.get_param(item, 'count', 1) @@ -127,7 +127,23 @@ class IdfLocalPlugin: deselected_items.append(item) continue - if case.target_selector in skipped_targets(item): + skipped = False + current_targets = case.target_selector.split(',') + for st in skipped_targets(item): + # Handle wildcard patterns like "esp32p4,*" or "*,esp32p4" + if '*' in st: + skip_pattern = st.split(',') + if len(skip_pattern) != len(current_targets): + continue + if all(_p == '*' or _p == _t for _p, _t in zip(skip_pattern, current_targets)): + skipped = True + break + # Exact match (no wildcard) + elif case.target_selector == st: + skipped = True + break + + if skipped: deselected_items.append(item) item.stash[IDF_CI_PYTEST_DEBUG_INFO_KEY] = 'skipped by temp_skip markers' continue From fc3207288bea1f33ff8ab399d6e0e6c42f279b95 Mon Sep 17 00:00:00 2001 From: "igor.udot" Date: Thu, 4 Dec 2025 13:57:04 +0800 Subject: [PATCH 3/4] ci: update precommit check-all-apps-readmes language_version --- .pre-commit-config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 15201b2b05..ed0a67133f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -140,6 +140,7 @@ repos: name: Check if all apps readme files match given .build-test-rules.yml files. Modify the supported target tables entry: tools/ci/check_build_test_rules.py check-readmes language: python + language_version: python3.10 files: 'tools/test_apps/.+|examples/.+|components/.+|tools/idf_py_actions/constants.py|tools/ci/check_build_test_rules.py' require_serial: true additional_dependencies: From 8c233aa9bdbeba5421f95ae9d636b6c691e45cd5 Mon Sep 17 00:00:00 2001 From: "igor.udot" Date: Thu, 4 Dec 2025 13:57:18 +0800 Subject: [PATCH 4/4] ci: temp_skip_ci for p4 --- .../test_app_update/pytest_app_update_ut.py | 4 ++ .../test_apps/legacy_twai/pytest_twai.py | 3 + .../test_apps/esp_common/pytest_esp_common.py | 5 ++ .../i2s_multi_dev/pytest_i2s_multi_dev.py | 1 + .../test_apps/.build-test-rules.yml | 4 -- .../sdio/sdio_common_tests/pytest_sdio.py | 41 ++++++------ .../test_apps/sdspi/pytest_sdspi.py | 1 + .../test_apps/test_twai/pytest_driver_twai.py | 3 + .../usb_serial_jtag/pytest_usb_serial_jtag.py | 2 + .../pytest_usb_serial_jtag_vfs.py | 3 + .../esp_eth/test_apps/pytest_esp_eth.py | 4 ++ .../test_apps/dma2d/pytest_dma2d.py | 1 + .../test_apps/mspi/pytest_flash_psram.py | 24 +++---- .../test_apps/rtc_clk/pytest_rtc_clk.py | 2 + .../wakeup_tests/pytest_wakeup_tests.py | 1 + components/esp_mm/test_apps/mm/pytest_mmap.py | 3 + .../pytest_esp_vfs_l2tap.py | 1 + .../test_apps/stdio/pytest_esp_stdio_tests.py | 5 ++ .../mbedtls/test_apps/pytest_mbedtls_ut.py | 3 + examples/ethernet/basic/pytest_eth_basic.py | 1 + examples/ethernet/iperf/pytest_eth_iperf.py | 1 + examples/peripherals/.build-test-rules.yml | 14 ++++- .../cybergear/pytest_cybergear_example.py | 1 + .../twai/twai_network/pytest_twai_network.py | 1 + .../twai/twai_utils/pytest_twai_utils.py | 8 +++ .../pytest_flash_encryption.py | 2 + .../tee_attestation/pytest_tee_attestation.py | 2 +- .../tee/tee_basic/pytest_tee_basic.py | 2 +- .../tee_secure_ota/pytest_tee_secure_ota.py | 2 +- .../pytest_tee_secure_storage.py | 2 +- examples/storage/emmc/pytest_emmc_example.py | 5 +- .../sdspi/pytest_sdspi_card_example.py | 1 + .../app_trace_basic/pytest_app_trace_basic.py | 2 + .../lp_core/lp_mailbox/pytest_lp_mailbox.py | 3 +- tools/test_apps/system/panic/pytest_panic.py | 62 +++++++++++++++++++ .../pytest_ram_loadable_app.py | 3 + 36 files changed, 179 insertions(+), 44 deletions(-) diff --git a/components/app_update/test_apps/test_app_update/pytest_app_update_ut.py b/components/app_update/test_apps/test_app_update/pytest_app_update_ut.py index 7abfb482c4..bc4dc36a7b 100644 --- a/components/app_update/test_apps/test_app_update/pytest_app_update_ut.py +++ b/components/app_update/test_apps/test_app_update/pytest_app_update_ut.py @@ -19,6 +19,7 @@ TEST_SUBMENU_PATTERN_PYTEST = re.compile(rb'\s+\((\d+)\)\s+"([^"]+)"\r?\n') indirect=True, ) @idf_parametrize('target', ['supported_targets'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_app_update(dut: Dut) -> None: dut.run_all_single_board_cases(timeout=180) @@ -32,6 +33,7 @@ def test_app_update(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', ['supported_targets'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_app_update_xip_psram(dut: Dut) -> None: dut.run_all_single_board_cases(timeout=180) @@ -45,6 +47,7 @@ def test_app_update_xip_psram(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', ['supported_targets'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_app_update_xip_psram_rom_impl(dut: Dut) -> None: dut.run_all_single_board_cases(timeout=180) @@ -58,6 +61,7 @@ def test_app_update_xip_psram_rom_impl(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32', 'esp32c3', 'esp32s3', 'esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_app_update_with_rollback(dut: Dut) -> None: dut.run_all_single_board_cases(timeout=180) diff --git a/components/driver/test_apps/legacy_twai/pytest_twai.py b/components/driver/test_apps/legacy_twai/pytest_twai.py index f8d4b70a7a..40285d65d6 100644 --- a/components/driver/test_apps/legacy_twai/pytest_twai.py +++ b/components/driver/test_apps/legacy_twai/pytest_twai.py @@ -26,6 +26,7 @@ from pytest_embedded_idf.utils import idf_parametrize @idf_parametrize( 'target', ['esp32', 'esp32c3', 'esp32c6', 'esp32h2', 'esp32s2', 'esp32s3', 'esp32p4'], indirect=['target'] ) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_legacy_twai_self(dut: Dut) -> None: dut.run_all_single_board_cases(group='twai-loop-back') @@ -94,6 +95,7 @@ def fixture_create_socket_can() -> Bus: @idf_parametrize( 'target', ['esp32', 'esp32c3', 'esp32c6', 'esp32h2', 'esp32s2', 'esp32s3', 'esp32p4'], indirect=['target'] ) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_legacy_twai_listen_only(dut: Dut, socket_can: Bus) -> None: esp_reset_and_wait_ready(dut) @@ -124,6 +126,7 @@ def test_legacy_twai_listen_only(dut: Dut, socket_can: Bus) -> None: @idf_parametrize( 'target', ['esp32', 'esp32c3', 'esp32c6', 'esp32h2', 'esp32s2', 'esp32s3', 'esp32p4'], indirect=['target'] ) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_legacy_twai_remote_request(dut: Dut, socket_can: Bus) -> None: esp_reset_and_wait_ready(dut) diff --git a/components/esp_common/test_apps/esp_common/pytest_esp_common.py b/components/esp_common/test_apps/esp_common/pytest_esp_common.py index 95f4d1036d..18c3b5d4ec 100644 --- a/components/esp_common/test_apps/esp_common/pytest_esp_common.py +++ b/components/esp_common/test_apps/esp_common/pytest_esp_common.py @@ -15,6 +15,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets indirect=True, ) @idf_parametrize('target', ['supported_targets'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_common(dut: Dut) -> None: dut.run_all_single_board_cases() @@ -29,6 +30,7 @@ def test_esp_common(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', soc_filtered_targets('SOC_SPIRAM_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_attr_psram_noinit(dut: Dut) -> None: dut.run_all_single_board_cases() @@ -41,6 +43,7 @@ def test_esp_attr_psram_noinit(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', soc_filtered_targets('SOC_SPIRAM_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_attr_psram_noinit_multiple_stages(case_tester: Any) -> None: case_tester.run_all_multi_stage_cases() @@ -55,6 +58,7 @@ def test_esp_attr_psram_noinit_multiple_stages(case_tester: Any) -> None: indirect=True, ) @idf_parametrize('target', soc_filtered_targets('SOC_SPIRAM_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_attr_psram(dut: Dut) -> None: dut.run_all_single_board_cases() @@ -67,5 +71,6 @@ def test_esp_attr_psram(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', soc_filtered_targets('SOC_SPIRAM_XIP_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_attr_xip_psram(dut: Dut) -> None: dut.run_all_single_board_cases() diff --git a/components/esp_driver_i2s/test_apps/i2s_multi_dev/pytest_i2s_multi_dev.py b/components/esp_driver_i2s/test_apps/i2s_multi_dev/pytest_i2s_multi_dev.py index d0d94ae389..513b278673 100644 --- a/components/esp_driver_i2s/test_apps/i2s_multi_dev/pytest_i2s_multi_dev.py +++ b/components/esp_driver_i2s/test_apps/i2s_multi_dev/pytest_i2s_multi_dev.py @@ -6,6 +6,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets @pytest.mark.generic_multi_device +@pytest.mark.temp_skip_ci(targets=['esp32c61'], reason='p4 rev3 migration # TODO: IDF-11442') @pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration # TODO: IDF-14396') @pytest.mark.parametrize('count', [2], indirect=True) @idf_parametrize('target', soc_filtered_targets('SOC_I2S_SUPPORTS_TDM == 1'), indirect=['target']) diff --git a/components/esp_driver_ledc/test_apps/.build-test-rules.yml b/components/esp_driver_ledc/test_apps/.build-test-rules.yml index c9446e000a..50e40b72c0 100644 --- a/components/esp_driver_ledc/test_apps/.build-test-rules.yml +++ b/components/esp_driver_ledc/test_apps/.build-test-rules.yml @@ -3,9 +3,5 @@ components/esp_driver_ledc/test_apps/ledc: disable: - if: SOC_LEDC_SUPPORTED != 1 - disable_test: - - if: IDF_TARGET == "esp32p4" - temporary: true - reason: p4 rev3 migration # TODO: IDF-14398 depends_components: - esp_driver_ledc diff --git a/components/esp_driver_sdio/test_apps/sdio/sdio_common_tests/pytest_sdio.py b/components/esp_driver_sdio/test_apps/sdio/sdio_common_tests/pytest_sdio.py index 6728893cc9..4281767542 100644 --- a/components/esp_driver_sdio/test_apps/sdio/sdio_common_tests/pytest_sdio.py +++ b/components/esp_driver_sdio/test_apps/sdio/sdio_common_tests/pytest_sdio.py @@ -1,14 +1,12 @@ # SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD # SPDX-License-Identifier: CC0-1.0 import os.path -from typing import List -from typing import Tuple import pytest from pytest_embedded_idf import IdfDut -def parameter_expand(existing_parameters: List[List[str]], value_list: List[str]) -> List[List[str]]: +def parameter_expand(existing_parameters: list[list[str]], value_list: list[str]) -> list[list[str]]: ret = [] for param in existing_parameters: ret.extend([param + [value] for value in value_list]) @@ -52,7 +50,7 @@ c6_param_retention = [pytest.param(*param) for param in parameter_expand(esp32_c # Normal tests -def test_sdio_flow(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_flow(dut: tuple[IdfDut, IdfDut]) -> None: dut[1].expect('Press ENTER to see the list of tests') dut[1].write('[sdio]') dut[1].expect('test_sdio: slave ready') @@ -73,7 +71,7 @@ def test_sdio_flow(dut: Tuple[IdfDut, IdfDut]) -> None: indirect=True, ) @pytest.mark.parametrize('app_path, target, config', c6_param_default, indirect=True) -def test_sdio_esp32_esp32c6(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_esp32_esp32c6(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_flow(dut) @@ -86,7 +84,7 @@ def test_sdio_esp32_esp32c6(dut: Tuple[IdfDut, IdfDut]) -> None: indirect=True, ) @pytest.mark.parametrize('app_path, target, config', esp32_param_default, indirect=True) -def test_sdio_esp32_esp32(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_esp32_esp32(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_flow(dut) @@ -99,7 +97,8 @@ def test_sdio_esp32_esp32(dut: Tuple[IdfDut, IdfDut]) -> None: indirect=True, ) @pytest.mark.parametrize('app_path, target, config', c5_param_default, indirect=True) -def test_sdio_esp32p4_esp32c5(dut: Tuple[IdfDut, IdfDut]) -> None: +@pytest.mark.temp_skip_ci(targets=['esp32p4,*', '*,esp32p4'], reason='p4 rev3 migration') +def test_sdio_esp32p4_esp32c5(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_flow(dut) @@ -112,12 +111,12 @@ def test_sdio_esp32p4_esp32c5(dut: Tuple[IdfDut, IdfDut]) -> None: indirect=True, ) @pytest.mark.parametrize('app_path, target, config', c61_param_default, indirect=True) -def test_sdio_esp32_esp32c61(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_esp32_esp32c61(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_flow(dut) # From host speed tests -def test_sdio_speed_frhost_flow(dut: Tuple[IdfDut, IdfDut], expected_4b_speed: int, expected_1b_speed: int) -> None: +def test_sdio_speed_frhost_flow(dut: tuple[IdfDut, IdfDut], expected_4b_speed: int, expected_1b_speed: int) -> None: dut[1].expect('Press ENTER to see the list of tests') dut[1].write('"SDIO_Slave: test from host (Performance)"') dut[1].expect('test_sdio: slave ready') @@ -145,7 +144,7 @@ def test_sdio_speed_frhost_flow(dut: Tuple[IdfDut, IdfDut], expected_4b_speed: i indirect=True, ) @pytest.mark.parametrize('app_path, target, config', c6_param_default, indirect=True) -def test_sdio_speed_frhost_esp32_esp32c6(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_speed_frhost_esp32_esp32c6(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_speed_frhost_flow(dut, 10000, 4000) @@ -158,7 +157,7 @@ def test_sdio_speed_frhost_esp32_esp32c6(dut: Tuple[IdfDut, IdfDut]) -> None: indirect=True, ) @pytest.mark.parametrize('app_path, target, config', esp32_param_default, indirect=True) -def test_sdio_speed_frhost_esp32_esp32(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_speed_frhost_esp32_esp32(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_speed_frhost_flow(dut, 12200, 4000) @@ -171,7 +170,8 @@ def test_sdio_speed_frhost_esp32_esp32(dut: Tuple[IdfDut, IdfDut]) -> None: indirect=True, ) @pytest.mark.parametrize('app_path, target, config', c5_param_default, indirect=True) -def test_sdio_speed_frhost_esp32p4_esp32c5(dut: Tuple[IdfDut, IdfDut]) -> None: +@pytest.mark.temp_skip_ci(targets=['esp32p4,*', '*,esp32p4'], reason='p4 rev3 migration') +def test_sdio_speed_frhost_esp32p4_esp32c5(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_speed_frhost_flow(dut, 10000, 4000) @@ -184,12 +184,12 @@ def test_sdio_speed_frhost_esp32p4_esp32c5(dut: Tuple[IdfDut, IdfDut]) -> None: indirect=True, ) @pytest.mark.parametrize('app_path, target, config', c61_param_default, indirect=True) -def test_sdio_speed_frhost_esp32_esp32c61(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_speed_frhost_esp32_esp32c61(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_speed_frhost_flow(dut, 10000, 4000) # To host speed tests -def test_sdio_speed_tohost_flow(dut: Tuple[IdfDut, IdfDut], expected_4b_speed: int, expected_1b_speed: int) -> None: +def test_sdio_speed_tohost_flow(dut: tuple[IdfDut, IdfDut], expected_4b_speed: int, expected_1b_speed: int) -> None: dut[1].expect('Press ENTER to see the list of tests') dut[1].write('"SDIO_Slave: test to host (Performance)"') dut[1].expect('test_sdio: slave ready') @@ -217,7 +217,7 @@ def test_sdio_speed_tohost_flow(dut: Tuple[IdfDut, IdfDut], expected_4b_speed: i indirect=True, ) @pytest.mark.parametrize('app_path, target, config', c6_param_default, indirect=True) -def test_sdio_speed_tohost_esp32_esp32c6(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_speed_tohost_esp32_esp32c6(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_speed_tohost_flow(dut, 9000, 4000) @@ -230,7 +230,7 @@ def test_sdio_speed_tohost_esp32_esp32c6(dut: Tuple[IdfDut, IdfDut]) -> None: indirect=True, ) @pytest.mark.parametrize('app_path, target, config', esp32_param_default, indirect=True) -def test_sdio_speed_tohost_esp32_esp32(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_speed_tohost_esp32_esp32(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_speed_tohost_flow(dut, 12200, 4000) @@ -243,7 +243,8 @@ def test_sdio_speed_tohost_esp32_esp32(dut: Tuple[IdfDut, IdfDut]) -> None: indirect=True, ) @pytest.mark.parametrize('app_path, target, config', c5_param_default, indirect=True) -def test_sdio_speed_tohost_esp32p4_esp32c5(dut: Tuple[IdfDut, IdfDut]) -> None: +@pytest.mark.temp_skip_ci(targets=['esp32p4,*', '*,esp32p4'], reason='p4 rev3 migration') +def test_sdio_speed_tohost_esp32p4_esp32c5(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_speed_tohost_flow(dut, 8500, 4000) @@ -256,12 +257,12 @@ def test_sdio_speed_tohost_esp32p4_esp32c5(dut: Tuple[IdfDut, IdfDut]) -> None: indirect=True, ) @pytest.mark.parametrize('app_path, target, config', c61_param_default, indirect=True) -def test_sdio_speed_tohost_esp32_esp32c61(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_speed_tohost_esp32_esp32c61(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_speed_tohost_flow(dut, 8500, 4000) # Retention tests -def test_sdio_retention(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_retention(dut: tuple[IdfDut, IdfDut]) -> None: dut[1].expect('Press ENTER to see the list of tests') dut[1].write('[sdio_retention]') dut[1].expect('test_sdio: slave ready') @@ -282,5 +283,5 @@ def test_sdio_retention(dut: Tuple[IdfDut, IdfDut]) -> None: indirect=True, ) @pytest.mark.parametrize('app_path, target, config', c6_param_retention, indirect=True) -def test_sdio_retention_esp32_esp32c6(dut: Tuple[IdfDut, IdfDut]) -> None: +def test_sdio_retention_esp32_esp32c6(dut: tuple[IdfDut, IdfDut]) -> None: test_sdio_retention(dut) diff --git a/components/esp_driver_sdspi/test_apps/sdspi/pytest_sdspi.py b/components/esp_driver_sdspi/test_apps/sdspi/pytest_sdspi.py index 0234e93445..c5b4fe611a 100644 --- a/components/esp_driver_sdspi/test_apps/sdspi/pytest_sdspi.py +++ b/components/esp_driver_sdspi/test_apps/sdspi/pytest_sdspi.py @@ -16,5 +16,6 @@ from pytest_embedded_idf.utils import idf_parametrize indirect=True, ) @idf_parametrize('target', ['esp32', 'esp32s3', 'esp32c3', 'esp32p4', 'esp32c5'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_sdspi(dut: IdfDut) -> None: dut.run_all_single_board_cases(reset=True, timeout=180) diff --git a/components/esp_driver_twai/test_apps/test_twai/pytest_driver_twai.py b/components/esp_driver_twai/test_apps/test_twai/pytest_driver_twai.py index da8f6a814e..43fe456db7 100644 --- a/components/esp_driver_twai/test_apps/test_twai/pytest_driver_twai.py +++ b/components/esp_driver_twai/test_apps/test_twai/pytest_driver_twai.py @@ -18,6 +18,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets @pytest.mark.generic @pytest.mark.parametrize('config', ['release', 'cache_safe'], indirect=True) @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_driver_twai_loopbk(dut: Dut) -> None: dut.run_all_single_board_cases(group='twai', reset=True) @@ -77,6 +78,7 @@ def fixture_create_socket_can() -> Bus: @pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='no runner') @pytest.mark.parametrize('config', ['release'], indirect=True) @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_driver_twai_listen_only(dut: Dut, socket_can: Bus) -> None: esp_reset_and_wait_ready(dut) @@ -99,6 +101,7 @@ def test_driver_twai_listen_only(dut: Dut, socket_can: Bus) -> None: @pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='no runner') @pytest.mark.parametrize('config', ['release'], indirect=True) @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_driver_twai_remote_request(dut: Dut, socket_can: Bus) -> None: esp_reset_and_wait_ready(dut) diff --git a/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag/pytest_usb_serial_jtag.py b/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag/pytest_usb_serial_jtag.py index c2309eea94..85d10b6955 100644 --- a/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag/pytest_usb_serial_jtag.py +++ b/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag/pytest_usb_serial_jtag.py @@ -14,6 +14,7 @@ from pytest_embedded_idf.utils import idf_parametrize indirect=True, ) @idf_parametrize('target', ['esp32s3', 'esp32c3', 'esp32c6', 'esp32h2', 'esp32c61', 'esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_usb_serial_jtag_dev(dut: Dut) -> None: # type: ignore dut.expect_exact('Press ENTER to see the list of tests') dut.write('"test print via usb_serial_jtag driver multiple times in different tasks"') @@ -36,6 +37,7 @@ def test_usb_serial_jtag_dev(dut: Dut) -> None: # type: ignore indirect=True, ) @idf_parametrize('target', ['esp32s3', 'esp32c3', 'esp32c6', 'esp32h2', 'esp32c61', 'esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_usb_serial_jtag_rom_dev(dut: Dut) -> None: # type: ignore dut.expect_exact('Press ENTER to see the list of tests') dut.write('"test rom printf work after driver installed"') diff --git a/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag_vfs/pytest_usb_serial_jtag_vfs.py b/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag_vfs/pytest_usb_serial_jtag_vfs.py index 969b81d423..3c5976309e 100644 --- a/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag_vfs/pytest_usb_serial_jtag_vfs.py +++ b/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag_vfs/pytest_usb_serial_jtag_vfs.py @@ -14,6 +14,7 @@ from pytest_embedded_idf.utils import idf_parametrize indirect=True, ) @idf_parametrize('target', ['esp32s3', 'esp32c3', 'esp32c6', 'esp32h2', 'esp32c61', 'esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_usj_vfs_select(dut: Dut) -> None: test_message = 'test123456789!@#%^&*' @@ -34,6 +35,7 @@ def test_usj_vfs_select(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32s3', 'esp32c3', 'esp32c6', 'esp32h2', 'esp32c61', 'esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_usj_vfs_read_return(dut: Dut) -> None: test_message = '!(@*#&(!*@&#((SDasdkjhad\nce' @@ -53,6 +55,7 @@ def test_usj_vfs_read_return(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32s3', 'esp32c3', 'esp32c6', 'esp32h2', 'esp32c61', 'esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_usj_vfs_read_blocking(dut: Dut) -> None: test_message = 'testdata' diff --git a/components/esp_eth/test_apps/pytest_esp_eth.py b/components/esp_eth/test_apps/pytest_esp_eth.py index bca920dd0d..0b850bd415 100644 --- a/components/esp_eth/test_apps/pytest_esp_eth.py +++ b/components/esp_eth/test_apps/pytest_esp_eth.py @@ -297,6 +297,7 @@ def test_esp_eth_ip101(dut: IdfDut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp32p4_ethernet(dut: IdfDut) -> None: ethernet_test(dut) dut.serial.hard_reset() @@ -312,6 +313,7 @@ def test_esp32p4_ethernet(dut: IdfDut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp32p4_emac(dut: IdfDut) -> None: ethernet_int_emac_test(dut) dut.serial.hard_reset() @@ -327,6 +329,7 @@ def test_esp32p4_emac(dut: IdfDut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp32p4_emac_clko(dut: IdfDut) -> None: dut.run_all_single_board_cases(group='esp_emac_clk_out') @@ -469,5 +472,6 @@ def test_esp_eth_dm9051(dut: IdfDut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_emac_sleep_retention(dut: IdfDut) -> None: dut.run_all_single_board_cases(group='sleep_retention', timeout=120) diff --git a/components/esp_hw_support/test_apps/dma2d/pytest_dma2d.py b/components/esp_hw_support/test_apps/dma2d/pytest_dma2d.py index 8f02215a63..f7f936fc3c 100644 --- a/components/esp_hw_support/test_apps/dma2d/pytest_dma2d.py +++ b/components/esp_hw_support/test_apps/dma2d/pytest_dma2d.py @@ -15,5 +15,6 @@ from pytest_embedded_idf.utils import soc_filtered_targets indirect=True, ) @idf_parametrize('target', soc_filtered_targets('SOC_DMA2D_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_dma2d(dut: Dut) -> None: dut.run_all_single_board_cases() diff --git a/components/esp_hw_support/test_apps/mspi/pytest_flash_psram.py b/components/esp_hw_support/test_apps/mspi/pytest_flash_psram.py index 4925c8c0a9..2897e4b8af 100644 --- a/components/esp_hw_support/test_apps/mspi/pytest_flash_psram.py +++ b/components/esp_hw_support/test_apps/mspi/pytest_flash_psram.py @@ -58,18 +58,20 @@ def test_flash4_psram4(dut: IdfDut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_flash_psram_esp32p4(dut: IdfDut) -> None: dut.run_all_single_board_cases() -@pytest.mark.generic -@pytest.mark.parametrize( - 'config', - [ - 'generic_timing_tuning_log_safe', - ], - indirect=True, -) -@idf_parametrize('target', ['esp32c5', 'esp32c61'], indirect=['target']) -def test_flash_psram_generic(dut: IdfDut) -> None: - dut.run_all_single_board_cases() +# TODO: never was tested IDF-14918 +# @pytest.mark.generic +# @pytest.mark.parametrize( +# 'config', +# [ +# 'generic_timing_tuning_log_safe', +# ], +# indirect=True, +# ) +# @idf_parametrize('target', ['esp32c5', 'esp32c61'], indirect=['target']) +# def test_flash_psram_generic(dut: IdfDut) -> None: +# dut.run_all_single_board_cases() diff --git a/components/esp_hw_support/test_apps/rtc_clk/pytest_rtc_clk.py b/components/esp_hw_support/test_apps/rtc_clk/pytest_rtc_clk.py index bd3bb67f91..1ad1f66508 100644 --- a/components/esp_hw_support/test_apps/rtc_clk/pytest_rtc_clk.py +++ b/components/esp_hw_support/test_apps/rtc_clk/pytest_rtc_clk.py @@ -10,6 +10,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets @pytest.mark.generic @idf_parametrize('target', soc_filtered_targets('SOC_CLK_TREE_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_rtc_clk(case_tester: CaseTester) -> None: for case in case_tester.test_menu: if 'test_env' in case.attributes: @@ -31,5 +32,6 @@ def test_rtc_no_xtal32k(dut: IdfDut) -> None: @pytest.mark.generic @idf_parametrize('target', soc_filtered_targets('SOC_CLK_TREE_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_rtc_calib_compensation_across_dslp(case_tester: CaseTester) -> None: case_tester.run_all_multi_stage_cases() diff --git a/components/esp_hw_support/test_apps/wakeup_tests/pytest_wakeup_tests.py b/components/esp_hw_support/test_apps/wakeup_tests/pytest_wakeup_tests.py index 478bf80403..a3716f23c2 100644 --- a/components/esp_hw_support/test_apps/wakeup_tests/pytest_wakeup_tests.py +++ b/components/esp_hw_support/test_apps/wakeup_tests/pytest_wakeup_tests.py @@ -142,6 +142,7 @@ def test_rtcio_deepsleep(dut: tuple[IdfDut, IdfDut]) -> None: @pytest.mark.parametrize('count', [2], indirect=True) @pytest.mark.parametrize('config', TEST_CONFIGS, indirect=True) @idf_parametrize('target', ['supported_targets'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32c61'], reason='p4 rev3 migration') def test_gpio_wakeup_enable_lightsleep(dut: tuple[IdfDut, IdfDut]) -> None: wakee = dut[0] waker = dut[1] diff --git a/components/esp_mm/test_apps/mm/pytest_mmap.py b/components/esp_mm/test_apps/mm/pytest_mmap.py index fbf9db982f..4a2fc121ce 100644 --- a/components/esp_mm/test_apps/mm/pytest_mmap.py +++ b/components/esp_mm/test_apps/mm/pytest_mmap.py @@ -16,6 +16,7 @@ from pytest_embedded_idf.utils import idf_parametrize indirect=True, ) @idf_parametrize('target', ['supported_targets'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_mmap(dut: Dut) -> None: dut.run_all_single_board_cases(group='mmu') @@ -32,6 +33,7 @@ def test_mmap(dut: Dut) -> None: ], indirect=['config', 'target'], ) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_mmap_psram(dut: Dut) -> None: dut.run_all_single_board_cases(group='mmu') @@ -55,6 +57,7 @@ def test_mmap_xip_psram(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', ['supported_targets'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_cache(dut: Dut) -> None: dut.run_all_single_board_cases(group='cache') diff --git a/components/esp_netif/test_apps/test_app_vfs_l2tap/pytest_esp_vfs_l2tap.py b/components/esp_netif/test_apps/test_app_vfs_l2tap/pytest_esp_vfs_l2tap.py index 1a9f547da8..0b5ae927f5 100644 --- a/components/esp_netif/test_apps/test_app_vfs_l2tap/pytest_esp_vfs_l2tap.py +++ b/components/esp_netif/test_apps/test_app_vfs_l2tap/pytest_esp_vfs_l2tap.py @@ -27,5 +27,6 @@ def test_esp_netif_vfs_l2tp(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_netif_vfs_l2tp_p4(dut: Dut) -> None: dut.run_all_single_board_cases() diff --git a/components/esp_stdio/test_apps/stdio/pytest_esp_stdio_tests.py b/components/esp_stdio/test_apps/stdio/pytest_esp_stdio_tests.py index 60ceda249c..9093e3cb0c 100644 --- a/components/esp_stdio/test_apps/stdio/pytest_esp_stdio_tests.py +++ b/components/esp_stdio/test_apps/stdio/pytest_esp_stdio_tests.py @@ -19,6 +19,7 @@ def not_expect(dut: Dut, output_regex: str) -> None: @pytest.mark.generic @idf_parametrize('config', ['stdio_none'], indirect=['config']) @idf_parametrize('target', ['supported_targets'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_system_stdio_no_output_uart(dut: Dut) -> None: not_expect(dut, r'2nd stage bootloader|Hello World') dut.expect('This message will be printed even with CONFIG_ESP_CONSOLE_NONE') @@ -29,6 +30,7 @@ def test_esp_system_stdio_no_output_uart(dut: Dut) -> None: @idf_parametrize('flash_port', ['/dev/serial_ports/ttyUSB-esp32'], indirect=['flash_port']) @idf_parametrize('port', ['/dev/serial_ports/ttyACM-esp32'], indirect=['port']) @idf_parametrize('target', soc_filtered_targets('SOC_USB_SERIAL_JTAG_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_system_stdio_only_serial_jtag(dut: Dut) -> None: dut.expect('2nd stage bootloader') dut.expect('Hello World') @@ -43,6 +45,7 @@ def test_esp_system_stdio_only_serial_jtag(dut: Dut) -> None: @idf_parametrize('flash_port', ['/dev/serial_ports/ttyUSB-esp32'], indirect=['flash_port']) @idf_parametrize('port', ['/dev/serial_ports/ttyACM-esp32'], indirect=['port']) @idf_parametrize('target', soc_filtered_targets('SOC_USB_SERIAL_JTAG_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_system_stdio_only_serial_jtag_no_vfs(dut: Dut) -> None: dut.expect('2nd stage bootloader') dut.expect('Hello World') @@ -53,6 +56,7 @@ def test_esp_system_stdio_only_serial_jtag_no_vfs(dut: Dut) -> None: @idf_parametrize('flash_port', ['/dev/serial_ports/ttyUSB-esp32'], indirect=['flash_port']) @idf_parametrize('port', ['/dev/serial_ports/ttyACM-esp32'], indirect=['port']) @idf_parametrize('target', soc_filtered_targets('SOC_USB_SERIAL_JTAG_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_system_stdio_secondary_serial_jtag(dut: Dut) -> None: dut.expect('2nd stage bootloader') dut.expect('Hello World') @@ -61,6 +65,7 @@ def test_esp_system_stdio_secondary_serial_jtag(dut: Dut) -> None: @pytest.mark.generic @idf_parametrize('config', ['simple'], indirect=['config']) @idf_parametrize('target', ['supported_targets'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_system_stdio_correct_open_and_close(dut: Dut) -> None: dut.expect('2nd stage bootloader') dut.expect('Hello World') diff --git a/components/mbedtls/test_apps/pytest_mbedtls_ut.py b/components/mbedtls/test_apps/pytest_mbedtls_ut.py index edba967677..f79ed1caff 100644 --- a/components/mbedtls/test_apps/pytest_mbedtls_ut.py +++ b/components/mbedtls/test_apps/pytest_mbedtls_ut.py @@ -7,6 +7,7 @@ from pytest_embedded_idf.utils import idf_parametrize @pytest.mark.generic @idf_parametrize('target', ['supported_targets'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_mbedtls(dut: Dut) -> None: dut.run_all_single_board_cases() @@ -71,6 +72,7 @@ def test_mbedtls_psram_all_ext_flash_enc(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_mbedtls_psram_esp32p4(dut: Dut) -> None: dut.run_all_single_board_cases() @@ -84,6 +86,7 @@ def test_mbedtls_psram_esp32p4(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_mbedtls_psram_all_ext_flash_enc_esp32p4_200m(dut: Dut) -> None: dut.run_all_single_board_cases() diff --git a/examples/ethernet/basic/pytest_eth_basic.py b/examples/ethernet/basic/pytest_eth_basic.py index 1bec886250..2a060bdc45 100644 --- a/examples/ethernet/basic/pytest_eth_basic.py +++ b/examples/ethernet/basic/pytest_eth_basic.py @@ -16,6 +16,7 @@ from pytest_embedded import Dut ], indirect=['target'], ) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_eth_basic(dut: Dut) -> None: # wait for ip received dut_ip = dut.expect(r'esp_netif_handlers: .+ ip: (\d+\.\d+\.\d+\.\d+),').group(1) diff --git a/examples/ethernet/iperf/pytest_eth_iperf.py b/examples/ethernet/iperf/pytest_eth_iperf.py index 57a14174ec..0e03f0e853 100644 --- a/examples/ethernet/iperf/pytest_eth_iperf.py +++ b/examples/ethernet/iperf/pytest_eth_iperf.py @@ -141,6 +141,7 @@ def test_esp_eth_iperf_ip101( indirect=True, ) @idf_parametrize('target', ['esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_esp_eth_iperf_ip101_esp32p4( dut: Dut, log_performance: Callable[[str, object], None], diff --git a/examples/peripherals/.build-test-rules.yml b/examples/peripherals/.build-test-rules.yml index a26a2e9017..2ac3d159c5 100644 --- a/examples/peripherals/.build-test-rules.yml +++ b/examples/peripherals/.build-test-rules.yml @@ -542,11 +542,21 @@ examples/peripherals/twai/twai_error_recovery: depends_components: - esp_driver_twai -examples/peripherals/twai/twai_network: +examples/peripherals/twai/twai_network/twai_listen_only: disable: - if: SOC_TWAI_SUPPORTED != 1 disable_test: - - if: IDF_TARGET == "esp32p4" + - if: IDF_TARGET in ["esp32p4", "esp32h2"] + temporary: true + reason: p4 rev3 migration # TODO: IDF-14393 + depends_components: + - esp_driver_twai + +examples/peripherals/twai/twai_network/twai_sender: + disable: + - if: SOC_TWAI_SUPPORTED != 1 + disable_test: + - if: IDF_TARGET in ["esp32p4", "esp32c5"] temporary: true reason: p4 rev3 migration # TODO: IDF-14393 depends_components: diff --git a/examples/peripherals/twai/cybergear/pytest_cybergear_example.py b/examples/peripherals/twai/cybergear/pytest_cybergear_example.py index c4665ee72c..8b942f952e 100644 --- a/examples/peripherals/twai/cybergear/pytest_cybergear_example.py +++ b/examples/peripherals/twai/cybergear/pytest_cybergear_example.py @@ -8,5 +8,6 @@ from pytest_embedded_idf.utils import soc_filtered_targets @pytest.mark.generic @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_cybergear_example(dut: Dut) -> None: dut.expect_exact('CyberGear console started') diff --git a/examples/peripherals/twai/twai_network/pytest_twai_network.py b/examples/peripherals/twai/twai_network/pytest_twai_network.py index 06533aa758..ed4b5b6956 100644 --- a/examples/peripherals/twai/twai_network/pytest_twai_network.py +++ b/examples/peripherals/twai/twai_network/pytest_twai_network.py @@ -53,6 +53,7 @@ def generate_target_combinations(target_list: list, count: int = 2) -> list: ], indirect=True, ) +@pytest.mark.temp_skip_ci(targets=['esp32p4,*', '*,esp32p4'], reason='p4 rev3 migration') def test_twai_network_multi(dut: tuple[IdfDut, IdfDut], socket_can: Bus) -> None: """ Test TWAI network communication between two nodes: diff --git a/examples/peripherals/twai/twai_utils/pytest_twai_utils.py b/examples/peripherals/twai/twai_utils/pytest_twai_utils.py index e4b9dd48f6..30017d5214 100644 --- a/examples/peripherals/twai/twai_utils/pytest_twai_utils.py +++ b/examples/peripherals/twai/twai_utils/pytest_twai_utils.py @@ -310,6 +310,7 @@ def usb_can() -> CanBusManager: @pytest.mark.generic @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_twai_utils_basic_operations(twai: TwaiTestHelper) -> None: with twai.session(start_dump=False): # Test basic send operation @@ -328,6 +329,7 @@ def test_twai_utils_basic_operations(twai: TwaiTestHelper) -> None: @pytest.mark.generic @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_twai_utils_bitrate_configuration(twai: TwaiTestHelper) -> None: for bitrate in [125000, 250000, 500000, 1000000]: with twai.session(mode='standard', bitrate=bitrate, tx_gpio=DEFAULT_TX_GPIO, rx_gpio=DEFAULT_RX_GPIO): @@ -336,6 +338,7 @@ def test_twai_utils_bitrate_configuration(twai: TwaiTestHelper) -> None: @pytest.mark.generic @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_twai_utils_frame_formats(twai: TwaiTestHelper) -> None: with twai.session(): BASIC_FRAMES = [ @@ -366,6 +369,7 @@ def test_twai_utils_frame_formats(twai: TwaiTestHelper) -> None: @pytest.mark.generic @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_twai_utils_info_and_recovery(twai: TwaiTestHelper) -> None: with twai.session(): assert twai.info(), 'Info command failed' @@ -386,6 +390,7 @@ def test_twai_utils_info_and_recovery(twai: TwaiTestHelper) -> None: @pytest.mark.generic @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_twai_utils_input_validation(twai: TwaiTestHelper) -> None: with twai.session(start_dump=False): INVALID_FRAMES = [ @@ -432,6 +437,7 @@ def test_twai_utils_input_validation(twai: TwaiTestHelper) -> None: @pytest.mark.generic @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_twai_utils_gpio_and_basic_send(twai: TwaiTestHelper) -> None: with twai.session(): assert twai.info(), 'GPIO info failed' @@ -459,6 +465,7 @@ def test_twai_utils_gpio_and_basic_send(twai: TwaiTestHelper) -> None: @pytest.mark.generic @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_twai_utils_send_various_frames(twai: TwaiTestHelper) -> None: with twai.session(): # Boundary ID tests @@ -492,6 +499,7 @@ def test_twai_utils_fd_frames(twai: TwaiTestHelper) -> None: @pytest.mark.generic @idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_twai_utils_mask_filters(twai: TwaiTestHelper) -> None: """Test TWAI filtering including automatic extended frame detection.""" MASK_FILTER_GROUPS = [ diff --git a/examples/security/flash_encryption/pytest_flash_encryption.py b/examples/security/flash_encryption/pytest_flash_encryption.py index 1fe6002ff2..cf370dce61 100644 --- a/examples/security/flash_encryption/pytest_flash_encryption.py +++ b/examples/security/flash_encryption/pytest_flash_encryption.py @@ -79,6 +79,7 @@ def _test_flash_encryption(dut: Dut) -> None: @pytest.mark.flash_encryption @idf_parametrize('target', ['esp32', 'esp32c3', 'esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_examples_security_flash_encryption(dut: Dut) -> None: _test_flash_encryption(dut) @@ -118,5 +119,6 @@ def test_examples_security_flash_encryption_psram_esp32(dut: Dut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_examples_security_flash_encryption_psram(dut: Dut) -> None: _test_flash_encryption(dut) diff --git a/examples/security/tee/tee_attestation/pytest_tee_attestation.py b/examples/security/tee/tee_attestation/pytest_tee_attestation.py index 8dc9e2d123..3859da752f 100644 --- a/examples/security/tee/tee_attestation/pytest_tee_attestation.py +++ b/examples/security/tee/tee_attestation/pytest_tee_attestation.py @@ -46,7 +46,7 @@ def verify_att_token_signature(att_tk: str) -> Any: @pytest.mark.generic -@idf_parametrize('target', ['supported_targets'], indirect=['target']) +@idf_parametrize('target', ['esp32c6', 'esp32c5', 'esp32c61'], indirect=['target']) def test_example_tee_attestation(dut: Dut) -> None: # Erase the TEE secure_storage partition dut.serial.erase_partition('secure_storage') diff --git a/examples/security/tee/tee_basic/pytest_tee_basic.py b/examples/security/tee/tee_basic/pytest_tee_basic.py index fdc466118e..4ec63b46cf 100644 --- a/examples/security/tee/tee_basic/pytest_tee_basic.py +++ b/examples/security/tee/tee_basic/pytest_tee_basic.py @@ -9,7 +9,7 @@ from pytest_embedded_idf.utils import idf_parametrize @pytest.mark.generic -@idf_parametrize('target', ['supported_targets'], indirect=['target']) +@idf_parametrize('target', ['esp32c6', 'esp32c5', 'esp32c61'], indirect=['target']) def test_example_tee_basic(dut: Dut) -> None: # Logging example binary details binary_files = [ diff --git a/examples/security/tee/tee_secure_ota/pytest_tee_secure_ota.py b/examples/security/tee/tee_secure_ota/pytest_tee_secure_ota.py index cd201e60d1..9cde5106ce 100644 --- a/examples/security/tee/tee_secure_ota/pytest_tee_secure_ota.py +++ b/examples/security/tee/tee_secure_ota/pytest_tee_secure_ota.py @@ -32,7 +32,7 @@ def start_https_server(ota_image_dir: str, server_ip: str, server_port: int) -> @pytest.mark.wifi_high_traffic -@idf_parametrize('target', ['supported_targets'], indirect=['target']) +@idf_parametrize('target', ['esp32c5', 'esp32c6', 'esp32c61'], indirect=['target']) def test_examples_tee_secure_ota_example(dut: Dut) -> None: """ This is a positive test case, which downloads complete binary file multiple number of times. diff --git a/examples/security/tee/tee_secure_storage/pytest_tee_secure_storage.py b/examples/security/tee/tee_secure_storage/pytest_tee_secure_storage.py index 5fa0107ab6..bfecb85a75 100644 --- a/examples/security/tee/tee_secure_storage/pytest_tee_secure_storage.py +++ b/examples/security/tee/tee_secure_storage/pytest_tee_secure_storage.py @@ -6,7 +6,7 @@ from pytest_embedded_idf.utils import idf_parametrize @pytest.mark.generic -@idf_parametrize('target', ['supported_targets'], indirect=['target']) +@idf_parametrize('target', ['esp32c6', 'esp32c5', 'esp32c61'], indirect=['target']) def test_example_tee_secure_storage(dut: Dut) -> None: # Start test dut.expect('TEE Secure Storage', timeout=30) diff --git a/examples/storage/emmc/pytest_emmc_example.py b/examples/storage/emmc/pytest_emmc_example.py index 43c540c7c9..a7e8772604 100644 --- a/examples/storage/emmc/pytest_emmc_example.py +++ b/examples/storage/emmc/pytest_emmc_example.py @@ -19,6 +19,7 @@ from pytest_embedded_idf.utils import idf_parametrize indirect=True, ) @idf_parametrize('target', ['esp32s3', 'esp32p4'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_examples_sd_card_sdmmc(dut: Dut) -> None: dut.expect('example: Initializing eMMC', timeout=20) dut.expect('example: Using SDMMC peripheral', timeout=10) @@ -32,14 +33,14 @@ def test_examples_sd_card_sdmmc(dut: Dut) -> None: speed = dut.expect(re.compile(rb'Speed: (\S+)'), timeout=10).group(1).decode() size = dut.expect(re.compile(rb'Size: (\S+)'), timeout=10).group(1).decode() - logging.info('Card {} {} {}MHz {} found'.format(name, _type, speed, size)) + logging.info(f'Card {name} {_type} {speed}MHz {size} found') message_list = ( 'Opening file /eMMC/hello.txt', 'File written', 'Renaming file /eMMC/hello.txt to /eMMC/foo.txt', 'Reading file /eMMC/foo.txt', - "Read from file: 'Hello {}!'".format(name), + f"Read from file: 'Hello {name}!'", 'Card unmounted', ) diff --git a/examples/storage/sd_card/sdspi/pytest_sdspi_card_example.py b/examples/storage/sd_card/sdspi/pytest_sdspi_card_example.py index 8a0c222fca..6fc29e68b5 100644 --- a/examples/storage/sd_card/sdspi/pytest_sdspi_card_example.py +++ b/examples/storage/sd_card/sdspi/pytest_sdspi_card_example.py @@ -11,6 +11,7 @@ from pytest_embedded_idf.utils import idf_parametrize @pytest.mark.temp_skip_ci(targets=['esp32c61'], reason='C5 C61 GPSPI same, so testing on C5 is enough') @pytest.mark.sdcard_spimode @idf_parametrize('target', ['esp32', 'esp32s3', 'esp32c3', 'esp32p4', 'esp32c5'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_examples_sd_card_sdspi(dut: Dut) -> None: dut.expect('example: Initializing SD card', timeout=20) dut.expect('example: Using SPI peripheral', timeout=20) diff --git a/examples/system/app_trace_basic/pytest_app_trace_basic.py b/examples/system/app_trace_basic/pytest_app_trace_basic.py index 0790edf528..27bff23ab4 100644 --- a/examples/system/app_trace_basic/pytest_app_trace_basic.py +++ b/examples/system/app_trace_basic/pytest_app_trace_basic.py @@ -56,6 +56,7 @@ def test_examples_app_trace_basic(openocd_dut: 'OpenOCD', dut: IdfDut) -> None: @idf_parametrize( 'target', ['esp32s3', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32c61', 'esp32h2', 'esp32p4'], indirect=['target'] ) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_examples_app_trace_basic_usj(openocd_dut: 'OpenOCD', dut: IdfDut) -> None: _test_examples_app_trace_basic(openocd_dut, dut) @@ -63,6 +64,7 @@ def test_examples_app_trace_basic_usj(openocd_dut: 'OpenOCD', dut: IdfDut) -> No @pytest.mark.generic @idf_parametrize('config', ['apptrace_uart'], indirect=['config']) @idf_parametrize('target', ['supported_targets'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_examples_app_trace_basic_uart(dut: IdfDut) -> None: dut.serial.close() with serial.Serial(dut.serial.port, baudrate=1000000, timeout=10) as ser: diff --git a/examples/system/ulp/lp_core/lp_mailbox/pytest_lp_mailbox.py b/examples/system/ulp/lp_core/lp_mailbox/pytest_lp_mailbox.py index dcaa74d705..9010bb7522 100644 --- a/examples/system/ulp/lp_core/lp_mailbox/pytest_lp_mailbox.py +++ b/examples/system/ulp/lp_core/lp_mailbox/pytest_lp_mailbox.py @@ -3,10 +3,11 @@ import pytest from pytest_embedded import Dut from pytest_embedded_idf.utils import idf_parametrize +from pytest_embedded_idf.utils import soc_filtered_targets @pytest.mark.generic -@idf_parametrize('target', ['supported_targets'], indirect=['target']) +@idf_parametrize('target', soc_filtered_targets('SOC_LP_CORE_SUPPORTED == 1'), indirect=['target']) def test_lp_mailbox(dut: Dut) -> None: # Wait for LP core to be loaded and running dut.expect_exact('LP Mailbox initialized successfully') diff --git a/tools/test_apps/system/panic/pytest_panic.py b/tools/test_apps/system/panic/pytest_panic.py index 724baf120d..98dd1e29de 100644 --- a/tools/test_apps/system/panic/pytest_panic.py +++ b/tools/test_apps/system/panic/pytest_panic.py @@ -176,6 +176,7 @@ def common_test( @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_task_wdt_cpu0(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_exact('Task watchdog got triggered. The following tasks/users did not reset the watchdog in time:') @@ -208,6 +209,7 @@ def test_task_wdt_cpu0(dut: PanicTestDut, config: str, test_func_name: str) -> N @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_DUAL_CORE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_task_wdt_cpu1(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_exact('Task watchdog got triggered. The following tasks/users did not reset the watchdog in time:') @@ -272,6 +274,7 @@ def test_panic_extram_stack(dut: PanicTestDut, config: str) -> None: @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_int_wdt(dut: PanicTestDut, target: str, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_gme('Interrupt wdt timeout on CPU0') @@ -294,6 +297,7 @@ def test_int_wdt(dut: PanicTestDut, target: str, config: str, test_func_name: st @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_int_wdt_cache_disabled(dut: PanicTestDut, target: str, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_gme('Interrupt wdt timeout on CPU0') @@ -316,6 +320,7 @@ def test_int_wdt_cache_disabled(dut: PanicTestDut, target: str, config: str, tes @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_cache_error(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) if dut.target in ['esp32c3', 'esp32c2']: @@ -347,6 +352,7 @@ def test_cache_error(dut: PanicTestDut, config: str, test_func_name: str) -> Non @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_stack_overflow(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) if dut.is_xtensa: @@ -368,6 +374,7 @@ def test_stack_overflow(dut: PanicTestDut, config: str, test_func_name: str) -> @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_instr_fetch_prohibited(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) if dut.is_xtensa: @@ -395,6 +402,7 @@ def test_instr_fetch_prohibited(dut: PanicTestDut, config: str, test_func_name: @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_illegal_instruction(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) if dut.is_xtensa: @@ -431,18 +439,21 @@ def check_x_prohibited(dut: PanicTestDut, config: str, test_func_name: str, oper @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_storeprohibited(dut: PanicTestDut, config: str, test_func_name: str) -> None: check_x_prohibited(dut, config, test_func_name, 'Store') @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_loadprohibited(dut: PanicTestDut, config: str, test_func_name: str) -> None: check_x_prohibited(dut, config, test_func_name, 'Load') @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_abort(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) regex_pattern = rb'abort\(\) was called at PC [0-9xa-f]+ on core 0' @@ -465,6 +476,7 @@ def test_abort(dut: PanicTestDut, config: str, test_func_name: str) -> None: @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_ub(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) regex_pattern = rb'Undefined behavior of type out_of_bounds' @@ -493,6 +505,7 @@ def test_ub(dut: PanicTestDut, config: str, test_func_name: str) -> None: @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_abort_cache_disabled(dut: PanicTestDut, config: str, test_func_name: str) -> None: if dut.target == 'esp32s2': pytest.xfail(reason='Crashes in itoa which is not in ROM, IDF-3572') @@ -517,6 +530,7 @@ def test_abort_cache_disabled(dut: PanicTestDut, config: str, test_func_name: st @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_assert(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) regex_pattern = rb'assert failed:[\s\w()]*?\s[.\w/]*\.(?:c|cpp|h|hpp):\d.*$' @@ -539,6 +553,7 @@ def test_assert(dut: PanicTestDut, config: str, test_func_name: str) -> None: @pytest.mark.generic @idf_parametrize('config, target', CONFIGS, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_assert_cache_disabled(dut: PanicTestDut, config: str, test_func_name: str) -> None: if dut.target == 'esp32s2': pytest.xfail(reason='Crashes in itoa which is not in ROM, IDF-3572') @@ -576,6 +591,7 @@ def cache_error_log_check(dut: PanicTestDut) -> None: @pytest.mark.generic @idf_parametrize('config, target', CONFIG_PANIC, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_assert_cache_write_back_error_can_print_backtrace(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) cache_error_log_check(dut) @@ -584,6 +600,7 @@ def test_assert_cache_write_back_error_can_print_backtrace(dut: PanicTestDut, co @pytest.mark.generic @pytest.mark.parametrize('config', ['panic_delay'], indirect=True) @idf_parametrize('target', ['esp32'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_panic_delay(dut: PanicTestDut) -> None: dut.run_test_func('test_storeprohibited') try: @@ -601,6 +618,7 @@ def test_panic_delay(dut: PanicTestDut) -> None: @pytest.mark.generic @idf_parametrize('config, target', CONFIG_PANIC, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_panic_handler_stuck0(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) @@ -613,6 +631,7 @@ def test_panic_handler_stuck0(dut: PanicTestDut, config: str, test_func_name: st @pytest.mark.generic @idf_parametrize('config, target', CONFIG_PANIC_DUAL_CORE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_panic_handler_stuck1(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) @@ -625,6 +644,7 @@ def test_panic_handler_stuck1(dut: PanicTestDut, config: str, test_func_name: st @pytest.mark.generic @idf_parametrize('config, target', CONFIG_PANIC, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_panic_handler_crash0(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) @@ -643,6 +663,7 @@ def test_panic_handler_crash0(dut: PanicTestDut, config: str, test_func_name: st @pytest.mark.generic @idf_parametrize('config, target', CONFIG_PANIC_DUAL_CORE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_panic_handler_crash1(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) @@ -769,6 +790,7 @@ CONFIGS_MEMPROT_INVALID_REGION_PROTECTION_USING_PMA = list( @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_DCACHE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_dcache_read_violation(dut: PanicTestDut, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_exact(r'Test error: Test function has returned') @@ -779,6 +801,7 @@ def test_dcache_read_violation(dut: PanicTestDut, test_func_name: str) -> None: @pytest.mark.generic @pytest.mark.xfail('config.getvalue("target") == "esp32s2"', reason='Incorrect panic reason may be observed', run=False) @idf_parametrize('config, target', CONFIGS_MEMPROT_DCACHE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_dcache_write_violation(dut: PanicTestDut, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_gme('Memory protection fault') @@ -809,12 +832,14 @@ def iram_reg1_write_violation(dut: PanicTestDut, test_func_name: str) -> None: @pytest.mark.generic @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_iram_reg1_write_violation(dut: PanicTestDut, test_func_name: str) -> None: iram_reg1_write_violation(dut, test_func_name) @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM_L2_MEM_NON_CACHE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_non_cache_iram_reg1_write_violation(dut: PanicTestDut, test_func_name: str) -> None: if dut.target == 'esp32p4' and not dut.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'): iram_reg1_write_violation(dut, test_func_name) @@ -846,12 +871,14 @@ def iram_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> None: @pytest.mark.generic @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_iram_reg2_write_violation(dut: PanicTestDut, test_func_name: str) -> None: iram_reg_write_violation(dut, test_func_name) @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM_L2_MEM_NON_CACHE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_non_cache_iram_reg2_write_violation(dut: PanicTestDut, test_func_name: str) -> None: if dut.target == 'esp32p4' and not dut.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'): iram_reg_write_violation(dut, test_func_name) @@ -883,12 +910,14 @@ def iram_reg3_write_violation(dut: PanicTestDut, test_func_name: str) -> None: @pytest.mark.generic @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_iram_reg3_write_violation(dut: PanicTestDut, test_func_name: str) -> None: iram_reg_write_violation(dut, test_func_name) @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM_L2_MEM_NON_CACHE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_non_cache_iram_reg3_write_violation(dut: PanicTestDut, test_func_name: str) -> None: if dut.target == 'esp32p4' and not dut.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'): iram_reg_write_violation(dut, test_func_name) @@ -922,12 +951,14 @@ def iram_reg4_write_violation(dut: PanicTestDut, test_func_name: str) -> None: @pytest.mark.xfail('config.getvalue("target") == "esp32s2"', reason='Incorrect panic reason may be observed', run=False) @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_iram_reg4_write_violation(dut: PanicTestDut, test_func_name: str) -> None: iram_reg_write_violation(dut, test_func_name) @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM_L2_MEM_NON_CACHE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_non_cache_iram_reg4_write_violation(dut: PanicTestDut, test_func_name: str) -> None: if dut.target == 'esp32p4' and not dut.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'): iram_reg_write_violation(dut, test_func_name) @@ -956,12 +987,14 @@ def dram_reg1_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: ) @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_dram_reg1_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: dram_reg1_execute_violation(dut, test_func_name) @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM_L2_MEM_NON_CACHE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_non_cache_dram_reg1_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: if dut.target == 'esp32p4' and not dut.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'): dram_reg1_execute_violation(dut, test_func_name) @@ -989,12 +1022,14 @@ def dram_reg2_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: ) @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_dram_reg2_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: dram_reg2_execute_violation(dut, test_func_name) @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_IDRAM_L2_MEM_NON_CACHE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_non_cache_dram_reg2_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: if dut.target == 'esp32p4' and not dut.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'): dram_reg2_execute_violation(dut, test_func_name) @@ -1003,6 +1038,7 @@ def test_non_cache_dram_reg2_execute_violation(dut: PanicTestDut, test_func_name @pytest.mark.generic @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_RTC_FAST_MEM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_rtc_fast_reg1_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_exact(r'Test error: Test function has returned') @@ -1015,6 +1051,7 @@ def test_rtc_fast_reg1_execute_violation(dut: PanicTestDut, test_func_name: str) reason='Not a violation condition, no PMS peripheral cases', ) @idf_parametrize('config, target', CONFIGS_MEMPROT_RTC_FAST_MEM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_rtc_fast_reg2_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_gme('Memory protection fault') @@ -1040,6 +1077,7 @@ def test_rtc_fast_reg2_execute_violation(dut: PanicTestDut, test_func_name: str) ) @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_RTC_FAST_MEM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_rtc_fast_reg3_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: dut.run_test_func(test_func_name) @@ -1065,6 +1103,7 @@ def test_rtc_fast_reg3_execute_violation(dut: PanicTestDut, test_func_name: str) @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_RTC_SLOW_MEM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_rtc_slow_reg1_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_gme('Memory protection fault') @@ -1076,6 +1115,7 @@ def test_rtc_slow_reg1_execute_violation(dut: PanicTestDut, test_func_name: str) @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_RTC_SLOW_MEM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_rtc_slow_reg2_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_gme('Memory protection fault') @@ -1095,12 +1135,14 @@ def irom_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> None: @pytest.mark.generic @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_FLASH_IDROM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_irom_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> None: irom_reg_write_violation(dut, test_func_name) @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_FLASH_IDROM_L2_NON_CACHE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_non_cache_irom_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> None: if dut.target == 'esp32p4' and not dut.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'): irom_reg_write_violation(dut, test_func_name) @@ -1116,12 +1158,14 @@ def drom_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> None: @pytest.mark.generic @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_FLASH_IDROM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_drom_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> None: drom_reg_write_violation(dut, test_func_name) @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_FLASH_IDROM_L2_NON_CACHE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_non_cache_drom_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> None: if dut.target == 'esp32p4' and not dut.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'): drom_reg_write_violation(dut, test_func_name) @@ -1137,12 +1181,14 @@ def drom_reg_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: @pytest.mark.generic @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_FLASH_IDROM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_drom_reg_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: drom_reg_execute_violation(dut, test_func_name) @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_FLASH_IDROM_L2_NON_CACHE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_non_cache_drom_reg_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: if dut.target == 'esp32p4' and not dut.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'): drom_reg_execute_violation(dut, test_func_name) @@ -1160,6 +1206,7 @@ def spiram_xip_irom_alignment_reg_execute_violation(dut: PanicTestDut, test_func @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_SPIRAM_XIP_IROM_ALIGNMENT_HEAP, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_spiram_xip_irom_alignment_reg_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: spiram_xip_irom_alignment_reg_execute_violation(dut, test_func_name) @@ -1168,6 +1215,7 @@ def test_spiram_xip_irom_alignment_reg_execute_violation(dut: PanicTestDut, test @idf_parametrize( 'config, target', CONFIGS_MEMPROT_SPIRAM_XIP_IROM_ALIGNMENT_HEAP_L2_NON_CACHE, indirect=['config', 'target'] ) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_non_cache_spiram_xip_irom_alignment_reg_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: if dut.target == 'esp32p4' and not dut.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'): spiram_xip_irom_alignment_reg_execute_violation(dut, test_func_name) @@ -1188,6 +1236,7 @@ def spiram_xip_drom_alignment_reg_execute_violation(dut: PanicTestDut, test_func @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_MEMPROT_SPIRAM_XIP_DROM_ALIGNMENT_HEAP, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_spiram_xip_drom_alignment_reg_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: spiram_xip_drom_alignment_reg_execute_violation(dut, test_func_name) @@ -1196,6 +1245,7 @@ def test_spiram_xip_drom_alignment_reg_execute_violation(dut: PanicTestDut, test @idf_parametrize( 'config, target', CONFIGS_MEMPROT_SPIRAM_XIP_DROM_ALIGNMENT_HEAP_L2_NON_CACHE, indirect=['config', 'target'] ) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_non_cache_spiram_xip_drom_alignment_reg_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: if dut.target == 'esp32p4' and not dut.app.sdkconfig.get('ESP32P4_SELECTS_REV_LESS_V3'): spiram_xip_drom_alignment_reg_execute_violation(dut, test_func_name) @@ -1204,6 +1254,7 @@ def test_non_cache_spiram_xip_drom_alignment_reg_execute_violation(dut: PanicTes @pytest.mark.generic @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_INVALID_REGION_PROTECTION_USING_PMA, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_invalid_memory_region_write_violation(dut: PanicTestDut, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_gme('Store access fault') @@ -1214,6 +1265,7 @@ def test_invalid_memory_region_write_violation(dut: PanicTestDut, test_func_name @pytest.mark.generic @pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners') @idf_parametrize('config, target', CONFIGS_MEMPROT_INVALID_REGION_PROTECTION_USING_PMA, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_invalid_memory_region_execute_violation(dut: PanicTestDut, test_func_name: str) -> None: dut.run_test_func(test_func_name) dut.expect_gme('Instruction access fault') @@ -1224,6 +1276,7 @@ def test_invalid_memory_region_execute_violation(dut: PanicTestDut, test_func_na @pytest.mark.generic @pytest.mark.parametrize('config', ['gdbstub_coredump'], indirect=True) @idf_parametrize('target', ['esp32'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_gdbstub_coredump(dut: PanicTestDut) -> None: test_func_name = 'test_storeprohibited' dut.run_test_func(test_func_name) @@ -1249,6 +1302,7 @@ def test_hw_stack_guard_cpu(dut: PanicTestDut, cpu: int) -> None: @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_HW_STACK_GUARD, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_hw_stack_guard_cpu0(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) test_hw_stack_guard_cpu(dut, 0) @@ -1257,6 +1311,7 @@ def test_hw_stack_guard_cpu0(dut: PanicTestDut, config: str, test_func_name: str @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_HW_STACK_GUARD_DUAL_CORE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_hw_stack_guard_cpu1(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) test_hw_stack_guard_cpu(dut, 1) @@ -1266,6 +1321,7 @@ def test_hw_stack_guard_cpu1(dut: PanicTestDut, config: str, test_func_name: str @pytest.mark.parametrize('config', ['panic'], indirect=True) @pytest.mark.generic @idf_parametrize('target', ['esp32'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_illegal_access(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) if dut.is_xtensa: @@ -1279,6 +1335,7 @@ def test_illegal_access(dut: PanicTestDut, config: str, test_func_name: str) -> @pytest.mark.generic @idf_parametrize('config, target', CONFIG_CAPTURE_DRAM, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_capture_dram(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) regex_pattern = rb'assert failed:[\s\w()]*?\s[.\w/]*\.(?:c|cpp|h|hpp):\d.*$' @@ -1332,12 +1389,14 @@ def _test_coredump_summary(dut: PanicTestDut, flash_encrypted: bool, coredump_en @pytest.mark.generic @idf_parametrize('config, target', CONFIG_COREDUMP_SUMMARY, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_coredump_summary(dut: PanicTestDut) -> None: _test_coredump_summary(dut, False, False) @pytest.mark.flash_encryption @idf_parametrize('config, target', CONFIG_COREDUMP_SUMMARY_FLASH_ENCRYPTED, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_coredump_summary_flash_encrypted(dut: PanicTestDut, config: str) -> None: _test_coredump_summary(dut, True, config == 'coredump_flash_encrypted') @@ -1345,6 +1404,7 @@ def test_coredump_summary_flash_encrypted(dut: PanicTestDut, config: str) -> Non @pytest.mark.generic @idf_parametrize('config', ['coredump_flash_default'], indirect=['config']) @idf_parametrize('target', TARGETS_ALL, indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_tcb_corrupted(dut: PanicTestDut, target: str, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) if dut.is_xtensa: @@ -1377,6 +1437,7 @@ def test_tcb_corrupted(dut: PanicTestDut, target: str, config: str, test_func_na @pytest.mark.generic @idf_parametrize('config, target', CONFIGS_BACKTRACE, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_panic_print_backtrace(dut: PanicTestDut, config: str, test_func_name: str) -> None: dut.run_test_func(test_func_name) regex_pattern = rb'abort\(\) was called at PC [0-9xa-f]+ on core 0' @@ -1391,6 +1452,7 @@ def test_panic_print_backtrace(dut: PanicTestDut, config: str, test_func_name: s @pytest.mark.generic @idf_parametrize('config, target', CONFIG_PANIC_HALT, indirect=['config', 'target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_panic_halt(dut: PanicTestDut) -> None: dut.run_test_func('test_panic_halt') dut.expect_exact('CPU halted.', timeout=30) diff --git a/tools/test_apps/system/ram_loadable_app/pytest_ram_loadable_app.py b/tools/test_apps/system/ram_loadable_app/pytest_ram_loadable_app.py index c01afe1777..f4d97893c0 100644 --- a/tools/test_apps/system/ram_loadable_app/pytest_ram_loadable_app.py +++ b/tools/test_apps/system/ram_loadable_app/pytest_ram_loadable_app.py @@ -36,6 +36,7 @@ def test_pure_ram_loadable_app(dut: IdfDut) -> None: ['esp32', 'esp32s2', 'esp32s3', 'esp32c2', 'esp32c3', 'esp32c6', 'esp32h2', 'esp32c61'], indirect=['target'], ) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_ram_loadable_app(dut: IdfDut) -> None: dut.expect('spi_flash: detected chip', timeout=10) dut.expect('Time since boot: 3 seconds...', timeout=30) @@ -51,6 +52,7 @@ def test_ram_loadable_app(dut: IdfDut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32p4', 'esp32c5'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_ram_loadable_app_with_ram_app_runner(dut: IdfDut) -> None: dut.expect('spi_flash: detected chip', timeout=10) dut.expect('Time since boot: 3 seconds...', timeout=30) @@ -65,6 +67,7 @@ def test_ram_loadable_app_with_ram_app_runner(dut: IdfDut) -> None: indirect=True, ) @idf_parametrize('target', ['esp32p4', 'esp32c5'], indirect=['target']) +@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='p4 rev3 migration') def test_pure_ram_loadable_app_with_ram_app_runner(dut: IdfDut) -> None: dut.expect('main_task: Calling app_main()', timeout=10) dut.expect('Time since boot: 3 seconds...', timeout=10)