diff --git a/.gitlab/ci/target-test.yml b/.gitlab/ci/target-test.yml index ae09296711..dbc0b43183 100644 --- a/.gitlab/ci/target-test.yml +++ b/.gitlab/ci/target-test.yml @@ -111,6 +111,16 @@ example_test_pytest_esp32_flash_encryption: TARGET: ESP32 ENV_MARKER: flash_encryption +example_test_pytest_esp32_multi_dut_generic: + extends: + - .pytest_examples_dir_template + - .rules:test:example_test-esp32 + needs: + - build_pytest_examples_esp32 + variables: + TARGET: ESP32 + ENV_MARKER: multi_dut_generic + example_test_pytest_esp32c3_flash_encryption: extends: - .pytest_examples_dir_template diff --git a/examples/wifi/getting_started/pytest_wifi_getting_started.py b/examples/wifi/getting_started/pytest_wifi_getting_started.py new file mode 100644 index 0000000000..a85e0a9aa8 --- /dev/null +++ b/examples/wifi/getting_started/pytest_wifi_getting_started.py @@ -0,0 +1,42 @@ +# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import os.path +from typing import Tuple + +import pytest +from pytest_embedded_idf.dut import IdfDut + +# @pytest.mark.supported_targets +# This test should support all targets, even between different target types +# For now our CI only support multi dut with esp32 +# If you want to enable different target type, please use the following param +# @pytest.mark.parametrize( +# 'count, app_path, target', [ +# (2, +# f'{os.path.join(os.path.dirname(__file__), "softAP")}|{os.path.join(os.path.dirname(__file__), "station")}', +# 'esp32|esp32s2'), +# ], +# indirect=True, +# ) + + +@pytest.mark.esp32 +@pytest.mark.multi_dut_generic +@pytest.mark.parametrize( + 'count, app_path', [ + (2, + f'{os.path.join(os.path.dirname(__file__), "softAP")}|{os.path.join(os.path.dirname(__file__), "station")}'), + ], indirect=True +) +def test_wifi_getting_started(dut: Tuple[IdfDut, IdfDut]) -> None: + softap = dut[0] + station = dut[1] + + ssid = 'myssid' + password = 'mypassword' + tag = 'wifi station' + + station.expect(f'{tag}: got ip:', timeout=60) + station.expect(f'{tag}: connected to ap SSID:{ssid} password:{password}', timeout=60) + softap.expect('station .+ join, AID=', timeout=60) diff --git a/pytest.ini b/pytest.ini index a386445b25..50c9554f53 100644 --- a/pytest.ini +++ b/pytest.ini @@ -35,6 +35,9 @@ markers = flash_encryption: Flash Encryption runners ir_transceiver: runners with a pair of IR transmitter and receiver + ## multi-dut markers + multi_dut_generic: tests should be run on generic runners, at least have two duts connected. + # log related log_cli = True log_cli_level = INFO diff --git a/tools/ci/idf_ci_utils.py b/tools/ci/idf_ci_utils.py index 916a27843e..460cf640a0 100644 --- a/tools/ci/idf_ci_utils.py +++ b/tools/ci/idf_ci_utils.py @@ -117,12 +117,13 @@ def is_in_directory(file_path: str, folder: str) -> bool: def to_list(s: Any) -> List[Any]: - if isinstance(s, set) or isinstance(s, tuple): + if isinstance(s, (set, tuple)): return list(s) - elif isinstance(s, list): + + if isinstance(s, list): return s - else: - return [s] + + return [s] @dataclass