Merge branch 'feat/split_pytest_requirements' into 'master'

feat: split pytest requirements to base and test-specific

Closes IDFCI-2307 and IDFCI-2376

See merge request espressif/esp-idf!33429
This commit is contained in:
Fu Hanxi
2024-09-13 02:44:44 +08:00
10 changed files with 56 additions and 31 deletions

View File

@@ -147,16 +147,16 @@ variables:
# install latest python packages # install latest python packages
# target test jobs # target test jobs
if [[ "${CI_JOB_STAGE}" == "target_test" ]]; then if [[ "${CI_JOB_STAGE}" == "target_test" ]]; then
run_cmd bash install.sh --enable-ci --enable-pytest run_cmd bash install.sh --enable-ci --enable-pytest --enable-test-specific
elif [[ "${CI_JOB_STAGE}" == "build_doc" ]]; then elif [[ "${CI_JOB_STAGE}" == "build_doc" ]]; then
run_cmd bash install.sh --enable-ci --enable-docs run_cmd bash install.sh --enable-ci --enable-docs
elif [[ "${CI_JOB_STAGE}" == "build" ]]; then elif [[ "${CI_JOB_STAGE}" == "build" ]]; then
run_cmd bash install.sh --enable-ci --enable-pytest run_cmd bash install.sh --enable-ci
else else
if ! echo "${CI_JOB_NAME}" | egrep ".*pytest.*"; then if ! echo "${CI_JOB_NAME}" | egrep ".*pytest.*"; then
run_cmd bash install.sh --enable-ci run_cmd bash install.sh --enable-ci
else else
run_cmd bash install.sh --enable-ci --enable-pytest run_cmd bash install.sh --enable-ci --enable-pytest --enable-test-specific
fi fi
fi fi
@@ -223,6 +223,8 @@ variables:
- *common-before_scripts - *common-before_scripts
# On macOS, these tools need to be installed # On macOS, these tools need to be installed
- export IDF_TOOLS_PATH="${HOME}/.espressif_runner_${CI_RUNNER_ID}_${CI_CONCURRENT_ID}" - export IDF_TOOLS_PATH="${HOME}/.espressif_runner_${CI_RUNNER_ID}_${CI_CONCURRENT_ID}"
# remove idf-env.json, since it may contains enabled "features"
- rm -f $IDF_TOOLS_PATH/idf-env.json
- $IDF_PATH/tools/idf_tools.py --non-interactive install cmake ninja - $IDF_PATH/tools/idf_tools.py --non-interactive install cmake ninja
# This adds tools (compilers) and the version-specific Python environment to PATH # This adds tools (compilers) and the version-specific Python environment to PATH
- *setup_tools_and_idf_python_venv - *setup_tools_and_idf_python_venv

View File

@@ -10,10 +10,11 @@ choice ESPTOOLPY_FLASHFREQ
- Flash 120 MHz SDR mode is stable. - Flash 120 MHz SDR mode is stable.
- Flash 120 MHz DDR mode is an experimental feature, it works when - Flash 120 MHz DDR mode is an experimental feature, it works when
the temperature is stable. the temperature is stable.
Risks:
If your chip powers on at a certain temperature, then after the temperature Risks:
increases or decreases by approximately 20 Celsius degrees (depending on the If your chip powers on at a certain temperature, then after the temperature
chip), the program will crash randomly. increases or decreases by approximately 20 Celsius degrees (depending on the
chip), the program will crash randomly.
config ESPTOOLPY_FLASHFREQ_80M config ESPTOOLPY_FLASHFREQ_80M
bool "80 MHz" bool "80 MHz"
config ESPTOOLPY_FLASHFREQ_40M config ESPTOOLPY_FLASHFREQ_40M

View File

