From 8f58729f8b6f83782b8f7eebb48987f0110b42aa Mon Sep 17 00:00:00 2001 From: Michael D Starch Date: Tue, 7 Nov 2023 18:32:49 -0800 Subject: [PATCH 1/4] Output sources.txt representing sources of each module - WIP --- cmake/target/build.cmake | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/cmake/target/build.cmake b/cmake/target/build.cmake index ecd5fa5a2f..8a00268bdc 100644 --- a/cmake/target/build.cmake +++ b/cmake/target/build.cmake @@ -39,13 +39,8 @@ endfunction(build_add_global_target) # - EXCLUDED_SOURCES: sources already "consumed", that is, processed by an autocoder # - DEPENDENCIES: dependencies of this module. Also link flags and libraries. #### -function(build_setup_build_module MODULE SOURCES GENERATED EXCLUDED_SOURCES DEPENDENCIES) - # Add generated sources - foreach(SOURCE IN LISTS SOURCES GENERATED) - if (NOT SOURCE IN_LIST EXCLUDED_SOURCES) - target_sources("${MODULE}" PRIVATE "${SOURCE}") - endif() - endforeach() +function(build_setup_build_module MODULE SOURCES GENERATED DEPENDENCIES) + target_sources("${MODULE}" PRIVATE ${SOURCES} ${GENERATED}) # Set those files as generated to prevent build errors foreach(SOURCE IN LISTS GENERATED) @@ -124,7 +119,20 @@ function(build_add_module_target MODULE TARGET SOURCES DEPENDENCIES) get_property(CUSTOM_AUTOCODERS GLOBAL PROPERTY FPRIME_AUTOCODER_TARGET_LIST) run_ac_set("${SOURCES}" ${CUSTOM_AUTOCODERS}) resolve_dependencies(RESOLVED ${DEPENDENCIES} ${AC_DEPENDENCIES} ) - build_setup_build_module("${MODULE}" "${SOURCES}" "${AC_GENERATED}" "${AC_SOURCES}" "${RESOLVED}") + + # Create lists of hand-coded and generated sources not "consumed" by an autocoder + foreach(SOURCE_LIST IN ITEMS SOURCES AC_GENERATED) + set(${SOURCE_LIST}_FILTERED "") + foreach(SOURCE IN LISTS ${SOURCE_LIST}) + if (NOT SOURCE IN_LIST AC_SOURCES) + list(APPEND ${SOURCE_LIST}_FILTERED "${SOURCE}") + endif() + endforeach() + endforeach() + + build_setup_build_module("${MODULE}" "${SOURCES_FILTERED}" "${AC_GENERATED_FILTERED}" "${RESOLVED}") + + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/sources.txt" "${SOURCES_FILTERED}\n${AC_GENERATED}\n${AC_SOURCES}") if (CMAKE_DEBUG_OUTPUT) introspect("${MODULE}") From 6c5d4f027d15dac1ded4d3a59a980014cf0fd652 Mon Sep 17 00:00:00 2001 From: Michael D Starch Date: Fri, 10 Nov 2023 09:58:50 -0800 Subject: [PATCH 2/4] Adding in module-ut-info.txt --- Ref/SignalGen/CMakeLists.txt | 15 ++++++--------- cmake/autocoder/ai_ut.cmake | 1 + cmake/autocoder/ai_xml.cmake | 1 + cmake/autocoder/autocoder.cmake | 24 ++++++++++++++++++++---- cmake/autocoder/fpp.cmake | 1 + cmake/autocoder/fpp_ut.cmake | 1 + cmake/target/build.cmake | 21 +++++++-------------- cmake/target/ut.cmake | 8 +++++++- cmake/test/src/test_ref_shared.py | 21 +++++++++++++++++++++ cmake/test/src/test_unittests.py | 22 ++++++++++++++++++++++ cmake/utilities.cmake | 20 ++++++++++++++++++++ 11 files changed, 107 insertions(+), 28 deletions(-) diff --git a/Ref/SignalGen/CMakeLists.txt b/Ref/SignalGen/CMakeLists.txt index f37710f7e8..accab23174 100644 --- a/Ref/SignalGen/CMakeLists.txt +++ b/Ref/SignalGen/CMakeLists.txt @@ -9,24 +9,21 @@ set(SOURCE_FILES "${CMAKE_CURRENT_LIST_DIR}/SignalGen.fpp" "${CMAKE_CURRENT_LIST_DIR}/SignalGen.cpp" - +) +set(HEADER_FILES + "${CMAKE_CURRENT_LIST_DIR}/SignalGen.hpp" ) register_fprime_module() - - - - - - - - ### UTs ### set(UT_SOURCE_FILES "${CMAKE_CURRENT_LIST_DIR}/SignalGen.fpp" "${CMAKE_CURRENT_LIST_DIR}/test/ut/SignalGenTester.cpp" "${CMAKE_CURRENT_LIST_DIR}/test/ut/SignalGenTestMain.cpp" ) +set(UT_HEADER_FILES + "${CMAKE_CURRENT_LIST_DIR}/test/ut/SignalGenTester.hpp" +) set(UT_AUTO_HELPERS ON) register_fprime_ut() diff --git a/cmake/autocoder/ai_ut.cmake b/cmake/autocoder/ai_ut.cmake index 98d8f2d651..4d383b2b96 100644 --- a/cmake/autocoder/ai_ut.cmake +++ b/cmake/autocoder/ai_ut.cmake @@ -61,4 +61,5 @@ function(ai_ut_setup_autocode AC_INPUT_FILE) DEPENDS "${AC_INPUT_FILE}" "${CODEGEN_TARGET}" ) set(AUTOCODER_GENERATED "${AUTOCODER_GENERATED}" PARENT_SCOPE) + set(AUTOCODER_INCLUDES "${FILE_DEPENDENCIES}" PARENT_SCOPE) endfunction(ai_ut_setup_autocode) diff --git a/cmake/autocoder/ai_xml.cmake b/cmake/autocoder/ai_xml.cmake index e278e231f6..ecef309305 100644 --- a/cmake/autocoder/ai_xml.cmake +++ b/cmake/autocoder/ai_xml.cmake @@ -119,4 +119,5 @@ function(ai_xml_setup_autocode AC_INPUT_FILE) endif() set(AUTOCODER_GENERATED "${GENERATED_FILES}" PARENT_SCOPE) set(AUTOCODER_DEPENDENCIES "${MODULE_DEPENDENCIES}" PARENT_SCOPE) + set(AUTOCODER_INCLUDES "${FILE_DEPENDENCIES}" PARENT_SCOPE) endfunction(ai_xml_setup_autocode) diff --git a/cmake/autocoder/autocoder.cmake b/cmake/autocoder/autocoder.cmake index c54bf4bac9..f2d777212d 100644 --- a/cmake/autocoder/autocoder.cmake +++ b/cmake/autocoder/autocoder.cmake @@ -25,19 +25,26 @@ function (run_ac_set SOURCES) if (ARGN) set(AC_LIST "${ARGN}") endif() - init_variables(MODULE_DEPENDENCIES_LIST GENERATED_FILE_LIST CONSUMED_SOURCES_LIST) + init_variables(MODULE_DEPENDENCIES_LIST GENERATED_FILE_LIST CONSUMED_SOURCES_LIST FILE_DEPENDENCY_LIST) foreach(AC_CMAKE IN LISTS AC_LIST) init_variables(MODULE_DEPENDENCIES GENERATED_FILES CONSUMED_SOURCES) run_ac("${AC_CMAKE}" "${SOURCES}" "${GENERATED_FILE_LIST}") list(APPEND MODULE_DEPENDENCIES_LIST ${MODULE_DEPENDENCIES}) list(APPEND GENERATED_FILE_LIST ${GENERATED_FILES}) list(APPEND CONSUMED_SOURCES_LIST ${CONSUMED_SOURCES}) + list(APPEND FILE_DEPENDENCY_LIST ${FILE_DEPENDENCIES}) endforeach() + list(REMOVE_DUPLICATES MODULE_DEPENDENCIES_LIST) + list(REMOVE_DUPLICATES GENERATED_FILE_LIST) + list(REMOVE_DUPLICATES CONSUMED_SOURCES_LIST) + list(REMOVE_DUPLICATES FILE_DEPENDENCY_LIST) + # Return variables set(AC_DEPENDENCIES "${MODULE_DEPENDENCIES_LIST}" PARENT_SCOPE) set(AC_GENERATED "${GENERATED_FILE_LIST}" PARENT_SCOPE) set(AC_SOURCES "${CONSUMED_SOURCES_LIST}" PARENT_SCOPE) + set(AC_FILE_DEPENDENCIES "${FILE_DEPENDENCY_LIST}" PARENT_SCOPE) endfunction() #### @@ -84,11 +91,12 @@ function(run_ac AUTOCODER_CMAKE SOURCES GENERATED_SOURCES) set(CONSUMED_SOURCES) # Handles individual/multiple source handling if (HANDLES_INDIVIDUAL_SOURCES) - init_variables(MODULE_DEPENDENCIES_LIST GENERATED_FILES_LIST) + init_variables(MODULE_DEPENDENCIES_LIST GENERATED_FILES_LIST FILE_DEPENDENCY_LIST) foreach(SOURCE IN LISTS AC_INPUT_SOURCES) __ac_process_sources("${SOURCE}") list(APPEND MODULE_DEPENDENCIES_LIST ${MODULE_DEPENDENCIES}) list(APPEND GENERATED_FILES_LIST ${GENERATED_FILES}) + list(APPEND FILE_DEPENDENCY_LIST ${FILE_DEPENDENCIES}) # Check if this would have generated something, if not don't mark the file as used if (GENERATED_FILES) list(APPEND CONSUMED_SOURCES "${SOURCE}") @@ -96,6 +104,7 @@ function(run_ac AUTOCODER_CMAKE SOURCES GENERATED_SOURCES) endforeach() set(MODULE_DEPENDENCIES "${MODULE_DEPENDENCIES_LIST}") set(GENERATED_FILES "${GENERATED_FILES_LIST}") + set(FILE_DEPENDENCIES "${FILE_DEPENDENCY_LIST}") else() __ac_process_sources("${AC_INPUT_SOURCES}") set(CONSUMED_SOURCES "${AC_INPUT_SOURCES}") @@ -109,11 +118,13 @@ function(run_ac AUTOCODER_CMAKE SOURCES GENERATED_SOURCES) get_property(DEPS DIRECTORY PROPERTY "${SRCS_HASH}_DEPENDENCIES") get_property(GENS DIRECTORY PROPERTY "${SRCS_HASH}_GENERATED") get_property(CONS DIRECTORY PROPERTY "${SRCS_HASH}_CONSUMED") + get_property(FLDP DIRECTORY PROPERTY "${SRCS_HASH}_FILE_DEPENDENCIES") # Return variables set(MODULE_DEPENDENCIES "${DEPS}" PARENT_SCOPE) set(GENERATED_FILES "${GENS}" PARENT_SCOPE) set(CONSUMED_SOURCES "${CONS}" PARENT_SCOPE) + set(FILE_DEPENDENCIES "${FLDP}" PARENT_SCOPE) endfunction(run_ac) #### @@ -212,21 +223,26 @@ function(__ac_process_sources SOURCES) message(FATAL_ERROR "AUTOCODER_INPUTS set to ${AUTOCODER_INPUTS} before setup autocoder call.") elseif(DEFINED AUTOCODER_DEPENDENCIES) message(FATAL_ERROR "AUTOCODER_DEPENDENCIES set to ${AUTOCODER_DEPENDENCIES} before setup autocoder call.") + elseif(DEFINED AUTOCODER_INCLUDES) + message(FATAL_ERROR "AUTOCODER_INCLUDES set to ${AUTOCODER_INCLUDES} before setup autocoder call.") endif() # Run the generation setup when not requesting "info only" cmake_language(CALL "${AUTOCODER_NAME}_setup_autocode" "${SOURCES}") + set(FILE_DEPENDENCIES ${AUTOCODER_INPUTS}) + list(APPEND FILE_DEPENDENCIES ${AUTOCODER_INCLUDES}) if (NOT DEFINED AUTOCODER_GENERATED) message(FATAL_ERROR "Autocoder ${AUTOCODER_NAME} did not set AUTOCODER_GENERATED to files to be generated") elseif(DEFINED AUTOCODER_SCRIPT AND NOT DEFINED AUTOCODER_INPUTS) message(FATAL_ERROR "Autocoder ${AUTOCODER_NAME} did not set both AUTOCODER_INPUTS when using AUTOCODER_SCRIPT") elseif(DEFINED AUTOCODER_SCRIPT) - add_custom_command(OUTPUT ${AUTOCODER_GENERATED} COMMAND ${AUTOCODER_SCRIPT} ${AUTOCODER_INPUTS} DEPENDS ${AUTOCODER_INPUTS} ${AUTOCODER_DEPENDENCIES}) + add_custom_command(OUTPUT ${AUTOCODER_GENERATED} COMMAND ${AUTOCODER_SCRIPT} ${AUTOCODER_INPUTS} DEPENDS ${FILE_DEPENDENCIES} ${AUTOCODER_DEPENDENCIES}) endif() + set(MODULE_DEPENDENCIES "${AUTOCODER_DEPENDENCIES}" PARENT_SCOPE) set(GENERATED_FILES "${AUTOCODER_GENERATED}" PARENT_SCOPE) - set(FILE_DEPENDENCIES "${AUTOCODER_INPUTS}" PARENT_SCOPE) + set(FILE_DEPENDENCIES "${FILE_DEPENDENCIES}" PARENT_SCOPE) endfunction() diff --git a/cmake/autocoder/fpp.cmake b/cmake/autocoder/fpp.cmake index 28bbea19bb..6fb8817836 100644 --- a/cmake/autocoder/fpp.cmake +++ b/cmake/autocoder/fpp.cmake @@ -228,6 +228,7 @@ function(fpp_setup_autocode AC_INPUT_FILES) set(AUTOCODER_GENERATED ${GENERATED_AI} ${GENERATED_CPP}) set(AUTOCODER_GENERATED "${AUTOCODER_GENERATED}" PARENT_SCOPE) set(AUTOCODER_DEPENDENCIES "${MODULE_DEPENDENCIES}" PARENT_SCOPE) + set(AUTOCODER_INCLUDES "${FILE_DEPENDENCIES}" PARENT_SCOPE) endfunction(fpp_setup_autocode) #### diff --git a/cmake/autocoder/fpp_ut.cmake b/cmake/autocoder/fpp_ut.cmake index 204fc5b0de..04221df85f 100644 --- a/cmake/autocoder/fpp_ut.cmake +++ b/cmake/autocoder/fpp_ut.cmake @@ -73,5 +73,6 @@ function(fpp_ut_setup_autocode AC_INPUT_FILES) set(AUTOCODER_GENERATED ${GENERATED_AI} ${GENERATED_CPP}) set(AUTOCODER_GENERATED "${AUTOCODER_GENERATED}" PARENT_SCOPE) set(AUTOCODER_DEPENDENCIES "${MODULE_DEPENDENCIES}" PARENT_SCOPE) + set(AUTOCODER_INCLUDES "${FILE_DEPENDENCIES}" PARENT_SCOPE) endfunction(fpp_ut_setup_autocode) diff --git a/cmake/target/build.cmake b/cmake/target/build.cmake index 8a00268bdc..34ac0f0148 100644 --- a/cmake/target/build.cmake +++ b/cmake/target/build.cmake @@ -100,11 +100,11 @@ endfunction() # of arguments. FULL_DEPENDENCY_LIST is unused (these are already known to CMake). #### function(build_add_deployment_target MODULE TARGET SOURCES DIRECT_DEPENDENCIES FULL_DEPENDENCY_LIST) - build_add_module_target("${MODULE}" "${TARGET}" "${SOURCES}" "${DEPENDENCIES}") + build_add_module_target("${MODULE}" "${TARGET}" "${SOURCES}" "${FULL_DEPENDENCY_LIST}") endfunction() #### -# Build function `add_module_target`: +# Function `build_add_module_target`: # # Adds a module-by-module target for building fprime. # @@ -118,22 +118,15 @@ function(build_add_module_target MODULE TARGET SOURCES DEPENDENCIES) message(STATUS "Adding ${MODULE_TYPE}: ${MODULE}") get_property(CUSTOM_AUTOCODERS GLOBAL PROPERTY FPRIME_AUTOCODER_TARGET_LIST) run_ac_set("${SOURCES}" ${CUSTOM_AUTOCODERS}) - resolve_dependencies(RESOLVED ${DEPENDENCIES} ${AC_DEPENDENCIES} ) + resolve_dependencies(RESOLVED ${DEPENDENCIES} ${AC_DEPENDENCIES}) # Create lists of hand-coded and generated sources not "consumed" by an autocoder - foreach(SOURCE_LIST IN ITEMS SOURCES AC_GENERATED) - set(${SOURCE_LIST}_FILTERED "") - foreach(SOURCE IN LISTS ${SOURCE_LIST}) - if (NOT SOURCE IN_LIST AC_SOURCES) - list(APPEND ${SOURCE_LIST}_FILTERED "${SOURCE}") - endif() - endforeach() - endforeach() - + filter_lists("${AC_SOURCES}" SOURCES AC_GENERATED) + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/module-info.txt" + "${HEADER_FILES}\n${SOURCES_FILTERED}\n${AC_GENERATED}\n${AC_FILE_DEPENDENCIES}\n${DEPENDENCIES}\n" + ) build_setup_build_module("${MODULE}" "${SOURCES_FILTERED}" "${AC_GENERATED_FILTERED}" "${RESOLVED}") - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/sources.txt" "${SOURCES_FILTERED}\n${AC_GENERATED}\n${AC_SOURCES}") - if (CMAKE_DEBUG_OUTPUT) introspect("${MODULE}") endif() diff --git a/cmake/target/ut.cmake b/cmake/target/ut.cmake index 18c7d7aa7b..397fabcf2d 100644 --- a/cmake/target/ut.cmake +++ b/cmake/target/ut.cmake @@ -113,7 +113,13 @@ function(ut_add_module_target MODULE_NAME TARGET_NAME SOURCE_FILES DEPENDENCIES) ) run_ac_set("${SOURCE_FILES}" autocoder/fpp autocoder/fpp_ut) resolve_dependencies(RESOLVED gtest_main ${DEPENDENCIES} ${AC_DEPENDENCIES}) - build_setup_build_module("${UT_EXE_NAME}" "${SOURCE_FILES}" "${AC_GENERATED}" "${AC_SOURCES}" "${RESOLVED}") + + # Create lists of hand-coded and generated sources not "consumed" by an autocoder + filter_lists("${AC_SOURCES}" SOURCE_FILES AC_GENERATED) + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/module-ut-info.txt" + "${UT_HEADER_FILES}\n${SOURCE_FILES_FILTERED}\n${AC_GENERATED}\n${AC_FILE_DEPENDENCIES}\n${DEPENDENCIES}" + ) + build_setup_build_module("${UT_EXE_NAME}" "${SOURCE_FILES_FILTERED}" "${AC_GENERATED_FILTERED}" "${RESOLVED}") ut_setup_unit_test_include_directories("${UT_EXE_NAME}" "${SOURCE_FILES}") add_test(NAME ${UT_EXE_NAME} COMMAND ${UT_EXE_NAME}) diff --git a/cmake/test/src/test_ref_shared.py b/cmake/test/src/test_ref_shared.py index 2f4fa17805..84477ecccf 100644 --- a/cmake/test/src/test_ref_shared.py +++ b/cmake/test/src/test_ref_shared.py @@ -11,6 +11,8 @@ import cmake +from pathlib import Path + _ = cmake.get_build( "REF_BUILD", settings.REF_APP_PATH, @@ -65,3 +67,22 @@ def test_ref_dictionary(REF_BUILD): / "RefTopologyAppDictionary.xml" ) assert output_path.exists(), "Failed to locate Ref in build output" + +def test_ref_module_info(REF_BUILD): + """Run reference and assert module-info.txt was created""" + cmake.assert_process_success(REF_BUILD) + txt_path = REF_BUILD["build"] / "Ref" / "SignalGen" / "module-info.txt" + assert txt_path.exists(), "Failed to locate module-info.txt under SignalGen" + + with open(txt_path, "r") as file_path: + lines = file_path.readlines() + assert len(lines) == 5, "Module info not correct number of lines" + headers, sources, generated, ac_sources, dependencies = [line.strip().split(";") for line in lines] + assert ["SignalGen.hpp"] == [Path(header).name for header in headers], "Did not find expected headers" + assert ["SignalGen.cpp"] == [Path(source).name for source in sources], "Did not find expected sources" + expected_ac = ["SignalGen.fpp", "Commands.fppi", "Events.fppi", "Telemetry.fppi"] + actual_ac = [Path(source).name for source in ac_sources] + assert sorted(expected_ac) == sorted(actual_ac), "Did not find expected autocoder sources" + expected_gen = ['SignalGenComponentAi.xml', 'SignalInfoSerializableAi.xml', 'SignalPairSerializableAi.xml', 'SignalPairSetArrayAi.xml', 'SignalSetArrayAi.xml', 'SignalTypeEnumAi.xml', 'SignalGenComponentAc.cpp', 'SignalGenComponentAc.hpp', 'SignalInfoSerializableAc.cpp', 'SignalInfoSerializableAc.hpp', 'SignalPairSerializableAc.cpp', 'SignalPairSerializableAc.hpp', 'SignalPairSetArrayAc.cpp', 'SignalPairSetArrayAc.hpp', 'SignalSetArrayAc.cpp', 'SignalSetArrayAc.hpp', 'SignalTypeEnumAc.cpp', 'SignalTypeEnumAc.hpp'] + actual_gen = [Path(source).name for source in generated] + assert sorted(expected_gen) == sorted(actual_gen), "Did not find expected autocoder generated sources" \ No newline at end of file diff --git a/cmake/test/src/test_unittests.py b/cmake/test/src/test_unittests.py index 270c21aa45..b73e737fb4 100644 --- a/cmake/test/src/test_unittests.py +++ b/cmake/test/src/test_unittests.py @@ -10,6 +10,7 @@ import settings import cmake +from pathlib import Path _ = cmake.get_build( "UT_BUILD", @@ -110,3 +111,24 @@ def test_unittest_dictionary(UT_BUILD): / "RefTopologyAppDictionary.xml" ) assert output_path.exists(), "Failed to locate Ref in build output" + +def test_unittest_module_ut_info(UT_BUILD): + """Run reference and assert module-ut-info.txt was created""" + cmake.assert_process_success(UT_BUILD, errors_ok=True) + txt_path = UT_BUILD["build"] / "Ref" / "SignalGen" / "module-ut-info.txt" + assert txt_path.exists(), "Failed to locate module-info.txt under SignalGen" + + with open(txt_path, "r") as file_path: + lines = file_path.readlines() + assert len(lines) == 5, "Module info not correct number of lines" + headers, sources, generated, ac_sources, dependencies = [line.strip().split(";") for line in lines] + assert ["SignalGenTester.hpp"] == [Path(header).name for header in headers], "Did not find expected headers" + assert sorted(["SignalGenTester.cpp", "SignalGenTestMain.cpp"]) == sorted([Path(source).name for source in sources]), "Did not find expected sources" + expected_ac = ["SignalGen.fpp", "Commands.fppi", "Events.fppi", "Telemetry.fppi"] + actual_ac = [Path(source).name for source in ac_sources] + assert sorted(expected_ac) == sorted(actual_ac), "Did not find expected autocoder sources" + expected_gen = ['SignalGenComponentAi.xml', 'SignalInfoSerializableAi.xml', 'SignalPairSerializableAi.xml', 'SignalPairSetArrayAi.xml', 'SignalSetArrayAi.xml', 'SignalTypeEnumAi.xml', 'SignalGenComponentAc.cpp', 'SignalGenComponentAc.hpp', 'SignalInfoSerializableAc.cpp', 'SignalInfoSerializableAc.hpp', 'SignalPairSerializableAc.cpp', 'SignalPairSerializableAc.hpp', 'SignalPairSetArrayAc.cpp', 'SignalPairSetArrayAc.hpp', 'SignalSetArrayAc.cpp', 'SignalSetArrayAc.hpp', 'SignalTypeEnumAc.cpp', 'SignalTypeEnumAc.hpp', + "SignalGenGTestBase.cpp","SignalGenGTestBase.hpp", "SignalGenTesterBase.cpp", "SignalGenTesterBase.hpp", "SignalGenTesterHelpers.cpp"] + actual_gen = [Path(source).name for source in generated] + assert sorted(expected_gen) == sorted(actual_gen), "Did not find expected autocoder generated sources" + assert dependencies == ["Ref_SignalGen"], "Did not find expected dependencies" \ No newline at end of file diff --git a/cmake/utilities.cmake b/cmake/utilities.cmake index c9468d9e24..ea998fad08 100644 --- a/cmake/utilities.cmake +++ b/cmake/utilities.cmake @@ -606,3 +606,23 @@ function(append_list_property NEW_ITEM) list(REMOVE_DUPLICATES LOCAL_COPY) set_property(${ARGN} "${LOCAL_COPY}") endfunction() + +#### +# Function `filter_lists`: +# +# Filters lists set in ARGN to to ensure that they are not in the exclude list. Sets the _FILTERED variable in +# PARENT_SCOPE with the results +# **EXCLUDE_LIST**: list of items to filter-out of ARGN lists +# **ARGN:** list of list names in parent scope to filter +#### +function (filter_lists EXCLUDE_LIST) + foreach(SOURCE_LIST IN LISTS ARGN) + set(${SOURCE_LIST}_FILTERED "") + foreach(SOURCE IN LISTS ${SOURCE_LIST}) + if (NOT SOURCE IN_LIST EXCLUDE_LIST) + list(APPEND ${SOURCE_LIST}_FILTERED "${SOURCE}") + endif() + endforeach() + set(${SOURCE_LIST}_FILTERED "${${SOURCE_LIST}_FILTERED}" PARENT_SCOPE) + endforeach() +endfunction(filter_lists) \ No newline at end of file From dc7991ea36c372665b9d5acb0400a9b5bdd2d797 Mon Sep 17 00:00:00 2001 From: Michael D Starch Date: Fri, 10 Nov 2023 10:02:43 -0800 Subject: [PATCH 3/4] Formatting --- cmake/test/src/test_ref_shared.py | 42 ++++++++++++++++++++++---- cmake/test/src/test_unittests.py | 50 ++++++++++++++++++++++++++----- 2 files changed, 78 insertions(+), 14 deletions(-) diff --git a/cmake/test/src/test_ref_shared.py b/cmake/test/src/test_ref_shared.py index 84477ecccf..3376b756fc 100644 --- a/cmake/test/src/test_ref_shared.py +++ b/cmake/test/src/test_ref_shared.py @@ -68,6 +68,7 @@ def test_ref_dictionary(REF_BUILD): ) assert output_path.exists(), "Failed to locate Ref in build output" + def test_ref_module_info(REF_BUILD): """Run reference and assert module-info.txt was created""" cmake.assert_process_success(REF_BUILD) @@ -77,12 +78,41 @@ def test_ref_module_info(REF_BUILD): with open(txt_path, "r") as file_path: lines = file_path.readlines() assert len(lines) == 5, "Module info not correct number of lines" - headers, sources, generated, ac_sources, dependencies = [line.strip().split(";") for line in lines] - assert ["SignalGen.hpp"] == [Path(header).name for header in headers], "Did not find expected headers" - assert ["SignalGen.cpp"] == [Path(source).name for source in sources], "Did not find expected sources" + headers, sources, generated, ac_sources, dependencies = [ + line.strip().split(";") for line in lines + ] + assert ["SignalGen.hpp"] == [ + Path(header).name for header in headers + ], "Did not find expected headers" + assert ["SignalGen.cpp"] == [ + Path(source).name for source in sources + ], "Did not find expected sources" expected_ac = ["SignalGen.fpp", "Commands.fppi", "Events.fppi", "Telemetry.fppi"] actual_ac = [Path(source).name for source in ac_sources] - assert sorted(expected_ac) == sorted(actual_ac), "Did not find expected autocoder sources" - expected_gen = ['SignalGenComponentAi.xml', 'SignalInfoSerializableAi.xml', 'SignalPairSerializableAi.xml', 'SignalPairSetArrayAi.xml', 'SignalSetArrayAi.xml', 'SignalTypeEnumAi.xml', 'SignalGenComponentAc.cpp', 'SignalGenComponentAc.hpp', 'SignalInfoSerializableAc.cpp', 'SignalInfoSerializableAc.hpp', 'SignalPairSerializableAc.cpp', 'SignalPairSerializableAc.hpp', 'SignalPairSetArrayAc.cpp', 'SignalPairSetArrayAc.hpp', 'SignalSetArrayAc.cpp', 'SignalSetArrayAc.hpp', 'SignalTypeEnumAc.cpp', 'SignalTypeEnumAc.hpp'] + assert sorted(expected_ac) == sorted( + actual_ac + ), "Did not find expected autocoder sources" + expected_gen = [ + "SignalGenComponentAi.xml", + "SignalInfoSerializableAi.xml", + "SignalPairSerializableAi.xml", + "SignalPairSetArrayAi.xml", + "SignalSetArrayAi.xml", + "SignalTypeEnumAi.xml", + "SignalGenComponentAc.cpp", + "SignalGenComponentAc.hpp", + "SignalInfoSerializableAc.cpp", + "SignalInfoSerializableAc.hpp", + "SignalPairSerializableAc.cpp", + "SignalPairSerializableAc.hpp", + "SignalPairSetArrayAc.cpp", + "SignalPairSetArrayAc.hpp", + "SignalSetArrayAc.cpp", + "SignalSetArrayAc.hpp", + "SignalTypeEnumAc.cpp", + "SignalTypeEnumAc.hpp", + ] actual_gen = [Path(source).name for source in generated] - assert sorted(expected_gen) == sorted(actual_gen), "Did not find expected autocoder generated sources" \ No newline at end of file + assert sorted(expected_gen) == sorted( + actual_gen + ), "Did not find expected autocoder generated sources" diff --git a/cmake/test/src/test_unittests.py b/cmake/test/src/test_unittests.py index b73e737fb4..fb4f464b9d 100644 --- a/cmake/test/src/test_unittests.py +++ b/cmake/test/src/test_unittests.py @@ -112,6 +112,7 @@ def test_unittest_dictionary(UT_BUILD): ) assert output_path.exists(), "Failed to locate Ref in build output" + def test_unittest_module_ut_info(UT_BUILD): """Run reference and assert module-ut-info.txt was created""" cmake.assert_process_success(UT_BUILD, errors_ok=True) @@ -121,14 +122,47 @@ def test_unittest_module_ut_info(UT_BUILD): with open(txt_path, "r") as file_path: lines = file_path.readlines() assert len(lines) == 5, "Module info not correct number of lines" - headers, sources, generated, ac_sources, dependencies = [line.strip().split(";") for line in lines] - assert ["SignalGenTester.hpp"] == [Path(header).name for header in headers], "Did not find expected headers" - assert sorted(["SignalGenTester.cpp", "SignalGenTestMain.cpp"]) == sorted([Path(source).name for source in sources]), "Did not find expected sources" + headers, sources, generated, ac_sources, dependencies = [ + line.strip().split(";") for line in lines + ] + assert ["SignalGenTester.hpp"] == [ + Path(header).name for header in headers + ], "Did not find expected headers" + assert sorted(["SignalGenTester.cpp", "SignalGenTestMain.cpp"]) == sorted( + [Path(source).name for source in sources] + ), "Did not find expected sources" expected_ac = ["SignalGen.fpp", "Commands.fppi", "Events.fppi", "Telemetry.fppi"] actual_ac = [Path(source).name for source in ac_sources] - assert sorted(expected_ac) == sorted(actual_ac), "Did not find expected autocoder sources" - expected_gen = ['SignalGenComponentAi.xml', 'SignalInfoSerializableAi.xml', 'SignalPairSerializableAi.xml', 'SignalPairSetArrayAi.xml', 'SignalSetArrayAi.xml', 'SignalTypeEnumAi.xml', 'SignalGenComponentAc.cpp', 'SignalGenComponentAc.hpp', 'SignalInfoSerializableAc.cpp', 'SignalInfoSerializableAc.hpp', 'SignalPairSerializableAc.cpp', 'SignalPairSerializableAc.hpp', 'SignalPairSetArrayAc.cpp', 'SignalPairSetArrayAc.hpp', 'SignalSetArrayAc.cpp', 'SignalSetArrayAc.hpp', 'SignalTypeEnumAc.cpp', 'SignalTypeEnumAc.hpp', - "SignalGenGTestBase.cpp","SignalGenGTestBase.hpp", "SignalGenTesterBase.cpp", "SignalGenTesterBase.hpp", "SignalGenTesterHelpers.cpp"] + assert sorted(expected_ac) == sorted( + actual_ac + ), "Did not find expected autocoder sources" + expected_gen = [ + "SignalGenComponentAi.xml", + "SignalInfoSerializableAi.xml", + "SignalPairSerializableAi.xml", + "SignalPairSetArrayAi.xml", + "SignalSetArrayAi.xml", + "SignalTypeEnumAi.xml", + "SignalGenComponentAc.cpp", + "SignalGenComponentAc.hpp", + "SignalInfoSerializableAc.cpp", + "SignalInfoSerializableAc.hpp", + "SignalPairSerializableAc.cpp", + "SignalPairSerializableAc.hpp", + "SignalPairSetArrayAc.cpp", + "SignalPairSetArrayAc.hpp", + "SignalSetArrayAc.cpp", + "SignalSetArrayAc.hpp", + "SignalTypeEnumAc.cpp", + "SignalTypeEnumAc.hpp", + "SignalGenGTestBase.cpp", + "SignalGenGTestBase.hpp", + "SignalGenTesterBase.cpp", + "SignalGenTesterBase.hpp", + "SignalGenTesterHelpers.cpp", + ] actual_gen = [Path(source).name for source in generated] - assert sorted(expected_gen) == sorted(actual_gen), "Did not find expected autocoder generated sources" - assert dependencies == ["Ref_SignalGen"], "Did not find expected dependencies" \ No newline at end of file + assert sorted(expected_gen) == sorted( + actual_gen + ), "Did not find expected autocoder generated sources" + assert dependencies == ["Ref_SignalGen"], "Did not find expected dependencies" From d84bf5b6600361035d75a03cca437d64604f612a Mon Sep 17 00:00:00 2001 From: Michael D Starch Date: Mon, 13 Nov 2023 12:48:28 -0800 Subject: [PATCH 4/4] sp --- .github/actions/spelling/expect.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt index 599d6157b6..3a7589a236 100644 --- a/.github/actions/spelling/expect.txt +++ b/.github/actions/spelling/expect.txt @@ -336,6 +336,7 @@ fileopen FILESTUBS fio Firefox +FLDP flist FNDELAY fns