mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
Merge branch 'test/run_supported_cmake_tests_v5.4' into 'release/v5.4'
test(tools): Added minimal supported cmake versions build system tests (v5.4) See merge request espressif/esp-idf!51114
This commit is contained in:
@@ -238,6 +238,46 @@ pytest_build_system_macos:
|
||||
# CCACHE_DIR: "/cache/idf_ccache". On macOS, you cannot write to this folder due to insufficient permissions.
|
||||
CCACHE_DIR: "" # ccache will use "$HOME/Library/Caches/ccache".
|
||||
|
||||
.test_build_system_minimal_cmake_template:
|
||||
extends: .test_build_system_template
|
||||
variables:
|
||||
INSTALL_EXTRA_TOOLS: cmake@3.16.3
|
||||
script:
|
||||
- MINIMAL_SUPPORTED_CMAKE_VERSION=$(echo "${INSTALL_EXTRA_TOOLS}" | sed -n 's/.*cmake@\([0-9.]*\).*/\1/p')
|
||||
- export PATH=$(echo "$PATH" | sed -E "s|/tools/cmake/[0-9.]+|/tools/cmake/${MINIMAL_SUPPORTED_CMAKE_VERSION}|")
|
||||
- ACTUAL_CMAKE_VERSION=$(cmake --version | head -n1 | awk '{print $3}')
|
||||
- |
|
||||
if [ "${ACTUAL_CMAKE_VERSION}" != "${MINIMAL_SUPPORTED_CMAKE_VERSION}" ]; then
|
||||
echo "ERROR: Wrong minimal CMake version! Detected: ${ACTUAL_CMAKE_VERSION}, but should be: ${MINIMAL_SUPPORTED_CMAKE_VERSION}"
|
||||
exit 1
|
||||
fi
|
||||
- ${IDF_PATH}/tools/ci/test_configure_ci_environment.sh
|
||||
- cd ${IDF_PATH}/tools/test_build_system
|
||||
- python ${IDF_PATH}/tools/ci/get_known_failure_cases_file.py
|
||||
- pytest
|
||||
-k cmake
|
||||
--cleanup-idf-copy
|
||||
--work-dir ${CI_PROJECT_DIR}/test_build_system
|
||||
--junitxml ${CI_PROJECT_DIR}/XUNIT_RESULT.xml
|
||||
--ignore-result-files ${KNOWN_FAILURE_CASES_FILE_NAME}
|
||||
|
||||
pytest_build_system_minimal_cmake:
|
||||
extends: .test_build_system_minimal_cmake_template
|
||||
|
||||
pytest_build_system_macos_minimal_cmake:
|
||||
extends:
|
||||
- .test_build_system_minimal_cmake_template
|
||||
- .before_script:build:macos
|
||||
- .after_script:build:macos:upload-failed-job-logs:ccache-show-stats
|
||||
- .rules:build:macos
|
||||
tags:
|
||||
- macos_shell
|
||||
variables:
|
||||
PYENV_VERSION: "3.8"
|
||||
# CCACHE_DIR: "/cache/idf_ccache". On macOS, you cannot write to this folder due to insufficient permissions.
|
||||
CCACHE_DIR: "" # ccache will use "$HOME/Library/Caches/ccache".
|
||||
INSTALL_EXTRA_TOOLS: ninja cmake@3.16.3
|
||||
|
||||
build_docker:
|
||||
extends:
|
||||
- .before_script:minimal
|
||||
|
||||
+40
-1
@@ -18,9 +18,12 @@
|
||||
after_script: []
|
||||
|
||||
test_cli_installer_win:
|
||||
rules:
|
||||
- when: never
|
||||
extends:
|
||||
- .host_test_win_template
|
||||
- .rules:labels:windows_pytest_build_system
|
||||
allow_failure: true
|
||||
artifacts:
|
||||
when: on_failure
|
||||
paths:
|
||||
@@ -78,7 +81,8 @@ test_tools_win:
|
||||
- . .\export.ps1
|
||||
- python "${SUBMODULE_FETCH_TOOL}" -s "all"
|
||||
- cd ${IDF_PATH}\tools\test_build_system
|
||||
- pytest --parallel-count ${CI_NODE_TOTAL} --parallel-index ${CI_NODE_INDEX} --junitxml=${CI_PROJECT_DIR}\XUNIT_RESULT.xml
|
||||
- python ${IDF_PATH}\tools\ci\get_known_failure_cases_file.py
|
||||
- pytest --parallel-count ${CI_NODE_TOTAL} --parallel-index ${CI_NODE_INDEX} --junitxml=${CI_PROJECT_DIR}\XUNIT_RESULT.xml --ignore-result-files ${KNOWN_FAILURE_CASES_FILE_NAME}
|
||||
|
||||
pytest_build_system_win:
|
||||
extends:
|
||||
@@ -98,3 +102,38 @@ pytest_build_system_win:
|
||||
reports:
|
||||
junit: XUNIT_RESULT.xml
|
||||
when: always
|
||||
|
||||
pytest_build_system_win_minimal_cmake:
|
||||
extends:
|
||||
- .test_build_system_template_win
|
||||
- .rules:labels:windows_pytest_build_system
|
||||
needs:
|
||||
- job: manual_gate
|
||||
optional: true
|
||||
tags:
|
||||
- windows-build
|
||||
artifacts:
|
||||
paths:
|
||||
- XUNIT_RESULT.xml
|
||||
- test_build_system
|
||||
expire_in: 2 days
|
||||
reports:
|
||||
junit: XUNIT_RESULT.xml
|
||||
when: always
|
||||
variables:
|
||||
MINIMAL_CMAKE_VERSION: "3.16.3"
|
||||
script:
|
||||
- .\install.ps1 --enable-ci --enable-pytest
|
||||
- . .\export.ps1
|
||||
- python ${IDF_PATH}\tools\idf_tools.py install cmake@${MINIMAL_CMAKE_VERSION}
|
||||
- $Env:PATH = "$Env:USERPROFILE\.espressif\tools\cmake\${MINIMAL_CMAKE_VERSION}\bin;$Env:PATH"
|
||||
- |
|
||||
$actualVersion = (& cmake --version).Split()[2]
|
||||
if ($actualVersion -ne $Env:MINIMAL_CMAKE_VERSION) {
|
||||
Write-Error "ERROR: Wrong CMake version! Detected: $actualVersion, but expected: $Env:MINIMAL_CMAKE_VERSION"
|
||||
exit 1
|
||||
}
|
||||
- python "${SUBMODULE_FETCH_TOOL}" -s "all"
|
||||
- cd ${IDF_PATH}\tools\test_build_system
|
||||
- python ${IDF_PATH}\tools\ci\get_known_failure_cases_file.py
|
||||
- pytest -k cmake --junitxml=${CI_PROJECT_DIR}\XUNIT_RESULT.xml --ignore-result-files ${KNOWN_FAILURE_CASES_FILE_NAME}
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
# Windows CreateProcess enforces a short command line (~32k). IDF compile lines can be
|
||||
# huge (includes, reproducible-build prefix maps, etc.). Tell the Ninja generator to
|
||||
# pass compiler arguments via response files (CMake 3.15+).
|
||||
# Included from every chip toolchain-*.cmake so this applies on Windows Ninja builds.
|
||||
# Backport of CMAKE_NINJA_FORCE_RESPONSE_FILE from master (2e5d930e / !46653).
|
||||
if(CMAKE_HOST_WIN32 AND CMAKE_GENERATOR MATCHES "Ninja"
|
||||
AND NOT DEFINED CACHE{CMAKE_NINJA_FORCE_RESPONSE_FILE})
|
||||
set(CMAKE_NINJA_FORCE_RESPONSE_FILE ON CACHE BOOL
|
||||
"Use Ninja response files on Windows hosts (avoid CreateProcess command-line limit).")
|
||||
endif()
|
||||
|
||||
# set_default
|
||||
#
|
||||
# Define a variable to a default value if otherwise unset.
|
||||
@@ -157,7 +168,7 @@ function(target_linker_script target deptype scriptfiles)
|
||||
# https://cmake.org/cmake/help/latest/command/target_link_options.html#option-de-duplication
|
||||
target_link_options("${target}" "${deptype}" "SHELL:-T ${scriptname}")
|
||||
|
||||
# Note: In ESP-IDF, most targets are libraries and libary LINK_DEPENDS don't propagate to
|
||||
# Note: In ESP-IDF, most targets are libraries and library LINK_DEPENDS don't propagate to
|
||||
# executable(s) the library is linked to. Since CMake 3.13, INTERFACE_LINK_DEPENDS is
|
||||
# available to solve this. However, when GNU Make generator is used, this property also
|
||||
# propagates INTERFACE_LINK_DEPENDS dependencies to other static libraries.
|
||||
@@ -225,7 +236,7 @@ endfunction()
|
||||
# fail_target
|
||||
#
|
||||
# Creates a phony target which fails when invoked. This is used when the necessary conditions
|
||||
# for a target are not met, such as configuration. Rather than ommitting the target altogether,
|
||||
# for a target are not met, such as configuration. Rather than omitting the target altogether,
|
||||
# we fail execution with a helpful message.
|
||||
function(fail_target target_name message_line0)
|
||||
idf_build_get_property(idf_path IDF_PATH)
|
||||
@@ -354,7 +365,7 @@ endfunction()
|
||||
|
||||
# add_deprecated_target_alias
|
||||
#
|
||||
# Creates an alias for exising target and shows deprectation warning
|
||||
# Creates an alias for existing target and shows deprecation warning
|
||||
function(add_deprecated_target_alias old_target new_target)
|
||||
add_custom_target(${old_target}
|
||||
# `COMMAND` is important to print the `COMMENT` message at the end of the target action.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[pytest]
|
||||
addopts = -s -p no:pytest_embedded -p no:idf-ci
|
||||
addopts = -s -p no:idf-ci
|
||||
|
||||
# log related
|
||||
log_cli = True
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
import logging
|
||||
import os
|
||||
@@ -8,7 +8,12 @@ import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
import pexpect
|
||||
if sys.platform == 'win32':
|
||||
import pytest
|
||||
|
||||
pytest.skip('pexpect.spawn is not available on Windows', allow_module_level=True)
|
||||
else:
|
||||
import pexpect
|
||||
|
||||
|
||||
class IdfPyQemuTest(unittest.TestCase):
|
||||
@@ -17,11 +22,9 @@ class IdfPyQemuTest(unittest.TestCase):
|
||||
idf_path = os.environ['IDF_PATH']
|
||||
hello_world_dir = os.path.join(idf_path, 'examples', 'get-started', 'hello_world')
|
||||
idf_py = os.path.join(idf_path, 'tools', 'idf.py')
|
||||
args = [idf_py, '-C', hello_world_dir, '-B', build_dir,
|
||||
'qemu', '--qemu-extra-args', '-no-reboot', 'monitor']
|
||||
args = [idf_py, '-C', hello_world_dir, '-B', build_dir, 'qemu', '--qemu-extra-args', '-no-reboot', 'monitor']
|
||||
logfile_name = os.path.join(os.environ['IDF_PATH'], 'qemu_log.out')
|
||||
with open(logfile_name, 'w+b') as logfile, \
|
||||
pexpect.spawn(sys.executable, args=args, logfile=logfile) as child:
|
||||
with open(logfile_name, 'w+b') as logfile, pexpect.spawn(sys.executable, args=args, logfile=logfile) as child:
|
||||
child.expect_exact('Executing action: all')
|
||||
logging.info('Waiting for the build to finish...')
|
||||
child.expect_exact('Executing action: qemu', timeout=120)
|
||||
@@ -33,8 +36,7 @@ class IdfPyQemuTest(unittest.TestCase):
|
||||
child.expect_exact('Restarting now.')
|
||||
|
||||
args = [idf_py, '-C', hello_world_dir, '-B', build_dir, 'qemu', 'efuse-summary', '--format=summary']
|
||||
with open(logfile_name, 'w+b') as logfile, \
|
||||
pexpect.spawn(sys.executable, args=args, logfile=logfile) as child:
|
||||
with open(logfile_name, 'w+b') as logfile, pexpect.spawn(sys.executable, args=args, logfile=logfile) as child:
|
||||
child.expect_exact('Executing action: efuse-summary')
|
||||
child.expect_exact('WR_DIS (BLOCK0)')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user