From 6895ff11b60a15accd3868a471795991e59bed1e Mon Sep 17 00:00:00 2001 From: Fu Hanxi Date: Fri, 26 Jan 2024 14:09:33 +0100 Subject: [PATCH] ci: fix get_all_apps for multi targets --- tools/ci/idf_pytest/script.py | 41 +++++++++++-------- .../ci/idf_pytest/tests/test_get_all_apps.py | 15 ++++++- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/tools/ci/idf_pytest/script.py b/tools/ci/idf_pytest/script.py index dc7a56c4ee..6dabe65863 100644 --- a/tools/ci/idf_pytest/script.py +++ b/tools/ci/idf_pytest/script.py @@ -55,6 +55,8 @@ def get_pytest_cases( apps: t.Optional[t.List[App]] = None, ) -> t.List[PytestCase]: """ + Return the list of test cases + For single-dut test cases, `target` could be - [TARGET], e.g. `esp32`, to get the test cases for the given target - or `single_all`, to get all single-dut test cases @@ -143,24 +145,27 @@ def get_all_apps( :param ignore_app_dependencies_filepatterns: ignore app dependencies filepatterns :return: tuple of test-required apps and non-test-related apps """ - all_apps = find_apps( - paths, - target, - build_system=IdfCMakeApp, - recursive=True, - build_dir='build_@t_@w', - config_rules_str=config_rules_str or DEFAULT_CONFIG_RULES_STR, - build_log_filename=DEFAULT_BUILD_LOG_FILENAME, - size_json_filename='size.json', - check_warnings=True, - manifest_rootpath=IDF_PATH, - manifest_files=get_all_manifest_files(), - default_build_targets=SUPPORTED_TARGETS + (extra_default_build_targets or []), - modified_components=modified_components, - modified_files=modified_files, - ignore_app_dependencies_filepatterns=ignore_app_dependencies_filepatterns, - include_skipped_apps=True, - ) + # target could be comma separated list + all_apps: t.List[App] = [] + for _t in set(target.split(',')): + all_apps.extend(find_apps( + paths, + _t, + build_system=IdfCMakeApp, + recursive=True, + build_dir='build_@t_@w', + config_rules_str=config_rules_str or DEFAULT_CONFIG_RULES_STR, + build_log_filename=DEFAULT_BUILD_LOG_FILENAME, + size_json_filename='size.json', + check_warnings=True, + manifest_rootpath=IDF_PATH, + manifest_files=get_all_manifest_files(), + default_build_targets=SUPPORTED_TARGETS + (extra_default_build_targets or []), + modified_components=modified_components, + modified_files=modified_files, + ignore_app_dependencies_filepatterns=ignore_app_dependencies_filepatterns, + include_skipped_apps=True, + )) pytest_cases = get_pytest_cases( paths, diff --git a/tools/ci/idf_pytest/tests/test_get_all_apps.py b/tools/ci/idf_pytest/tests/test_get_all_apps.py index 6996c4d5bb..a6adab8010 100644 --- a/tools/ci/idf_pytest/tests/test_get_all_apps.py +++ b/tools/ci/idf_pytest/tests/test_get_all_apps.py @@ -75,11 +75,22 @@ def test_foo(dut): """ ) - test_related_apps, non_test_related_apps = get_all_apps([str(work_dirpath)], target='all') + test_related_apps, non_test_related_apps = get_all_apps([str(work_dirpath)], target='esp32s2,esp32s3') + assert len(test_related_apps) == 2 + assert len(non_test_related_apps) == 0 - assert len(test_related_apps) == 3 # 32, s2, s3 + test_related_apps, non_test_related_apps = get_all_apps([str(work_dirpath)], target='esp32,esp32s3,esp32') + assert len(test_related_apps) == 2 + assert len(non_test_related_apps) == 0 + + test_related_apps, non_test_related_apps = get_all_apps([str(work_dirpath)], target='all') + assert len(test_related_apps) == 3 assert len(non_test_related_apps) == len(SUPPORTED_TARGETS) - 3 + test_related_apps, non_test_related_apps = get_all_apps([str(work_dirpath)], target='foo,bar') + assert len(test_related_apps) == 0 + assert len(non_test_related_apps) == 0 + def test_get_all_apps_modified_pytest_script(work_dirpath: Path) -> None: create_project('foo', work_dirpath)