Merge branch 'fix/test_project_components_overrides_extra_components' into 'master'

fix: test_managed_components_overrides_idf_components

Closes IDFCI-10153

See merge request espressif/esp-idf!47182
This commit is contained in:
Sergei Silnov
2026-04-20 14:44:33 +02:00
3 changed files with 26 additions and 2 deletions
+18
View File
@@ -349,6 +349,24 @@ def pytest_report_header(config: Config) -> str:
return 'Testing ESP-IDF CMake-based build system v1' return 'Testing ESP-IDF CMake-based build system v1'
@pytest.fixture
def clean_root_managed_components(tmp_path: Path) -> typing.Generator[None, None, None]:
"""
Temporarily clear root managed components and restore them after the test.
"""
from idf_component_tools.config import root_managed_components_dir
root_managed = str(root_managed_components_dir())
backup = tmp_path / 'root_managed_backup'
if os.path.isdir(root_managed):
shutil.copytree(root_managed, backup)
shutil.rmtree(root_managed)
yield
shutil.rmtree(root_managed, ignore_errors=True)
if backup.is_dir():
shutil.copytree(str(backup), root_managed)
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
def revert_later(request: FixtureRequest) -> typing.Generator[None, None, None]: def revert_later(request: FixtureRequest) -> typing.Generator[None, None, None]:
origin_content_d: dict[str, str] = {} origin_content_d: dict[str, str] = {}
@@ -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: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import json import json
import os.path import os.path
@@ -208,6 +208,10 @@ class TestOptionalDependencyWithKconfig:
@pytest.mark.buildv2_skip('Root components (idf_extra_components.yml) not yet supported in cmakev2') @pytest.mark.buildv2_skip('Root components (idf_extra_components.yml) not yet supported in cmakev2')
@pytest.mark.revert_later(['tools/idf_extra_components.yml']) @pytest.mark.revert_later(['tools/idf_extra_components.yml'])
class TestIdfRootDependency: class TestIdfRootDependency:
@pytest.fixture(autouse=True)
def _clean_root_managed(self, clean_root_managed_components: None) -> None:
pass
def test_basic_build(self, idf_py: IdfPyFunc, test_app_copy: Path) -> None: def test_basic_build(self, idf_py: IdfPyFunc, test_app_copy: Path) -> None:
with open(os.path.join(EXT_IDF_PATH, 'tools', 'idf_extra_components.yml'), 'w') as fw: with open(os.path.join(EXT_IDF_PATH, 'tools', 'idf_extra_components.yml'), 'w') as fw:
fw.write( fw.write(
+3 -1
View File
@@ -246,7 +246,9 @@ def test_extra_components_overrides_managed_components(idf_py: IdfPyFunc, test_a
@pytest.mark.with_idf_components(['cmp']) @pytest.mark.with_idf_components(['cmp'])
def test_managed_components_overrides_idf_components(idf_py: IdfPyFunc, test_app_copy: Path) -> None: def test_managed_components_overrides_idf_components(
idf_py: IdfPyFunc, test_app_copy: Path, clean_root_managed_components: None
) -> None:
logging.info('Managed components override components defined in IDF_PATH/components') logging.info('Managed components override components defined in IDF_PATH/components')
# created idf component 'cmp' in marker # created idf component 'cmp' in marker
idf_path = Path(os.environ['IDF_PATH']) idf_path = Path(os.environ['IDF_PATH'])