@@ -33,12 +33,18 @@ On the host side, ESP-IDF employs the pytest framework (alongside certain pytest
Installation Installation
============ ============
All dependencies could be installed by running the ESP-IDF install script with the ``--enable-pytest`` argument: All basic dependencies could be installed by running the ESP-IDF install script with the ``--enable-pytest`` argument:
.. code-block:: bash .. code-block:: bash
$ install.sh --enable-pytest $ install.sh --enable-pytest
Additional test script specific dependencies could be installed separately by running the ESP-IDF install script with the ``--enable-pytest-specific`` argument:
.. code-block:: bash
$ install.sh --enable-test-specific
Several mechanisms have been implemented to ensure the successful execution of the installation processes. If you encounter any issues during installation, please submit an issue report to our `GitHub issue tracker <https://github.com/espressif/esp-idf/issues>`__. Several mechanisms have been implemented to ensure the successful execution of the installation processes. If you encounter any issues during installation, please submit an issue report to our `GitHub issue tracker <https://github.com/espressif/esp-idf/issues>`__.
Common Concepts Common Concepts

View File

@@ -33,12 +33,18 @@ ESP-IDF 在主机端使用 pytest 框架(以及一些 pytest 插件)来自
安装 安装
============ ============
所有依赖项可以通过执行 ESP-IDF 安装脚本 ``--enable-pytest`` 进行安装: 基础依赖项可以通过执行 ESP-IDF 安装脚本 ``--enable-pytest`` 进行安装:
.. code-block:: bash .. code-block:: bash
$ install.sh --enable-pytest $ install.sh --enable-pytest
额外的测试脚本依赖项可以通过执行 ESP-IDF 安装脚本 ``--enable-pytest-specific`` 进行安装:
.. code-block:: bash
$ install.sh --enable-test-specific
上面的脚本已预先实现了一些机制,以确保所有安装过程顺利进行。如果您在安装过程中遇到任何问题,请在 `GitHub Issue 版块 <https://github.com/espressif/esp-idf/issues>`__ 上提交问题说明。 上面的脚本已预先实现了一些机制,以确保所有安装过程顺利进行。如果您在安装过程中遇到任何问题,请在 `GitHub Issue 版块 <https://github.com/espressif/esp-idf/issues>`__ 上提交问题说明。
常见概念 常见概念

View File

@@ -1,7 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD # SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import json import json
import os import os
import re import re
@@ -13,7 +12,7 @@ from idf_ci_utils import IDF_PATH
JSON_PATH = os.path.join(IDF_PATH, 'tools', 'requirements.json') JSON_PATH = os.path.join(IDF_PATH, 'tools', 'requirements.json')
SCHEMA_PATH = os.path.join(IDF_PATH, 'tools', 'requirements_schema.json') SCHEMA_PATH = os.path.join(IDF_PATH, 'tools', 'requirements_schema.json')
REQ_DIR = os.path.join(IDF_PATH, 'tools', 'requirements') REQ_DIR = os.path.join(IDF_PATH, 'tools', 'requirements')
RE_FEATURE = re.compile(r'requirements\.(\w+)\.txt') RE_FEATURE = re.compile(r'requirements\.([\w-]+)\.txt')
def action_validate(req_obj: Any) -> None: # "Any" because we are checking this in this script def action_validate(req_obj: Any) -> None: # "Any" because we are checking this in this script

View File

@@ -19,6 +19,12 @@
"optional": true, "optional": true,
"requirement_path": "tools/requirements/requirements.pytest.txt" "requirement_path": "tools/requirements/requirements.pytest.txt"
}, },
{
"name": "test-specific",
"description": "Packages for specific test scripts",
"optional": true,
"requirement_path": "tools/requirements/requirements.test-specific.txt"
},
{ {
"name": "ci", "name": "ci",
"description": "Packages for ESP-IDF CI scripts", "description": "Packages for ESP-IDF CI scripts",

View File

@@ -15,21 +15,3 @@ minio
# build # build
python-gitlab python-gitlab
idf-build-apps idf-build-apps
# dependencies in pytest test scripts
scapy
websocket-client
netifaces
rangehttpserver
dbus-python; sys_platform == 'linux'
protobuf
bleak
paho-mqtt
paramiko
netmiko
# iperf_test_util
pyecharts
# for twai tests, communicate with socket can device (e.g. Canable)
python-can

View File

@@ -0,0 +1,20 @@
# Python package requirements for specific test scripts in ESP-IDF.
# This feature can be enabled by running "install.{sh,bat,ps1,fish} --enable-test-specific"
# dependencies in pytest test scripts
scapy
websocket-client
netifaces
rangehttpserver
dbus-python; sys_platform == 'linux'
protobuf
bleak
paho-mqtt
paramiko
netmiko
# iperf_test_util
pyecharts
# for twai tests, communicate with socket can device (e.g. Canable)
python-can

View File

@@ -45,6 +45,9 @@ tools/test_apps/system/gdb_loadable_elf:
- if: IDF_TARGET == "esp32c6" or IDF_TARGET == "esp32h2" - if: IDF_TARGET == "esp32c6" or IDF_TARGET == "esp32h2"
temporary: true temporary: true
reason: target esp32c6, esp32h2 is not supported yet reason: target esp32c6, esp32h2 is not supported yet
- if: IDF_TARGET == "esp32p4"
temporary: true
reason: build failed. IDF-11133
tools/test_apps/system/longjmp_test: tools/test_apps/system/longjmp_test:
enable: enable:

View File

@@ -1,5 +1,5 @@
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C61 | ESP32-P4 | ESP32-S2 | ESP32-S3 | | Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
| ----------------- | ----- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | | ----------------- | ----- | -------- | -------- | -------- | --------- | -------- | -------- |
# Loadable ELF test application # Loadable ELF test application