mirror of
https://github.com/espressif/esp-idf.git
synced 2026-04-27 11:03:11 +00:00
fix(test_build_system): fix ruff formatting for test_non_default_target.py
Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
This commit is contained in:
@@ -1,15 +1,13 @@
|
||||
# SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
import logging
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
from typing import List
|
||||
from typing import Optional
|
||||
|
||||
import pytest
|
||||
from test_build_system_helpers import EnvDict
|
||||
from test_build_system_helpers import file_contains
|
||||
from test_build_system_helpers import IdfPyFunc
|
||||
from test_build_system_helpers import file_contains
|
||||
from test_build_system_helpers import run_cmake
|
||||
|
||||
ESP32C3_TARGET = 'esp32c3'
|
||||
@@ -30,12 +28,12 @@ def test_target_from_environment_cmake(default_idf_env: EnvDict) -> None:
|
||||
env = default_idf_env
|
||||
env.update({'IDF_TARGET': ESP32S2_TARGET})
|
||||
run_cmake('-G', 'Ninja', '..', env=env)
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
assert file_contains('build/CMakeCache.txt', 'IDF_TARGET:STRING={}'.format(ESP32S2_TARGET))
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
assert file_contains('build/CMakeCache.txt', f'IDF_TARGET:STRING={ESP32S2_TARGET}')
|
||||
|
||||
|
||||
def test_target_from_environment_idf_py(idf_py: IdfPyFunc, default_idf_env: EnvDict, test_app_copy: Path) -> None:
|
||||
def reconfigure_and_check_return_values(errmsg: str, opts: Optional[List[str]] = None) -> None:
|
||||
def reconfigure_and_check_return_values(errmsg: str, opts: list[str] | None = None) -> None:
|
||||
opts = opts or []
|
||||
ret = idf_py(*opts, 'reconfigure', check=False)
|
||||
assert ret.returncode == 2
|
||||
@@ -47,36 +45,49 @@ def test_target_from_environment_idf_py(idf_py: IdfPyFunc, default_idf_env: EnvD
|
||||
cfg_path = (test_app_copy / 'sdkconfig').as_posix()
|
||||
|
||||
logging.info("idf.py fails if IDF_TARGET settings don't match the environment")
|
||||
reconfigure_and_check_return_values("Project sdkconfig '{}' was generated for target '{}', but environment "
|
||||
"variable IDF_TARGET is set to '{}'.".format(cfg_path, ESP32S2_TARGET,
|
||||
ESP32_TARGET))
|
||||
reconfigure_and_check_return_values(
|
||||
f"Project sdkconfig '{cfg_path}' was generated for target '{ESP32S2_TARGET}', but environment "
|
||||
f"variable IDF_TARGET is set to '{ESP32_TARGET}'."
|
||||
)
|
||||
|
||||
logging.info("idf.py fails if IDF_TARGET settings in CMakeCache.txt don't match the environment")
|
||||
(test_app_copy / 'sdkconfig').write_text('CONFIG_IDF_TARGET="{}"'.format(ESP32_TARGET))
|
||||
reconfigure_and_check_return_values("Target settings are not consistent: '{}' in the environment, "
|
||||
"'{}' in CMakeCache.txt.".format(ESP32_TARGET, ESP32S2_TARGET))
|
||||
(test_app_copy / 'sdkconfig').write_text(f'CONFIG_IDF_TARGET="{ESP32_TARGET}"')
|
||||
reconfigure_and_check_return_values(
|
||||
f"Target settings are not consistent: '{ESP32_TARGET}' in the environment, "
|
||||
f"'{ESP32S2_TARGET}' in CMakeCache.txt."
|
||||
)
|
||||
|
||||
logging.info("idf.py fails if IDF_TARGET settings in CMakeCache.txt don't match the sdkconfig")
|
||||
default_idf_env.pop('IDF_TARGET')
|
||||
reconfigure_and_check_return_values("Project sdkconfig '{}' was generated for target '{}', but CMakeCache.txt "
|
||||
"contains '{}'.".format(cfg_path, ESP32_TARGET, ESP32S2_TARGET))
|
||||
reconfigure_and_check_return_values(
|
||||
f"Project sdkconfig '{cfg_path}' was generated for target '{ESP32_TARGET}', but CMakeCache.txt "
|
||||
f"contains '{ESP32S2_TARGET}'."
|
||||
)
|
||||
|
||||
logging.info('idf.py fails if IDF_TARGET is set differently in environment and with -D option')
|
||||
(test_app_copy / 'sdkconfig').write_text('CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
(test_app_copy / 'sdkconfig').write_text(f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
default_idf_env.update({'IDF_TARGET': ESP32S2_TARGET})
|
||||
reconfigure_and_check_return_values("Target '{}' specified on command line is not consistent with target '{}' "
|
||||
'in the environment.'.format(ESP32_TARGET, ESP32S2_TARGET),
|
||||
['-D', 'IDF_TARGET={}'.format(ESP32_TARGET)])
|
||||
reconfigure_and_check_return_values(
|
||||
(
|
||||
f"Target '{ESP32_TARGET}' specified on command line is not consistent with target "
|
||||
f"'{ESP32S2_TARGET}' in the environment."
|
||||
),
|
||||
['-D', f'IDF_TARGET={ESP32_TARGET}'],
|
||||
)
|
||||
|
||||
logging.info('idf.py fails if IDF_TARGET is set differently in CMakeCache.txt and with -D option')
|
||||
default_idf_env.pop('IDF_TARGET')
|
||||
reconfigure_and_check_return_values("Target '{}' specified on command line is not consistent with "
|
||||
"target '{}' in CMakeCache.txt.".format(ESP32_TARGET, ESP32S2_TARGET),
|
||||
['-D', 'IDF_TARGET={}'.format(ESP32_TARGET)])
|
||||
reconfigure_and_check_return_values(
|
||||
(
|
||||
f"Target '{ESP32_TARGET}' specified on command line is not consistent with target "
|
||||
f"'{ESP32S2_TARGET}' in CMakeCache.txt."
|
||||
),
|
||||
['-D', f'IDF_TARGET={ESP32_TARGET}'],
|
||||
)
|
||||
|
||||
|
||||
def test_target_consistency_cmake(default_idf_env: EnvDict, test_app_copy: Path) -> None:
|
||||
def reconfigure_and_check_return_values(errmsg: str, opts: Optional[List[str]] = None) -> None:
|
||||
def reconfigure_and_check_return_values(errmsg: str, opts: list[str] | None = None) -> None:
|
||||
opts = opts or []
|
||||
ret = run_cmake(*opts, '-G', 'Ninja', '..', env=default_idf_env, check=False)
|
||||
assert ret.returncode == 1
|
||||
@@ -88,86 +99,90 @@ def test_target_consistency_cmake(default_idf_env: EnvDict, test_app_copy: Path)
|
||||
|
||||
logging.info("cmake fails if IDF_TARGET settings don't match the environment")
|
||||
default_idf_env.update({'IDF_TARGET': ESP32S2_TARGET})
|
||||
reconfigure_and_check_return_values(f"IDF_TARGET '{ESP32_TARGET}' in CMake cache does not "
|
||||
f"match currently selected IDF_TARGET '{ESP32S2_TARGET}'")
|
||||
reconfigure_and_check_return_values(
|
||||
f"IDF_TARGET '{ESP32_TARGET}' in CMake cache does not match currently selected IDF_TARGET '{ESP32S2_TARGET}'"
|
||||
)
|
||||
|
||||
logging.info("cmake fails if IDF_TARGET settings don't match the sdkconfig")
|
||||
default_idf_env.pop('IDF_TARGET')
|
||||
(test_app_copy / 'sdkconfig').write_text(f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
reconfigure_and_check_return_values(f"Target '{ESP32S2_TARGET}' in sdkconfig '{cfg_path}' does not "
|
||||
f"match currently selected IDF_TARGET '{ESP32_TARGET}'.")
|
||||
reconfigure_and_check_return_values(
|
||||
f"Target '{ESP32S2_TARGET}' in sdkconfig '{cfg_path}' does not "
|
||||
f"match currently selected IDF_TARGET '{ESP32_TARGET}'."
|
||||
)
|
||||
|
||||
logging.info("cmake fails if IDF_TOOLCHAIN settings don't match the environment")
|
||||
(test_app_copy / 'sdkconfig').write_text(f'CONFIG_IDF_TARGET="{ESP32_TARGET}"')
|
||||
default_idf_env.update({'IDF_TOOLCHAIN': 'clang'})
|
||||
reconfigure_and_check_return_values("IDF_TOOLCHAIN 'gcc' in CMake cache does not match "
|
||||
"currently selected IDF_TOOLCHAIN 'clang'")
|
||||
reconfigure_and_check_return_values(
|
||||
"IDF_TOOLCHAIN 'gcc' in CMake cache does not match currently selected IDF_TOOLCHAIN 'clang'"
|
||||
)
|
||||
|
||||
logging.info("cmake fails if IDF_TARGET settings don't match CMAKE_TOOLCHAIN_FILE")
|
||||
default_idf_env.pop('IDF_TOOLCHAIN')
|
||||
reconfigure_and_check_return_values("CMAKE_TOOLCHAIN_FILE 'toolchain-esp32' does not "
|
||||
f"match currently selected IDF_TARGET '{ESP32S2_TARGET}'",
|
||||
['-D', f'IDF_TARGET={ESP32S2_TARGET}',
|
||||
'-D', 'SDKCONFIG=custom_sdkconfig'])
|
||||
reconfigure_and_check_return_values(
|
||||
f"CMAKE_TOOLCHAIN_FILE 'toolchain-esp32' does not match currently selected IDF_TARGET '{ESP32S2_TARGET}'",
|
||||
['-D', f'IDF_TARGET={ESP32S2_TARGET}', '-D', 'SDKCONFIG=custom_sdkconfig'],
|
||||
)
|
||||
|
||||
|
||||
def test_target_precedence(idf_py: IdfPyFunc, default_idf_env: EnvDict, test_app_copy: Path) -> None:
|
||||
logging.info('IDF_TARGET takes precedence over the value of CONFIG_IDF_TARGET in sdkconfig.defaults')
|
||||
(test_app_copy / 'sdkconfig.defaults').write_text('CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
(test_app_copy / 'sdkconfig.defaults').write_text(f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
default_idf_env.update({'IDF_TARGET': ESP32_TARGET})
|
||||
idf_py('reconfigure')
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32_TARGET))
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET_{}=y'.format(ESP32_TARGET.upper()))
|
||||
assert file_contains('build/CMakeCache.txt', 'IDF_TARGET:STRING={}'.format(ESP32_TARGET))
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32_TARGET}"')
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET_{ESP32_TARGET.upper()}=y')
|
||||
assert file_contains('build/CMakeCache.txt', f'IDF_TARGET:STRING={ESP32_TARGET}')
|
||||
|
||||
|
||||
def test_target_using_D_parameter(idf_py: IdfPyFunc, test_app_copy: Path) -> None:
|
||||
logging.info('Can set target using idf.py -D')
|
||||
idf_py('-DIDF_TARGET={}'.format(ESP32S2_TARGET), 'reconfigure')
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
assert file_contains('build/CMakeCache.txt', 'IDF_TARGET:STRING={}'.format(ESP32S2_TARGET))
|
||||
idf_py(f'-DIDF_TARGET={ESP32S2_TARGET}', 'reconfigure')
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
assert file_contains('build/CMakeCache.txt', f'IDF_TARGET:STRING={ESP32S2_TARGET}')
|
||||
|
||||
logging.info('Can set target using -D as subcommand parameter for idf.py')
|
||||
clean_app(test_app_copy)
|
||||
idf_py('reconfigure', '-DIDF_TARGET={}'.format(ESP32S2_TARGET))
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
assert file_contains('build/CMakeCache.txt', 'IDF_TARGET:STRING={}'.format(ESP32S2_TARGET))
|
||||
idf_py('reconfigure', f'-DIDF_TARGET={ESP32S2_TARGET}')
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
assert file_contains('build/CMakeCache.txt', f'IDF_TARGET:STRING={ESP32S2_TARGET}')
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('test_app_copy')
|
||||
def test_target_using_settarget_parameter_alternative_name(idf_py: IdfPyFunc) -> None:
|
||||
logging.info('idf.py understands alternative target names')
|
||||
idf_py('set-target', ESP32S2_TARGET.upper())
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
assert file_contains('build/CMakeCache.txt', 'IDF_TARGET:STRING={}'.format(ESP32S2_TARGET))
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
assert file_contains('build/CMakeCache.txt', f'IDF_TARGET:STRING={ESP32S2_TARGET}')
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('test_app_copy')
|
||||
def test_target_using_settarget_parameter(idf_py: IdfPyFunc, default_idf_env: EnvDict) -> None:
|
||||
logging.info('Can set target using idf.py set-target')
|
||||
idf_py('set-target', ESP32S2_TARGET)
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
assert file_contains('build/CMakeCache.txt', 'IDF_TARGET:STRING={}'.format(ESP32S2_TARGET))
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
assert file_contains('build/CMakeCache.txt', f'IDF_TARGET:STRING={ESP32S2_TARGET}')
|
||||
|
||||
logging.info('Can guess target from sdkconfig, if CMakeCache does not exist')
|
||||
idf_py('fullclean')
|
||||
idf_py('reconfigure')
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
assert file_contains('build/CMakeCache.txt', 'IDF_TARGET:STRING={}'.format(ESP32S2_TARGET))
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
assert file_contains('build/CMakeCache.txt', f'IDF_TARGET:STRING={ESP32S2_TARGET}')
|
||||
|
||||
logging.info('Can set target if IDF_TARGET env is set and old sdkconfig exists')
|
||||
default_idf_env.update({'IDF_TARGET': ESP32_TARGET})
|
||||
idf_py('set-target', ESP32_TARGET)
|
||||
default_idf_env.pop('IDF_TARGET')
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32_TARGET))
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32_TARGET}"')
|
||||
|
||||
|
||||
def test_target_using_sdkconfig(idf_py: IdfPyFunc, test_app_copy: Path) -> None:
|
||||
logging.info('Can set the default target using sdkconfig.defaults')
|
||||
(test_app_copy / 'sdkconfig.defaults').write_text('CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
(test_app_copy / 'sdkconfig.defaults').write_text(f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
idf_py('reconfigure')
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET_{}=y'.format(ESP32S2_TARGET.upper()))
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET_{ESP32S2_TARGET.upper()}=y')
|
||||
|
||||
|
||||
def test_target_guessing(idf_py: IdfPyFunc, test_app_copy: Path, default_idf_env: EnvDict) -> None:
|
||||
@@ -178,32 +193,32 @@ def test_target_guessing(idf_py: IdfPyFunc, test_app_copy: Path, default_idf_env
|
||||
"""
|
||||
|
||||
logging.info('Can guess target from sdkconfig.defaults')
|
||||
(test_app_copy / 'sdkconfig.defaults').write_text('CONFIG_IDF_TARGET="{}"'.format(ESP32_TARGET))
|
||||
(test_app_copy / 'sdkconfig.defaults').write_text(f'CONFIG_IDF_TARGET="{ESP32_TARGET}"')
|
||||
idf_py('reconfigure')
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32_TARGET))
|
||||
assert file_contains('build/CMakeCache.txt', 'IDF_TARGET:STRING={}'.format(ESP32_TARGET))
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32_TARGET}"')
|
||||
assert file_contains('build/CMakeCache.txt', f'IDF_TARGET:STRING={ESP32_TARGET}')
|
||||
|
||||
logging.info('Can guess target from SDKCONFIG_DEFAULTS environment variable')
|
||||
(test_app_copy / 'sdkconfig1').write_text('NOTHING HERE')
|
||||
(test_app_copy / 'sdkconfig2').write_text('CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
(test_app_copy / 'sdkconfig2').write_text(f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
clean_app(test_app_copy)
|
||||
default_idf_env.update({'SDKCONFIG_DEFAULTS': 'sdkconfig1;sdkconfig2'})
|
||||
idf_py('reconfigure')
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
assert file_contains('build/CMakeCache.txt', 'IDF_TARGET:STRING={}'.format(ESP32S2_TARGET))
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
assert file_contains('build/CMakeCache.txt', f'IDF_TARGET:STRING={ESP32S2_TARGET}')
|
||||
default_idf_env.pop('SDKCONFIG_DEFAULTS')
|
||||
|
||||
logging.info('Can guess target from SDKCONFIG_DEFAULTS using -D')
|
||||
(test_app_copy / 'sdkconfig3').write_text('CONFIG_IDF_TARGET="{}"'.format(ESP32S2_TARGET))
|
||||
(test_app_copy / 'sdkconfig4').write_text('CONFIG_IDF_TARGET="{}"'.format(ESP32S3_TARGET))
|
||||
(test_app_copy / 'sdkconfig3').write_text(f'CONFIG_IDF_TARGET="{ESP32S2_TARGET}"')
|
||||
(test_app_copy / 'sdkconfig4').write_text(f'CONFIG_IDF_TARGET="{ESP32S3_TARGET}"')
|
||||
clean_app(test_app_copy)
|
||||
idf_py('-D', 'SDKCONFIG_DEFAULTS=sdkconfig4;sdkconfig3', 'reconfigure')
|
||||
assert file_contains('sdkconfig', 'CONFIG_IDF_TARGET="{}"'.format(ESP32S3_TARGET))
|
||||
assert file_contains('build/CMakeCache.txt', 'IDF_TARGET:STRING={}'.format(ESP32S3_TARGET))
|
||||
assert file_contains('sdkconfig', f'CONFIG_IDF_TARGET="{ESP32S3_TARGET}"')
|
||||
assert file_contains('build/CMakeCache.txt', f'IDF_TARGET:STRING={ESP32S3_TARGET}')
|
||||
|
||||
logging.info('Can guess target from custom sdkconfig')
|
||||
(test_app_copy / 'sdkconfig5').write_text('CONFIG_IDF_TARGET="{}"'.format(ESP32C3_TARGET))
|
||||
(test_app_copy / 'sdkconfig5').write_text(f'CONFIG_IDF_TARGET="{ESP32C3_TARGET}"')
|
||||
clean_app(test_app_copy)
|
||||
idf_py('-D', 'SDKCONFIG=sdkconfig5', '-D', 'SDKCONFIG_DEFAULTS=sdkconfig4;sdkconfig3', 'reconfigure')
|
||||
assert file_contains('sdkconfig5', 'CONFIG_IDF_TARGET="{}"'.format(ESP32C3_TARGET))
|
||||
assert file_contains('build/CMakeCache.txt', 'IDF_TARGET:STRING={}'.format(ESP32C3_TARGET))
|
||||
assert file_contains('sdkconfig5', f'CONFIG_IDF_TARGET="{ESP32C3_TARGET}"')
|
||||
assert file_contains('build/CMakeCache.txt', f'IDF_TARGET:STRING={ESP32C3_TARGET}')
|
||||
|
||||
Reference in New Issue
Block a user