mirror of
https://github.com/espressif/esp-idf.git
synced 2026-05-28 16:46:31 +03:00
ci(esp32h4): disable tests which cannot pass
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_SPEED_64M=y
|
||||
@@ -1,6 +1,10 @@
|
||||
# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
|
||||
|
||||
components/esp_driver_gpio/test_apps:
|
||||
disable_test:
|
||||
- if: IDF_TARGET == "esp32h4"
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15608
|
||||
depends_components:
|
||||
- esp_driver_gpio
|
||||
- esp_hal_gpio
|
||||
|
||||
@@ -12,6 +12,7 @@ CONFIGS = [
|
||||
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.parametrize('config', CONFIGS, indirect=True)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15608
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
def test_gpio(dut: IdfDut) -> None:
|
||||
dut.run_all_single_board_cases(group='gpio')
|
||||
|
||||
@@ -32,6 +32,7 @@ def test_i2c(dut: Dut) -> None:
|
||||
)
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_I2C_SUPPORTED == 1'), indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='lack of s31 multi-device runner # TODO: IDFCI-10334')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-10702')
|
||||
def test_i2c_multi_device(case_tester) -> None: # type: ignore
|
||||
case_tester.run_all_multi_dev_cases(reset=True)
|
||||
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
components/esp_driver_i2s/test_apps/i2s:
|
||||
disable:
|
||||
- if: SOC_I2S_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15609
|
||||
depends_components:
|
||||
- esp_driver_i2s
|
||||
- esp_driver_pcnt
|
||||
@@ -22,6 +26,9 @@ components/esp_driver_i2s/test_apps/i2s_multi_dev:
|
||||
- if: IDF_TARGET in ["esp32s31"]
|
||||
temporary: true
|
||||
reason: lack of s31 multi-device runner
|
||||
- if: IDF_TARGET in ["esp32h4"] # TODO: IDFCI-10702
|
||||
temporary: true
|
||||
reason: lack of runner
|
||||
depends_components:
|
||||
- esp_driver_i2s
|
||||
- esp_driver_dma
|
||||
|
||||
@@ -20,7 +20,8 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
soc_filtered_targets('SOC_I2S_SUPPORTED == 1 and IDF_TARGET not in ["esp32c5", "esp32s3"]'),
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h21', 'esp32h4'], reason='lack of runners')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15609
|
||||
def test_i2s(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases()
|
||||
|
||||
|
||||
@@ -8,6 +8,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=['esp32s31'], reason='lack of s31 multi-device runner # TODO: IDFCI-10334')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-10702')
|
||||
@pytest.mark.parametrize('count', [2], indirect=True)
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_I2S_SUPPORTS_TDM == 1'), indirect=['target'])
|
||||
def test_i2s_multi_dev(case_tester) -> None: # type: ignore
|
||||
|
||||
@@ -76,5 +76,6 @@ def test_ledc_psram(dut: IdfDut) -> None:
|
||||
)
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='TODO: IDFCI-10334 no runner yet')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-10702')
|
||||
def test_ledc_multi_device(case_tester) -> None: # type: ignore
|
||||
case_tester.run_all_multi_dev_cases(reset=True)
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "driver/gptimer.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "driver/mcpwm_prelude.h"
|
||||
#include "test_mcpwm_utils.h"
|
||||
|
||||
TEST_CASE("mcpwm_comparator_etm_event", "[mcpwm][etm]")
|
||||
{
|
||||
@@ -54,7 +55,7 @@ TEST_CASE("mcpwm_comparator_etm_event", "[mcpwm][etm]")
|
||||
TEST_ESP_OK(mcpwm_comparator_set_compare_value(comparator_b, cmpb));
|
||||
|
||||
// install generator
|
||||
const uint32_t gen_gpio = 10;
|
||||
const uint32_t gen_gpio = TEST_PWMA_GPIO;
|
||||
mcpwm_gen_handle_t generator = NULL;
|
||||
mcpwm_generator_config_t generator_config = {
|
||||
.gen_gpio_num = gen_gpio,
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
components/esp_driver_parlio/test_apps/parlio:
|
||||
disable:
|
||||
- if: SOC_PARLIO_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET == "esp32h4"
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15613
|
||||
depends_components:
|
||||
- esp_driver_parlio
|
||||
- esp_driver_dma
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
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
|
||||
@@ -14,7 +15,10 @@ from pytest_embedded_idf.utils import idf_parametrize
|
||||
],
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['esp32c6', 'esp32h2', 'esp32p4', 'esp32h4'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15613
|
||||
@idf_parametrize(
|
||||
'target', soc_filtered_targets('SOC_PARLIO_SUPPORTED == 1 and IDF_TARGET not in ["esp32c5"]'), indirect=['target']
|
||||
)
|
||||
def test_parlio(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases()
|
||||
|
||||
@@ -27,7 +31,9 @@ def test_parlio(dut: Dut) -> None:
|
||||
],
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['esp32c6', 'esp32h2', 'esp32p4', 'esp32c5', 'esp32h4'], indirect=['target'])
|
||||
@idf_parametrize(
|
||||
'target', soc_filtered_targets('SOC_PARLIO_SUPPORTED == 1 and SOC_FLASH_ENC_SUPPORTED == 1'), indirect=['target']
|
||||
)
|
||||
def test_parlio_with_virt_flash_enc(dut: Dut) -> None:
|
||||
print(' - Erase flash')
|
||||
dut.serial.erase_flash()
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_SPEED_64M=y
|
||||
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0
|
||||
@@ -289,9 +289,9 @@ static void test_rmt_partial_receive(size_t mem_block_symbols, int test_symbols_
|
||||
for (int i = 0; i < 10; i++) {
|
||||
printf("{%d:%d},{%d:%d}\r\n", receive_user_buf[i].level0, receive_user_buf[i].duration0, receive_user_buf[i].level1, receive_user_buf[i].duration1);
|
||||
TEST_ASSERT_EQUAL(1, receive_user_buf[i].level0);
|
||||
TEST_ASSERT_INT_WITHIN(20, 50, receive_user_buf[i].duration0);
|
||||
TEST_ASSERT_INT_WITHIN(30, 50, receive_user_buf[i].duration0);
|
||||
TEST_ASSERT_EQUAL(0, receive_user_buf[i].level1);
|
||||
TEST_ASSERT_INT_WITHIN(20, 50, receive_user_buf[i].duration1);
|
||||
TEST_ASSERT_INT_WITHIN(30, 50, receive_user_buf[i].duration1);
|
||||
}
|
||||
|
||||
printf("disable rx channels\r\n");
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
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
|
||||
@@ -16,7 +17,7 @@ from pytest_embedded_idf.utils import idf_parametrize
|
||||
)
|
||||
@idf_parametrize(
|
||||
'target',
|
||||
['esp32', 'esp32s2', 'esp32c3', 'esp32c6', 'esp32h2', 'esp32p4', 'esp32s31', 'esp32h4'],
|
||||
soc_filtered_targets('SOC_RMT_SUPPORTED == 1 and IDF_TARGET not in ["esp32c5", "esp32s3"]'),
|
||||
indirect=['target'],
|
||||
)
|
||||
def test_rmt(dut: Dut) -> None:
|
||||
@@ -33,7 +34,7 @@ def test_rmt(dut: Dut) -> None:
|
||||
)
|
||||
@idf_parametrize(
|
||||
'target',
|
||||
['esp32', 'esp32s2', 'esp32c3', 'esp32c6', 'esp32h2', 'esp32p4', 'esp32c5', 'esp32h4'],
|
||||
soc_filtered_targets('SOC_RMT_SUPPORTED == 1 and SOC_FLASH_ENC_SUPPORTED == 1 and IDF_TARGET not in ["esp32s3"]'),
|
||||
indirect=['target'],
|
||||
)
|
||||
def test_rmt_with_virt_flash_enc(dut: Dut) -> None:
|
||||
|
||||
@@ -12,20 +12,36 @@
|
||||
components/esp_driver_spi/test_apps/master:
|
||||
disable:
|
||||
- if: SOC_GPSPI_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15615
|
||||
<<: *spi_depends_default
|
||||
|
||||
components/esp_driver_spi/test_apps/param:
|
||||
disable:
|
||||
- if: SOC_GPSPI_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15615
|
||||
<<: *spi_depends_default
|
||||
|
||||
components/esp_driver_spi/test_apps/slave:
|
||||
disable:
|
||||
- if: SOC_GPSPI_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15615
|
||||
<<: *spi_depends_default
|
||||
|
||||
components/esp_driver_spi/test_apps/slave_hd:
|
||||
disable:
|
||||
- if: SOC_GPSPI_SUPPORTED != 1
|
||||
- if: SOC_SPI_SUPPORT_SLAVE_HD_VER2 != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15615
|
||||
<<: *spi_depends_default
|
||||
|
||||
@@ -17,6 +17,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
@idf_parametrize(
|
||||
'target', soc_filtered_targets('SOC_GPSPI_SUPPORTED == 1 and IDF_TARGET not in ["esp32c5"]'), indirect=['target']
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15615
|
||||
def test_master_single_dev(case_tester) -> None: # type: ignore
|
||||
for case in case_tester.test_menu:
|
||||
if 'test_env' in case.attributes:
|
||||
@@ -86,5 +87,6 @@ def test_master_esp_flash(case_tester) -> None: # type: ignore
|
||||
)
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='no runner')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner') # TODO: IDFCI-10702
|
||||
def test_master_multi_dev(case_tester) -> None: # type: ignore
|
||||
case_tester.run_all_multi_dev_cases(reset=True)
|
||||
|
||||
@@ -6,6 +6,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15615
|
||||
def test_param_single_dev(case_tester) -> None: # type: ignore
|
||||
case_tester.run_all_normal_cases(reset=True)
|
||||
|
||||
@@ -14,5 +15,6 @@ def test_param_single_dev(case_tester) -> None: # type: ignore
|
||||
@pytest.mark.parametrize('count', [2], indirect=True)
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='no runner')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='no runner') # TODO: IDFCI-10702
|
||||
def test_param_multi_dev(case_tester) -> None: # type: ignore
|
||||
case_tester.run_all_multi_dev_cases(reset=True)
|
||||
|
||||
@@ -8,8 +8,11 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.parametrize('config', ['release', 'iram_safe'], indirect=True)
|
||||
@idf_parametrize(
|
||||
'target', soc_filtered_targets('SOC_GPSPI_SUPPORTED == 1 and IDF_TARGET not in ["esp32c5"]'), indirect=['target']
|
||||
'target',
|
||||
soc_filtered_targets('SOC_GPSPI_SUPPORTED == 1 and IDF_TARGET not in ["esp32c5"]'),
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15615
|
||||
def test_slave_single_dev(case_tester) -> None: # type: ignore
|
||||
case_tester.run_all_normal_cases(reset=True)
|
||||
|
||||
@@ -33,6 +36,7 @@ def test_slave_single_dev_esp32c5_rev1(case_tester) -> None: # type: ignore
|
||||
@pytest.mark.parametrize('count, config', [(2, 'release'), (2, 'iram_safe')], indirect=True)
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='no runner')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='no runner') # TODO: IDFCI-10702
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='s31 bringup on this module is not done')
|
||||
def test_slave_multi_dev(case_tester) -> None: # type: ignore
|
||||
case_tester.run_all_multi_dev_cases(reset=True)
|
||||
|
||||
@@ -13,6 +13,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
soc_filtered_targets('SOC_SPI_SUPPORT_SLAVE_HD_VER2 == 1 and IDF_TARGET not in ["esp32c5"]'),
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15615
|
||||
def test_slave_hd_single_dev(case_tester) -> None: # type: ignore
|
||||
case_tester.run_all_normal_cases(reset=True, timeout=180)
|
||||
|
||||
@@ -29,5 +30,6 @@ def test_slave_hd_single_dev_esp32c5_rev1(case_tester) -> None: # type: ignore
|
||||
@pytest.mark.parametrize('count, config', [(2, 'release')], indirect=True)
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_SPI_SUPPORT_SLAVE_HD_VER2 == 1'), indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='no runner')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='no runner') # TODO: IDFCI-10702
|
||||
def test_slave_hd_multi_dev(case_tester) -> None: # type: ignore
|
||||
case_tester.run_all_multi_dev_cases(reset=True)
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
components/esp_driver_tsens/test_apps/temperature_sensor:
|
||||
disable:
|
||||
- if: SOC_TEMP_SENSOR_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15617
|
||||
depends_components:
|
||||
- esp_driver_tsens
|
||||
- esp_hal_ana_conv
|
||||
|
||||
@@ -17,9 +17,10 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
)
|
||||
@idf_parametrize(
|
||||
'target',
|
||||
soc_filtered_targets('SOC_TEMP_SENSOR_SUPPORTED == 1'),
|
||||
soc_filtered_targets('SOC_TEMP_SENSOR_SUPPORTED == 1 and IDF_TARGET not in ["esp32c5"]'),
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15617
|
||||
def test_temperature_sensor_driver(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases()
|
||||
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
components/esp_driver_twai/test_apps/test_twai:
|
||||
disable:
|
||||
- if: SOC_TWAI_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15618
|
||||
depends_components:
|
||||
- esp_driver_twai
|
||||
- esp_hal_twai
|
||||
|
||||
@@ -20,6 +20,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
@idf_parametrize(
|
||||
'target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1 and IDF_TARGET not in ["esp32c5"]'), indirect=['target']
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15618
|
||||
def test_driver_twai_loopbk(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases(group='twai', reset=True)
|
||||
|
||||
@@ -78,9 +79,10 @@ def fixture_create_socket_can() -> Bus:
|
||||
# Interactive Tests
|
||||
# ---------------------------------------------------------------------------
|
||||
@pytest.mark.twai_std
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4', 'esp32s31'], reason='no runner')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], 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=['esp32h4'], reason='no runner') # TODO: IDFCI-11110
|
||||
def test_driver_twai_listen_only(dut: Dut, socket_can: Bus) -> None:
|
||||
dut.expect_exact('Press ENTER to see the list of tests')
|
||||
dut.write('"twai_listen_only"')
|
||||
@@ -99,9 +101,10 @@ def test_driver_twai_listen_only(dut: Dut, socket_can: Bus) -> None:
|
||||
|
||||
|
||||
@pytest.mark.twai_std
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4', 'esp32s31'], reason='no runner')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], 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=['esp32h4'], reason='no runner') # TODO: IDFCI-11110
|
||||
def test_driver_twai_remote_request(dut: Dut, socket_can: Bus) -> None:
|
||||
dut.expect_exact('Press ENTER to see the list of tests')
|
||||
dut.write('"twai_remote_request"')
|
||||
|
||||
@@ -17,6 +17,10 @@ components/esp_driver_uart/test_apps/rs485:
|
||||
components/esp_driver_uart/test_apps/uart:
|
||||
disable:
|
||||
- if: SOC_UART_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15619
|
||||
depends_components:
|
||||
- esp_driver_uart
|
||||
- esp_hal_uart
|
||||
|
||||
@@ -30,6 +30,7 @@ input_argv = {
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15619
|
||||
def test_uart_single_dev(case_tester) -> None: # type: ignore
|
||||
dut = case_tester.first_dut
|
||||
chip_type = dut.app.target
|
||||
@@ -65,6 +66,7 @@ def test_uart_single_dev(case_tester) -> None: # type: ignore
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['esp32s3'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15619
|
||||
def test_uart_single_dev_psram(case_tester) -> None: # type: ignore
|
||||
dut = case_tester.first_dut
|
||||
for case in case_tester.test_menu:
|
||||
@@ -84,6 +86,7 @@ def test_uart_single_dev_psram(case_tester) -> None: # type: ignore
|
||||
@pytest.mark.generic_multi_device
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='s31 bringup on this module is not done')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='no runner') # TODO: IDFCI-10702
|
||||
@pytest.mark.parametrize(
|
||||
'config',
|
||||
[
|
||||
|
||||
@@ -14,7 +14,9 @@ from pytest_embedded_idf.utils import idf_parametrize
|
||||
],
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['esp32c3', 'esp32c5', 'esp32c6', 'esp32h2', 'esp32p4', 'esp32s31','esp32h4'], indirect=['target'])
|
||||
@idf_parametrize(
|
||||
'target', ['esp32c3', 'esp32c5', 'esp32c6', 'esp32h2', 'esp32p4', 'esp32s31', 'esp32h4'], indirect=['target']
|
||||
)
|
||||
def test_uhci(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases()
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
|
||||
|
||||
components/esp_hw_support/test_apps/cpu:
|
||||
components/esp_hw_support/test_apps/esp_hw_support_unity_tests:
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15602
|
||||
|
||||
components/esp_hw_support/test_apps/host_test_linux:
|
||||
enable:
|
||||
|
||||
@@ -23,9 +23,12 @@ def _run_non_recoverable_case(dut: IdfDut, test_name: str, expected_reason: str)
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize(
|
||||
'config,target',
|
||||
[('default', 'supported_targets')],
|
||||
[
|
||||
('default', 'supported_targets'),
|
||||
],
|
||||
indirect=['config', 'target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15602
|
||||
def test_cpu(dut: IdfDut) -> None:
|
||||
dut.run_all_single_board_cases(group='!cpu_reset&!cpu_non_recoverable', timeout=120)
|
||||
|
||||
@@ -33,9 +36,12 @@ def test_cpu(dut: IdfDut) -> None:
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize(
|
||||
'config,target',
|
||||
[('default', 'supported_targets')],
|
||||
[
|
||||
('default', 'supported_targets'),
|
||||
],
|
||||
indirect=['config', 'target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15602
|
||||
def test_cpu_reset(dut: IdfDut) -> None:
|
||||
dut.run_all_single_board_cases(group='cpu_reset', timeout=120)
|
||||
|
||||
@@ -43,9 +49,12 @@ def test_cpu_reset(dut: IdfDut) -> None:
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize(
|
||||
'config,target',
|
||||
[('default', 'supported_targets')],
|
||||
[
|
||||
('default', 'supported_targets'),
|
||||
],
|
||||
indirect=['config', 'target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15602
|
||||
def test_cpu_non_recoverable(dut: IdfDut) -> None:
|
||||
expected_reason = 'Unhandled debug exception' if dut.target in {'esp32', 'esp32s2', 'esp32s3'} else 'Breakpoint'
|
||||
present_cases = {case.name for case in dut.test_menu}
|
||||
|
||||
@@ -40,6 +40,7 @@ def test_rtc_calib_compensation_across_dslp(case_tester: CaseTester) -> None:
|
||||
@pytest.mark.temp_skip_ci(
|
||||
targets=['esp32s31'], reason='no flash_suspend runners available yet'
|
||||
) # TODO [ESP32S31] IDF-15531
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11111')
|
||||
@pytest.mark.parametrize(
|
||||
'config',
|
||||
[
|
||||
|
||||
@@ -48,7 +48,7 @@ available_rtcio_nums = {
|
||||
soc_filtered_targets('SOC_PM_SUPPORT_EXT1_WAKEUP == 1 and SOC_DEEP_SLEEP_SUPPORTED == 1'),
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of multi-device runners')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of multi-device runners') # TODO: IDFCI-10702
|
||||
def test_ext1_deepsleep(dut: tuple[IdfDut, IdfDut]) -> None:
|
||||
wakee = dut[0]
|
||||
waker = dut[1]
|
||||
@@ -100,7 +100,7 @@ def test_ext1_deepsleep(dut: tuple[IdfDut, IdfDut]) -> None:
|
||||
@pytest.mark.parametrize('count', [2], indirect=True)
|
||||
@pytest.mark.parametrize('config', TEST_CONFIGS, indirect=True)
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_GPIO_SUPPORT_HP_PERIPH_PD_SLEEP_WAKEUP == 1'), indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of multi-device runners')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of multi-device runners') # TODO: IDFCI-10702
|
||||
def test_rtcio_deepsleep(dut: tuple[IdfDut, IdfDut]) -> None:
|
||||
wakee = dut[0]
|
||||
waker = dut[1]
|
||||
@@ -147,7 +147,7 @@ def test_rtcio_deepsleep(dut: tuple[IdfDut, IdfDut]) -> None:
|
||||
@pytest.mark.parametrize('config', TEST_CONFIGS, indirect=True)
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='bringup on this module is not done')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of multi-device runners')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of multi-device runners') # TODO: IDFCI-10702
|
||||
def test_gpio_wakeup_enable_lightsleep(dut: tuple[IdfDut, IdfDut]) -> None:
|
||||
wakee = dut[0]
|
||||
waker = dut[1]
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
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
|
||||
@@ -13,7 +14,7 @@ from pytest_embedded_idf.utils import idf_parametrize
|
||||
],
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['esp32p4', 'esp32h2', 'esp32c5', 'esp32h4'], indirect=['target'])
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_PARLIO_LCD_SUPPORTED == 1'), indirect=['target'])
|
||||
def test_parlio_lcd(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases()
|
||||
|
||||
@@ -26,7 +27,11 @@ def test_parlio_lcd(dut: Dut) -> None:
|
||||
],
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['esp32p4', 'esp32h2', 'esp32c5', 'esp32h4'], indirect=['target'])
|
||||
@idf_parametrize(
|
||||
'target',
|
||||
soc_filtered_targets('SOC_PARLIO_LCD_SUPPORTED == 1 and SOC_FLASH_ENC_SUPPORTED == 1'),
|
||||
indirect=['target'],
|
||||
)
|
||||
def test_parlio_lcd_with_virt_flash_enc(dut: Dut) -> None:
|
||||
print(' - Erase flash')
|
||||
dut.serial.erase_flash()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-FileCopyrightText: 2024-2026 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
import pexpect
|
||||
import pytest
|
||||
@@ -31,6 +31,7 @@ def test_esp_system_stdio_no_output_uart(dut: Dut) -> None:
|
||||
@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')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-10703')
|
||||
def test_esp_system_stdio_only_serial_jtag(dut: Dut) -> None:
|
||||
dut.expect('2nd stage bootloader')
|
||||
dut.expect('Hello World')
|
||||
@@ -46,6 +47,7 @@ def test_esp_system_stdio_only_serial_jtag(dut: Dut) -> None:
|
||||
@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')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-10703')
|
||||
def test_esp_system_stdio_only_serial_jtag_no_vfs(dut: Dut) -> None:
|
||||
dut.expect('2nd stage bootloader')
|
||||
dut.expect('Hello World')
|
||||
@@ -57,6 +59,7 @@ def test_esp_system_stdio_only_serial_jtag_no_vfs(dut: Dut) -> None:
|
||||
@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')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-10703')
|
||||
def test_esp_system_stdio_secondary_serial_jtag(dut: Dut) -> None:
|
||||
dut.expect('2nd stage bootloader')
|
||||
dut.expect('Hello World')
|
||||
|
||||
@@ -10,6 +10,10 @@ components/esp_system/test_apps/esp_system_unity_tests:
|
||||
- if: (CONFIG_NAME == "psram" and SOC_SPIRAM_SUPPORTED != 1)
|
||||
- if: (CONFIG_NAME == "psram_with_pd_top" and (SOC_SPIRAM_SUPPORTED != 1 or SOC_PM_SUPPORT_TOP_PD != 1))
|
||||
- if: (CONFIG_NAME == "pd_vddsdio" and (SOC_LIGHT_SLEEP_SUPPORTED != 1))
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15604
|
||||
|
||||
components/esp_system/test_apps/linux_apis:
|
||||
enable:
|
||||
|
||||
@@ -28,6 +28,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
],
|
||||
indirect=['config', 'target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15604
|
||||
def test_esp_system(dut: Dut) -> None:
|
||||
# esp32p4 32MB PSRAM initialize in startup takes more than 30 sec
|
||||
dut.run_all_single_board_cases(timeout=60)
|
||||
@@ -87,6 +88,7 @@ def esp_reset_and_wait_ready_esp32c5_rev1(dut: Dut) -> None:
|
||||
[target for target in soc_filtered_targets('SOC_LIGHT_SLEEP_SUPPORTED == 1')],
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15604
|
||||
def test_sleep_uart_handling(dut: Dut) -> None:
|
||||
"""Test UART handling modes during light sleep."""
|
||||
# Test FLUSH mode output
|
||||
@@ -130,6 +132,7 @@ def test_sleep_uart_handling(dut: Dut) -> None:
|
||||
[target for target in soc_filtered_targets('SOC_CPU_LOCKUP_DEBUG_SUPPORTED == 1')],
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15604
|
||||
def test_cpu_lockup_trap_chain(dut: Dut) -> None:
|
||||
"""Trigger a PRO CPU lockup and verify the lockup output."""
|
||||
esp_reset_and_wait_ready(dut)
|
||||
@@ -160,6 +163,7 @@ def test_cpu_lockup_trap_chain(dut: Dut) -> None:
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize('config', ['default'], indirect=['config'])
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15604
|
||||
def test_stack_smash_protection(dut: Dut) -> None:
|
||||
dut.expect_exact('Press ENTER to see the list of tests')
|
||||
dut.write('"stack smashing protection"')
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
|
||||
|
||||
components/esp_timer/test_apps:
|
||||
disable_test:
|
||||
- if: IDF_TARGET == "esp32h4"
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15605
|
||||
depends_components:
|
||||
- esp_timer
|
||||
- esp_hal_timg
|
||||
|
||||
@@ -6,6 +6,7 @@ from pytest_embedded_idf.utils import idf_parametrize
|
||||
|
||||
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15605
|
||||
@idf_parametrize(
|
||||
'config,target',
|
||||
[
|
||||
|
||||
@@ -22,6 +22,10 @@ components/freertos/test_apps/freertos:
|
||||
temporary: true
|
||||
reason: target(s) not supported yet
|
||||
- if: CONFIG_NAME == "psram" and SOC_SPIRAM_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15606
|
||||
depends_components:
|
||||
- freertos
|
||||
- esp_system # trigger on changes to idle / tick hooks, wdt, entry point to freertos code
|
||||
|
||||
@@ -44,6 +44,7 @@ from pytest_embedded_idf.utils import idf_parametrize
|
||||
],
|
||||
indirect=['config', 'target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15606
|
||||
def test_freertos(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases()
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
|
||||
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='can not pass') # TODO: IDF-15675
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
def test_mbedtls(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases()
|
||||
|
||||
9
components/protocomm/test_apps/.build-test-rules.yml
Normal file
9
components/protocomm/test_apps/.build-test-rules.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
|
||||
|
||||
components/protocomm/test_apps:
|
||||
depends_components:
|
||||
- protocomm
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15614
|
||||
@@ -7,5 +7,6 @@ from pytest_embedded_idf.utils import idf_parametrize
|
||||
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15614
|
||||
def test_protocomm(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases()
|
||||
|
||||
@@ -14,7 +14,7 @@ from pytest_embedded_idf.utils import idf_parametrize
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='bringup on this module is not done')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='can not pass') # TODO: IDF-15638
|
||||
def test_pthread(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases(group='!thread-specific', timeout=300)
|
||||
|
||||
@@ -36,7 +36,7 @@ def test_pthread_single_core(dut: Dut) -> None:
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='bringup on this module is not done')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='can not pass') # TODO: IDF-15638
|
||||
def test_pthread_tls(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases(group='thread-specific', timeout=300)
|
||||
|
||||
|
||||
@@ -12,6 +12,10 @@ components/spi_flash/test_apps/esp_flash:
|
||||
- esp_driver_spi
|
||||
- esptool_py # Some flash related kconfigs are listed here.
|
||||
- esp_hal_mspi
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15616
|
||||
|
||||
components/spi_flash/test_apps/esp_flash_blockdev:
|
||||
disable_test:
|
||||
|
||||
@@ -17,6 +17,7 @@ from pytest_embedded_idf.utils import idf_parametrize
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15616
|
||||
def test_esp_flash(dut: Dut) -> None:
|
||||
dut.run_all_single_board_cases(group='esp_flash')
|
||||
|
||||
|
||||
@@ -23,6 +23,9 @@ examples/bluetooth/bluedroid/ble:
|
||||
- if: IDF_TARGET == "esp32s31"
|
||||
temporary: true
|
||||
reason: lack of runners
|
||||
- if: IDF_TARGET == "esp32h4" # TODO: IDFCI-10702
|
||||
temporary: true
|
||||
reason: lack of runner
|
||||
depends_components+:
|
||||
- esp_console
|
||||
- esp_driver_gpio
|
||||
@@ -56,6 +59,9 @@ examples/bluetooth/bluedroid/ble/ble_throughput:
|
||||
- if: IDF_TARGET == "esp32s31"
|
||||
temporary: true
|
||||
reason: lack of runners
|
||||
- if: IDF_TARGET == "esp32h4" # TODO: IDFCI-10702
|
||||
temporary: true
|
||||
reason: lack of runner
|
||||
depends_components+:
|
||||
- esp_console
|
||||
- esp_driver_gpio
|
||||
@@ -72,6 +78,9 @@ examples/bluetooth/bluedroid/ble_50:
|
||||
- if: IDF_TARGET == "esp32s31"
|
||||
temporary: true
|
||||
reason: lack of runners
|
||||
- if: IDF_TARGET == "esp32h4" # TODO: IDFCI-10702
|
||||
temporary: true
|
||||
reason: lack of runner
|
||||
depends_components+:
|
||||
- esp_console
|
||||
- esp_driver_gpio
|
||||
@@ -384,6 +393,9 @@ examples/bluetooth/nimble/blecent:
|
||||
- if: IDF_TARGET == "esp32s31"
|
||||
temporary: true
|
||||
reason: lack of runners
|
||||
- if: IDF_TARGET == "esp32h4" # TODO: IDFCI-10702
|
||||
temporary: true
|
||||
reason: lack of runner
|
||||
depends_components+:
|
||||
- esp_coex
|
||||
- esp_pm
|
||||
@@ -430,6 +442,9 @@ examples/bluetooth/nimble/power_save:
|
||||
- if: IDF_TARGET == "esp32s31"
|
||||
temporary: true
|
||||
reason: lack of runners, and light sleep not supported yet
|
||||
- if: IDF_TARGET == "esp32h4" # TODO: IDFCI-10702
|
||||
temporary: true
|
||||
reason: lack of runner
|
||||
depends_components+:
|
||||
- esp_coex
|
||||
- esp_pm
|
||||
|
||||
@@ -11,6 +11,7 @@ CUR_DIR = Path(__file__).parent.resolve()
|
||||
|
||||
|
||||
# Case 1: gatt write throughput test(EXAMPLE_CI_ID = 2)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11112')
|
||||
@pytest.mark.two_duts
|
||||
@pytest.mark.parametrize(
|
||||
'count, app_path, config, erase_nvs',
|
||||
@@ -102,6 +103,7 @@ def test_c2_26mhz_xtal_write_throughput(app_path: str, dut: tuple[IdfDut, IdfDut
|
||||
|
||||
|
||||
# Case 3: gatt notify throughput test(EXAMPLE_CI_ID = 1)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11112')
|
||||
@pytest.mark.two_duts
|
||||
@pytest.mark.parametrize(
|
||||
'count, app_path, config, erase_nvs',
|
||||
|
||||
@@ -17,6 +17,7 @@ GATT_APP_PATH = f'{str(CUR_DIR / "gatt_server")}|{str(CUR_DIR / "gatt_client")}'
|
||||
GATT_CI_CONFIGS = ['name', 'smp_off|smp_off', 'min_bin|min_bin', 'log_off|log_off']
|
||||
|
||||
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11112')
|
||||
@pytest.mark.two_duts
|
||||
@pytest.mark.parametrize(
|
||||
'count, app_path, config, erase_nvs',
|
||||
@@ -115,6 +116,7 @@ GATT_SECURITY_APP_PATH = f'{str(CUR_DIR / "gatt_security_server")}|{str(CUR_DIR
|
||||
GATT_SECURITY_CI_CONFIGS = ['name', 'min_bin|min_bin', 'log_off|log_off']
|
||||
|
||||
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11112')
|
||||
@pytest.mark.two_duts
|
||||
@pytest.mark.parametrize(
|
||||
'count, app_path, config, erase_nvs',
|
||||
@@ -240,6 +242,7 @@ def test_c2_26mhz_xtal_gatt_security_func(app_path: str, dut: tuple[IdfDut, IdfD
|
||||
|
||||
|
||||
# Case 5: ble ibeacon test
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11112')
|
||||
@pytest.mark.two_duts
|
||||
@pytest.mark.parametrize(
|
||||
'count, app_path, config, erase_nvs',
|
||||
@@ -320,6 +323,7 @@ def test_c2_26mhz_ble_ibeacon_func(app_path: str, dut: tuple[IdfDut, IdfDut]) ->
|
||||
|
||||
# Case 7: gatt client and gatt server config test
|
||||
# EXAMPLE_CI_ID=4
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11112')
|
||||
@pytest.mark.two_duts
|
||||
@pytest.mark.parametrize(
|
||||
'count, app_path, config, erase_nvs',
|
||||
@@ -420,6 +424,7 @@ def test_c2_26mhz_xtal_gatt_config_func(app_path: str, dut: tuple[IdfDut, IdfDut
|
||||
|
||||
|
||||
# Case 9: BLE init deinit loop test
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11112')
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.parametrize('config, app_path', [('init_deinit', f'{str(CUR_DIR / "gatt_client")}')], indirect=True)
|
||||
@idf_parametrize(
|
||||
|
||||
@@ -15,6 +15,7 @@ BLE50_SECURITY_APP_PATH = f'{str(CUR_DIR / "ble50_security_server")}|{str(CUR_DI
|
||||
BLE50_SECURITY_CI_CONFIGS = ['name']
|
||||
|
||||
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11112')
|
||||
@pytest.mark.two_duts
|
||||
@pytest.mark.parametrize(
|
||||
'count, app_path, config, erase_nvs',
|
||||
@@ -97,6 +98,7 @@ def test_c2_26mhz_xtal_ble50_security_func(app_path: str, dut: tuple[IdfDut, Idf
|
||||
|
||||
# Case 3: period_adv and period_sync test
|
||||
# EXAMPLE_CI_ID=8
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11112')
|
||||
@pytest.mark.two_duts
|
||||
@pytest.mark.parametrize(
|
||||
'count, app_path, config, erase_nvs',
|
||||
@@ -170,6 +172,7 @@ def test_c2_26mhz_xtal_period_adv_sync_func(app_path: str, dut: tuple[IdfDut, Id
|
||||
|
||||
# Case 5: ble50 security client and ble50 security server config test
|
||||
# EXAMPLE_CI_ID=7
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11112')
|
||||
@pytest.mark.two_duts
|
||||
@pytest.mark.parametrize(
|
||||
'count, app_path, config, erase_nvs',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
from pathlib import Path
|
||||
|
||||
@@ -11,6 +11,7 @@ CUR_DIR = Path(__file__).parent.resolve()
|
||||
|
||||
|
||||
# Case 1: BLE power save test
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-11112')
|
||||
@pytest.mark.two_duts
|
||||
@pytest.mark.parametrize(
|
||||
'count, app_path',
|
||||
|
||||
@@ -241,6 +241,10 @@ examples/peripherals/i2s/i2s_codec/i2s_es7210_tdm:
|
||||
disable:
|
||||
- if: SOC_I2S_SUPPORTS_TDM != 1 or (SOC_I2C_SUPPORTED != 1 or SOC_GPSPI_SUPPORTED != 1)
|
||||
reason: rely on I2S TDM mode to receive audio, I2C to config es7210 and SPI to save audio to SD card
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15609
|
||||
depends_components:
|
||||
- esp_driver_i2s
|
||||
- esp_driver_dma
|
||||
@@ -253,6 +257,10 @@ examples/peripherals/i2s/i2s_codec/i2s_es8311:
|
||||
disable:
|
||||
- if: (SOC_I2S_SUPPORTED != 1 or SOC_I2C_SUPPORTED != 1)
|
||||
reason: rely on I2S STD mode and I2C to config es7210
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15609
|
||||
depends_components:
|
||||
- esp_driver_dma
|
||||
- esp_driver_i2s
|
||||
@@ -387,6 +395,10 @@ examples/peripherals/lcd/tjpgd:
|
||||
examples/peripherals/ledc:
|
||||
disable:
|
||||
- if: SOC_LEDC_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15610
|
||||
depends_components:
|
||||
- esp_driver_ledc
|
||||
- esp_hal_ledc
|
||||
@@ -774,6 +786,10 @@ examples/peripherals/twai/twai_network/twai_sender:
|
||||
examples/peripherals/twai/twai_utils:
|
||||
disable:
|
||||
- if: SOC_TWAI_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15618
|
||||
depends_components:
|
||||
- esp_driver_twai
|
||||
- esp_hal_twai
|
||||
@@ -787,6 +803,9 @@ examples/peripherals/uart/uart_dma_ota:
|
||||
- if: IDF_TARGET in ["esp32s31"]
|
||||
temporary: true
|
||||
reason: Lack runners
|
||||
- if: IDF_TARGET in ["esp32h4"] # TODO: IDFCI-10702
|
||||
temporary: true
|
||||
reason: lack of runner
|
||||
depends_components:
|
||||
- esp_driver_uart
|
||||
- esp_driver_dma
|
||||
|
||||
@@ -13,7 +13,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
soc_filtered_targets('SOC_I2S_SUPPORTS_PDM == 1'),
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h21', 'esp32h4'], reason='lack of runners')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners')
|
||||
def test_i2s_pdm_tx_example(dut: Dut) -> None:
|
||||
dut.expect(r'I2S PDM TX example start', timeout=5)
|
||||
dut.expect(r'---------------------------', timeout=5)
|
||||
|
||||
@@ -12,7 +12,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
soc_filtered_targets('SOC_I2S_SUPPORTED == 1'),
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h21', 'esp32h4'], reason='lack of runners')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners')
|
||||
def test_i2s_basic_example(dut: Dut) -> None:
|
||||
dut.expect(r'i2s_common: tx channel is registered on I2S0 successfully', timeout=5)
|
||||
dut.expect(r'i2s_common: rx channel is registered on I2S0 successfully', timeout=5)
|
||||
|
||||
@@ -12,7 +12,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
soc_filtered_targets('SOC_I2S_SUPPORTS_TDM == 1'),
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h21', 'esp32h4'], reason='lack of runners')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners')
|
||||
def test_i2s_tdm_example(dut: Dut) -> None:
|
||||
dut.expect(r'i2s_common: tx channel is registered on I2S0 successfully', timeout=5)
|
||||
dut.expect(r'i2s_common: rx channel is registered on I2S0 successfully', timeout=5)
|
||||
|
||||
@@ -9,6 +9,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_I2S_SUPPORTS_TDM == 1'), indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15609
|
||||
def test_i2s_es7210_tdm_example(dut: Dut) -> None:
|
||||
dut.expect_exact('example: Create I2S receive channel')
|
||||
dut.expect_exact('example: Configure I2S receive channel to TDM mode')
|
||||
|
||||
@@ -12,7 +12,8 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
soc_filtered_targets('SOC_I2S_SUPPORTED == 1'),
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h21', 'esp32h4'], reason='lack of runners')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h21'], reason='lack of runners')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15609
|
||||
def test_i2s_es8311_example_generic(dut: Dut) -> None:
|
||||
dut.expect('i2s es8311 codec example start')
|
||||
dut.expect('-----------------------------')
|
||||
|
||||
@@ -8,6 +8,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_LEDC_SUPPORTED == 1'), indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15610
|
||||
def test_ledc_fade_example(dut: IdfDut) -> None:
|
||||
# repeat to test at least two rounds of fade
|
||||
dut.expect_exact('1. LEDC fade up to duty = 4000')
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
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',
|
||||
['esp32', 'esp32s3', 'esp32c5', 'esp32c6', 'esp32h2', 'esp32p4', 'esp32s31', 'esp32h4'],
|
||||
soc_filtered_targets('SOC_MCPWM_SUPPORTED == 1'),
|
||||
indirect=['target'],
|
||||
)
|
||||
def test_servo_mg996r_example(dut: Dut) -> None:
|
||||
|
||||
@@ -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=['esp32h4'], reason='cannot pass') # TODO: IDF-15618
|
||||
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=['esp32h4'], reason='cannot pass') # TODO: IDF-15618
|
||||
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=['esp32h4'], reason='cannot pass') # TODO: IDF-15618
|
||||
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=['esp32h4'], reason='cannot pass') # TODO: IDF-15618
|
||||
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=['esp32h4'], reason='cannot pass') # TODO: IDF-15618
|
||||
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=['esp32h4'], reason='cannot pass') # TODO: IDF-15618
|
||||
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=['esp32h4'], reason='cannot pass') # TODO: IDF-15618
|
||||
def test_twai_utils_send_various_frames(twai: TwaiTestHelper) -> None:
|
||||
with twai.session():
|
||||
# Boundary ID tests
|
||||
@@ -478,6 +485,7 @@ def test_twai_utils_send_various_frames(twai: TwaiTestHelper) -> None:
|
||||
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_TWAI_FD_SUPPORTED == 1'), indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15618
|
||||
def test_twai_utils_fd_frames(twai: TwaiTestHelper) -> None:
|
||||
with twai.session():
|
||||
FD_FRAMES = [
|
||||
@@ -492,6 +500,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15618
|
||||
def test_twai_utils_mask_filters(twai: TwaiTestHelper) -> None:
|
||||
"""Test TWAI filtering including automatic extended frame detection."""
|
||||
MASK_FILTER_GROUPS = [
|
||||
@@ -549,7 +558,12 @@ def test_twai_utils_mask_filters(twai: TwaiTestHelper) -> None:
|
||||
|
||||
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_TWAI_RANGE_FILTER_NUM > 0'), indirect=['target'])
|
||||
@idf_parametrize(
|
||||
'target',
|
||||
soc_filtered_targets('SOC_TWAI_RANGE_FILTER_NUM > 0'),
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15618
|
||||
def test_twai_utils_range_filters(twai: TwaiTestHelper) -> None:
|
||||
"""Test TWAI range filters (available on chips with range filter support)."""
|
||||
RANGE_FILTER_GROUPS = [
|
||||
@@ -594,7 +608,7 @@ def test_twai_utils_range_filters(twai: TwaiTestHelper) -> None:
|
||||
|
||||
|
||||
@pytest.mark.twai_std
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='no runner')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='no runner') # TODO: IDFCI-11110
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='no runner')
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_TWAI_SUPPORTED == 1'), indirect=['target'])
|
||||
def test_twai_utils_external_communication(twai: TwaiTestHelper, usb_can: CanBusManager) -> None:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
import os
|
||||
|
||||
@@ -6,6 +6,7 @@ import pytest
|
||||
import serial
|
||||
from pytest_embedded import Dut
|
||||
from pytest_embedded_idf.utils import idf_parametrize
|
||||
from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
|
||||
PACKET_SIZE = 10 * 1024 # 10 KB for upper computer
|
||||
FLASH_PORT = '/dev/serial_ports/ttyUSB-esp32'
|
||||
@@ -42,7 +43,9 @@ def send_file_via_uart(port: str, baud_rate: int, file_path: str, packet_size: i
|
||||
],
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['esp32c6', 'esp32c3', 'esp32c5', 'esp32s3', 'esp32h2', 'esp32p4', 'esp32h4'], indirect=['target'])
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_UHCI_SUPPORTED == 1'), indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-10703')
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='lack of runner # TODO: IDFCI-11113')
|
||||
def test_uart_dma_ota(dut: Dut) -> None:
|
||||
dut.expect_exact('uhci-example: OTA process started')
|
||||
# We OTA the same binary to another partition and switch to there.
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
|
||||
|
||||
examples/storage/custom_flash_driver:
|
||||
disable_test:
|
||||
- if: IDF_TARGET == "esp32h4"
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15601
|
||||
depends_components:
|
||||
- spi_flash
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ from pytest_embedded_idf.utils import idf_parametrize
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15601
|
||||
def test_examples_custom_flash_driver(dut: Dut) -> None:
|
||||
dut.expect(r'Using overridden bootloader_flash_unlock', timeout=20)
|
||||
dut.expect(r'Using overridden bootloader_flash_qio, the list number is \d+', timeout=20)
|
||||
|
||||
@@ -16,6 +16,10 @@ examples/system/app_trace_basic:
|
||||
- app_trace
|
||||
|
||||
examples/system/base_mac_address:
|
||||
disable_test:
|
||||
- if: IDF_TARGET == "esp32h4"
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15600
|
||||
depends_components:
|
||||
- *common_components
|
||||
- esp_hw_support
|
||||
@@ -62,6 +66,10 @@ examples/system/esp_event/user_event_loops:
|
||||
examples/system/esp_timer:
|
||||
depends_components:
|
||||
- esp_timer
|
||||
disable_test:
|
||||
- if: IDF_TARGET in ["esp32h4"]
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15605
|
||||
|
||||
examples/system/eventfd:
|
||||
disable:
|
||||
@@ -121,6 +129,10 @@ examples/system/ipc/ipc_isr/xtensa:
|
||||
examples/system/light_sleep:
|
||||
disable:
|
||||
- if: SOC_LIGHT_SLEEP_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET == "esp32h4"
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15611
|
||||
|
||||
examples/system/nmi_isr:
|
||||
enable:
|
||||
|
||||
@@ -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=['esp32h4'], reason='cannot pass') # TODO: IDF-15600
|
||||
def test_base_mac_address(dut: Dut) -> None:
|
||||
def get_hex_r(num_bytes: int) -> str:
|
||||
return r', '.join((r'0x([0-9a-f]{1,2})',) * num_bytes)
|
||||
|
||||
@@ -43,6 +43,7 @@ TIMED_RESTART_TIME = 7000000
|
||||
indirect=True,
|
||||
)
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15605
|
||||
def test_esp_timer(dut: Dut) -> None:
|
||||
match = dut.expect(STARTING_TIMERS_REGEX)
|
||||
start_time = int(match.group(1))
|
||||
|
||||
@@ -10,6 +10,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15611
|
||||
def test_light_sleep(dut: Dut) -> None:
|
||||
ENTERING_SLEEP_STR = 'Entering light sleep'
|
||||
EXIT_SLEEP_REGEX = r'Returned from light sleep, reason: (\w+), t=(\d+) ms, slept for (\d+) ms'
|
||||
|
||||
@@ -139,8 +139,11 @@ def test_sysview_tracing_jtag(openocd_dut: 'OpenOCD', dut: IdfDut) -> None:
|
||||
@pytest.mark.usb_serial_jtag
|
||||
@idf_parametrize('config', ['sysview_jtag'], indirect=['config'])
|
||||
@idf_parametrize(
|
||||
'target', ['esp32s3', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32c61', 'esp32h2', 'esp32p4'], indirect=['target']
|
||||
'target',
|
||||
['esp32s3', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32c61', 'esp32h2', 'esp32p4', 'esp32h4'],
|
||||
indirect=['target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-10703')
|
||||
def test_sysview_tracing_usj(openocd_dut: 'OpenOCD', dut: IdfDut) -> None:
|
||||
_test_sysview_tracing_jtag(openocd_dut, dut)
|
||||
|
||||
@@ -173,6 +176,7 @@ def test_sysview_tracing_uart_c2(dut: IdfDut) -> None:
|
||||
@pytest.mark.usb_serial_jtag
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_USB_SERIAL_JTAG_SUPPORTED == 1'), indirect=['target'])
|
||||
@pytest.mark.parametrize('config', [pytest.param('sysview_usj')], indirect=True)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='lack of runner # TODO: IDFCI-10703')
|
||||
def test_sysview_tracing_usj_serial(dut: IdfDut) -> None:
|
||||
time.sleep(1) # wait for USJ port to be ready
|
||||
usj_port = '/dev/serial_ports/ttyACM-esp32'
|
||||
|
||||
@@ -58,6 +58,10 @@ tools/test_apps/system/eh_frame:
|
||||
reason: Only relevant for riscv targets
|
||||
|
||||
tools/test_apps/system/esp_intr_dump:
|
||||
disable_test:
|
||||
- if: IDF_TARGET == "esp32h4"
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15603
|
||||
|
||||
tools/test_apps/system/flash_auto_suspend_iram_reduction:
|
||||
disable:
|
||||
@@ -90,6 +94,12 @@ tools/test_apps/system/gdb_loadable_elf:
|
||||
temporary: true
|
||||
reason: target esp32c6, esp32h2 is not supported yet
|
||||
|
||||
tools/test_apps/system/gdbstub_runtime:
|
||||
disable_test:
|
||||
- if: IDF_TARGET == "esp32h4"
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15607
|
||||
|
||||
tools/test_apps/system/init_array:
|
||||
enable:
|
||||
- if: INCLUDE_DEFAULT == 1 or IDF_TARGET == "linux"
|
||||
@@ -138,6 +148,10 @@ tools/test_apps/system/no_embedded_paths:
|
||||
tools/test_apps/system/panic:
|
||||
enable:
|
||||
- if: INCLUDE_DEFAULT == 1 or IDF_TARGET in ["esp32s31"]
|
||||
disable_test:
|
||||
- if: IDF_TARGET == "esp32h4"
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15612
|
||||
|
||||
tools/test_apps/system/ram_loadable_app:
|
||||
disable:
|
||||
@@ -147,7 +161,7 @@ tools/test_apps/system/ram_loadable_app:
|
||||
disable_test:
|
||||
- if: IDF_TARGET == "esp32h4"
|
||||
temporary: true
|
||||
reason: cannot pass yet
|
||||
reason: cannot pass yet # TODO: IDF-15626
|
||||
- if: IDF_TARGET == "esp32s31"
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15525
|
||||
@@ -176,3 +190,7 @@ tools/test_apps/system/unicore_bootloader:
|
||||
reason: the test is only relevant for multicore chips
|
||||
- if: CONFIG_NAME == "unicore_psram" and SOC_PSRAM_SUPPORTED != 1
|
||||
- if: CONFIG_NAME == "multicore_psram" and SOC_PSRAM_SUPPORTED != 1
|
||||
disable_test:
|
||||
- if: IDF_TARGET == "esp32h4"
|
||||
temporary: true
|
||||
reason: cannot pass # TODO: IDF-15620
|
||||
|
||||
@@ -48,6 +48,7 @@ def test_esp_intr_dump_shared(dut: Dut) -> None:
|
||||
# TODO: IDF-9512, Update the expected output of dual core RISC-V chips when the issue is resolved
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15603
|
||||
def test_esp_intr_dump_expected_output(dut: Dut) -> None:
|
||||
dut.expect_exact(PROMPT, timeout=30)
|
||||
dut.write('intr_dump\n')
|
||||
|
||||
@@ -293,6 +293,7 @@ def test_coproc_registers(dut: PanicTestDut) -> None:
|
||||
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15607
|
||||
def test_gdbstub_runtime(dut: PanicTestDut) -> None:
|
||||
start_gdb(dut)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ TARGETS_XTENSA_DUAL_CORE = ['esp32', 'esp32s3']
|
||||
TARGETS_XTENSA = TARGETS_XTENSA_SINGLE_CORE + TARGETS_XTENSA_DUAL_CORE
|
||||
|
||||
TARGETS_RISCV_SINGLE_CORE = ['esp32c2', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32h2', 'esp32c61']
|
||||
TARGETS_RISCV_DUAL_CORE = ['esp32p4', 'esp32s31', 'esp32h4']
|
||||
TARGETS_RISCV_DUAL_CORE = ['esp32p4', 'esp32s31']
|
||||
TARGETS_RISCV_TARGETS = TARGETS_RISCV_SINGLE_CORE + TARGETS_RISCV_DUAL_CORE
|
||||
|
||||
TARGETS_RISCV = TARGETS_RISCV_SINGLE_CORE + TARGETS_RISCV_DUAL_CORE
|
||||
@@ -70,7 +70,6 @@ CONFIG_PANIC = list(
|
||||
'esp32c6',
|
||||
'esp32c61',
|
||||
'esp32h2',
|
||||
'esp32h4',
|
||||
],
|
||||
)
|
||||
)
|
||||
@@ -200,6 +199,7 @@ def common_test(
|
||||
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize('config, target', CONFIGS, indirect=['config', 'target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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:')
|
||||
@@ -232,6 +232,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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:')
|
||||
@@ -269,6 +270,7 @@ def test_task_wdt_cpu1(dut: PanicTestDut, config: str, test_func_name: str) -> N
|
||||
],
|
||||
indirect=['config', 'target'],
|
||||
)
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_panic_extram_stack(dut: PanicTestDut, config: str) -> None:
|
||||
if 'heap' in config:
|
||||
dut.run_test_func('test_panic_extram_stack_heap')
|
||||
@@ -296,6 +298,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -318,6 +321,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -340,6 +344,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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']:
|
||||
@@ -371,6 +376,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_stack_overflow(dut: PanicTestDut, config: str, test_func_name: str) -> None:
|
||||
dut.run_test_func(test_func_name)
|
||||
if dut.is_xtensa:
|
||||
@@ -392,6 +398,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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:
|
||||
@@ -419,6 +426,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_illegal_instruction(dut: PanicTestDut, config: str, test_func_name: str) -> None:
|
||||
dut.run_test_func(test_func_name)
|
||||
if dut.is_xtensa:
|
||||
@@ -455,6 +463,7 @@ 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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_storeprohibited(dut: PanicTestDut, config: str, test_func_name: str) -> None:
|
||||
check_x_prohibited(dut, config, test_func_name, 'Store')
|
||||
|
||||
@@ -467,6 +476,7 @@ def test_loadprohibited(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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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'
|
||||
@@ -489,6 +499,7 @@ def test_abort(dut: PanicTestDut, config: str, test_func_name: str) -> None:
|
||||
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize('config, target', CONFIGS_UBSAN, indirect=['config', 'target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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'
|
||||
@@ -515,6 +526,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -539,6 +551,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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.*$'
|
||||
@@ -561,6 +574,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -598,6 +612,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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)
|
||||
@@ -623,6 +638,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_panic_handler_stuck0(dut: PanicTestDut, config: str, test_func_name: str) -> None:
|
||||
dut.run_test_func(test_func_name)
|
||||
|
||||
@@ -635,6 +651,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_panic_handler_stuck1(dut: PanicTestDut, config: str, test_func_name: str) -> None:
|
||||
dut.run_test_func(test_func_name)
|
||||
|
||||
@@ -647,6 +664,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_panic_handler_crash0(dut: PanicTestDut, config: str, test_func_name: str) -> None:
|
||||
dut.run_test_func(test_func_name)
|
||||
|
||||
@@ -665,6 +683,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_panic_handler_crash1(dut: PanicTestDut, config: str, test_func_name: str) -> None:
|
||||
dut.run_test_func(test_func_name)
|
||||
|
||||
@@ -791,6 +810,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -801,6 +821,7 @@ def test_dcache_read_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.xfail(targets=['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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -831,6 +852,7 @@ 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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_iram_reg1_write_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
iram_reg1_write_violation(dut, test_func_name)
|
||||
|
||||
@@ -868,6 +890,7 @@ 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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_iram_reg2_write_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
iram_reg_write_violation(dut, test_func_name)
|
||||
|
||||
@@ -905,6 +928,7 @@ 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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_iram_reg3_write_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
iram_reg_write_violation(dut, test_func_name)
|
||||
|
||||
@@ -944,6 +968,7 @@ def iram_reg4_write_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
@pytest.mark.xfail(targets=['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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_iram_reg4_write_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
iram_reg_write_violation(dut, test_func_name)
|
||||
|
||||
@@ -976,6 +1001,7 @@ def dram_reg1_execute_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
@pytest.mark.xfail(targets=['esp32s2'], reason='Multiple panic reasons for the same test may surface', 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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_dram_reg1_execute_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
dram_reg1_execute_violation(dut, test_func_name)
|
||||
|
||||
@@ -1007,6 +1033,7 @@ def dram_reg2_execute_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
@pytest.mark.xfail(targets=['esp32s2'], reason='Multiple panic reasons for the same test may surface', 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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_dram_reg2_execute_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
dram_reg2_execute_violation(dut, test_func_name)
|
||||
|
||||
@@ -1021,6 +1048,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -1033,6 +1061,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -1056,6 +1085,7 @@ def test_rtc_fast_reg2_execute_violation(dut: PanicTestDut, test_func_name: str)
|
||||
@pytest.mark.xfail(targets=['esp32s2'], reason='Multiple panic reasons for the same test may surface', run=False)
|
||||
@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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_rtc_fast_reg3_execute_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
dut.run_test_func(test_func_name)
|
||||
|
||||
@@ -1081,6 +1111,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -1092,6 +1123,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -1111,6 +1143,7 @@ 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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_irom_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
irom_reg_write_violation(dut, test_func_name)
|
||||
|
||||
@@ -1132,6 +1165,7 @@ def irom_mask_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> Non
|
||||
@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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_irom_mask_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
irom_mask_reg_write_violation(dut, test_func_name)
|
||||
|
||||
@@ -1146,6 +1180,7 @@ def drom_mask_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> Non
|
||||
@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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_drom_mask_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
drom_mask_reg_write_violation(dut, test_func_name)
|
||||
|
||||
@@ -1160,6 +1195,7 @@ 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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_drom_reg_write_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
drom_reg_write_violation(dut, test_func_name)
|
||||
|
||||
@@ -1181,6 +1217,7 @@ 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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_drom_reg_execute_violation(dut: PanicTestDut, test_func_name: str) -> None:
|
||||
drom_reg_execute_violation(dut, test_func_name)
|
||||
|
||||
@@ -1205,6 +1242,7 @@ def spiram_xip_irom_alignment_reg_execute_violation(dut: PanicTestDut, test_func
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32c5'], reason='TODO IDF-14835')
|
||||
@idf_parametrize('config, target', CONFIGS_MEMPROT_SPIRAM_XIP_IROM_ALIGNMENT_HEAP, indirect=['config', 'target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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)
|
||||
|
||||
@@ -1234,6 +1272,7 @@ def spiram_xip_drom_alignment_reg_execute_violation(dut: PanicTestDut, test_func
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32c5'], reason='TODO IDF-14835')
|
||||
@idf_parametrize('config, target', CONFIGS_MEMPROT_SPIRAM_XIP_DROM_ALIGNMENT_HEAP, indirect=['config', 'target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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)
|
||||
|
||||
@@ -1250,6 +1289,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -1260,6 +1300,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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')
|
||||
@@ -1270,6 +1311,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_gdbstub_coredump(dut: PanicTestDut) -> None:
|
||||
test_func_name = 'test_storeprohibited'
|
||||
dut.run_test_func(test_func_name)
|
||||
@@ -1295,6 +1337,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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)
|
||||
@@ -1312,6 +1355,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_illegal_access(dut: PanicTestDut, config: str, test_func_name: str) -> None:
|
||||
dut.run_test_func(test_func_name)
|
||||
if dut.is_xtensa:
|
||||
@@ -1325,6 +1369,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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.*$'
|
||||
@@ -1381,6 +1426,7 @@ 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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_coredump_summary(dut: PanicTestDut) -> None:
|
||||
_test_coredump_summary(dut, False, False)
|
||||
|
||||
@@ -1394,6 +1440,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=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
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:
|
||||
@@ -1427,6 +1474,7 @@ def test_tcb_corrupted(dut: PanicTestDut, target: str, config: str, test_func_na
|
||||
|
||||
@pytest.mark.generic
|
||||
@idf_parametrize('config, target', CONFIG_PANIC_HALT, indirect=['config', 'target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15612
|
||||
def test_panic_halt(dut: PanicTestDut) -> None:
|
||||
dut.run_test_func('test_panic_halt')
|
||||
dut.expect_exact('CPU halted.', timeout=30)
|
||||
|
||||
@@ -12,6 +12,7 @@ from pytest_embedded_idf.utils import soc_filtered_targets
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.parametrize('config', ['multicore', 'multicore_psram'], indirect=True)
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_CPU_CORES_NUM > 1'), indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15620
|
||||
def test_multicore_app_and_unicore_bootloader(dut: Dut, app_downloader, config) -> None: # type: ignore
|
||||
dut.expect('Multicore bootloader')
|
||||
dut.expect('Multicore app')
|
||||
@@ -36,6 +37,7 @@ def test_multicore_app_and_unicore_bootloader(dut: Dut, app_downloader, config)
|
||||
@pytest.mark.generic
|
||||
@pytest.mark.parametrize('config', ['unicore', 'unicore_psram'], indirect=True)
|
||||
@idf_parametrize('target', soc_filtered_targets('SOC_CPU_CORES_NUM > 1'), indirect=['target'])
|
||||
@pytest.mark.temp_skip_ci(targets=['esp32h4'], reason='cannot pass') # TODO: IDF-15620
|
||||
def test_unicore_app_and_multicore_bootloader(dut: Dut, app_downloader, config) -> None: # type: ignore
|
||||
dut.expect('Unicore bootloader')
|
||||
dut.expect('Unicore app')
|
||||
|
||||
Reference in New Issue
Block a user