Merge branch 'bugfix/ci_fix_idf_v60_issues' into 'main'

fix idf compatibility issues under ci

See merge request idf/esp-modbus!130
This commit is contained in:
Alex Lisitsyn
2025-08-25 08:07:05 +01:00
17 changed files with 96 additions and 56 deletions

View File

@@ -1,6 +1,6 @@
# The following lines of boilerplate have to be in your project's CMakeLists
# in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.22)
# Exclude old component feemodbus which exists in old versions
set(EXCLUDE_COMPONENTS freemodbus)

View File

@@ -1,6 +1,6 @@
# The following lines of boilerplate have to be in your project's CMakeLists
# in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.22)
# Exclude old component feemodbus which exists in old versions
set(EXCLUDE_COMPONENTS freemodbus)

View File

@@ -1,6 +1,6 @@
# The following lines of boilerplate have to be in your project's CMakeLists
# in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.22)
set(EXCLUDE_COMPONENTS freemodbus)

View File

@@ -1,8 +1,14 @@
# This is the project CMakeLists.txt file for the test subproject
cmake_minimum_required(VERSION 3.16)
set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
list(APPEND EXTRA_COMPONENT_DIRS "../test_common")
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
set(EXTRA_COMPONENT_DIRS "../test_common")
if("${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}" VERSION_GREATER "5.5")
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/test_apps/components")
else()
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
endif()
project(test_comm_adapter)

View File

@@ -8,7 +8,7 @@ set(srcs "test_app_main.c"
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,
idf_component_register(SRCS ${srcs}
PRIV_REQUIRES cmock test_common unity test_utils
) #
)
set_property(TARGET ${COMPONENT_LIB} APPEND PROPERTY INTERFACE_LINK_LIBRARIES "-u mb_test_include_adapter_impl_serial")
set_property(TARGET ${COMPONENT_LIB} APPEND PROPERTY INTERFACE_LINK_LIBRARIES "-u mb_test_include_adapter_impl_tcp")

View File

@@ -4,14 +4,8 @@
import pytest
from pytest_embedded import Dut
CONFIGS = [
pytest.param('serial', marks=[pytest.mark.esp32, pytest.mark.esp32p4]),
pytest.param('tcp', marks=[pytest.mark.esp32, pytest.mark.esp32p4]),
]
@pytest.mark.temp_skip_ci(targets=['esp32p4'], reason='no multi-dev runner')
@pytest.mark.parametrize('target', ['esp32'], indirect=True)
@pytest.mark.parametrize('config', ['serial','tcp'], indirect=True)
@pytest.mark.multi_dut_modbus_generic
@pytest.mark.parametrize('config', CONFIGS, indirect=True)
def test_modbus_comm_adapter(dut: Dut) -> None:
dut.expect_unity_test_output()

View File

@@ -8,6 +8,7 @@
#define TAG "CPP_TEST"
#define MB_SLAVE_SHORT_ADDRESS 1
#define MB_FUNC_CODE_MAX 42
enum {
MB_DEVICE_ADDR1 = 1
@@ -120,12 +121,18 @@ static int check_custom_handlers(void *inst)
MB_RETURN_ON_FALSE((err == ESP_OK), 0, TAG,
"mbc slave get handler count, returns(0x%x).", (int)err);
ESP_LOGI(TAG,"Object %p, custom handler test, (registered:max) handlers: %d:%d.", inst, count, CONFIG_FMB_FUNC_HANDLERS_MAX);
for (entry = 0x01; entry < CONFIG_FMB_FUNC_HANDLERS_MAX; entry++) {
// Try to remove the handler
for (entry = 0x01; entry < MB_FUNC_CODE_MAX; entry++) {
// Try to remove the handlers
err = mbc_delete_handler(inst, (uint8_t)entry);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Could not remove handler for command: (0x%x), returned (0x%x), already empty?", entry, (int)err);
if (err == ESP_OK) {
ESP_LOGW(TAG, "Removed handler for command: (0x%x), returned (0x%x).", entry, (int)err);
}
}
err = mbc_get_handler_count(inst, &count);
MB_RETURN_ON_FALSE((err == ESP_OK && !count), 0, TAG,
"mbc slave get handler count, returns(0x%x), %u.", (int)err, count);
for (entry = 0x01; entry < CONFIG_FMB_FUNC_HANDLERS_MAX; entry++) {
err = mbc_set_handler(inst, (uint8_t)entry, test_handler);
if (err != ESP_OK) {
ESP_LOGE(TAG,"Could not set handler for command 0x%x, returned (0x%x).", entry, (int)err);

View File

@@ -3,10 +3,10 @@
import pytest
from pytest_embedded import Dut
MB_APP_WAIT_TOUT_SEC = 10
MB_APP_WAIT_TOUT_SEC = 30
@pytest.mark.esp32
@pytest.mark.generic
@pytest.mark.parametrize('target', ['esp32'], indirect=True)
@pytest.mark.multi_dut_modbus_generic
def test_cpp_mb_serial_master_slave(dut: Dut) -> None:
dut.expect('Setup master cpp....')
dut.expect('Modbus master stack initialized...', timeout=MB_APP_WAIT_TOUT_SEC)

View File

@@ -1,8 +1,15 @@
# This is the project CMakeLists.txt file for the test subproject
cmake_minimum_required(VERSION 3.16)
set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
list(APPEND EXTRA_COMPONENT_DIRS "../test_common")
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
set(EXTRA_COMPONENT_DIRS "../test_common")
# The workaround for the test_utils under ESP-IDF v6.0
if("${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}" VERSION_GREATER "5.5")
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/test_apps/components")
else()
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
endif()
project(test_modbus_comm_multi_dev)

View File

@@ -4,18 +4,18 @@
import pytest
from pytest_embedded_idf import CaseTester
@pytest.mark.esp32
@pytest.mark.multi_dut_modbus_serial
@pytest.mark.parametrize('target', ['esp32'], indirect=True)
@pytest.mark.parametrize('count, config', [(2, 'serial')], indirect=True)
@pytest.mark.multi_dut_modbus_serial
def test_modbus_comm_multi_dev_serial(case_tester) -> None: # type: ignore
for case in case_tester.test_menu:
if case.attributes.get('test_env', 'multi_dut_modbus_serial') == 'multi_dut_modbus_serial':
print(f'Test case: {case.name}')
case_tester.run_multi_dev_case(case=case, reset=True)
@pytest.mark.esp32
@pytest.mark.multi_dut_modbus_tcp
@pytest.mark.parametrize('count, config', [(2, 'ethernet')], indirect=True)
@pytest.mark.parametrize('target', ['esp32'], indirect=True)
@pytest.mark.multi_dut_modbus_tcp
def test_modbus_comm_multi_dev_tcp(case_tester) -> None: # type: ignore
for case in case_tester.test_menu:
if case.attributes.get('test_env', 'multi_dut_modbus_tcp') == 'multi_dut_modbus_tcp':

View File

@@ -1,9 +1,15 @@
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.22)
idf_component_register(SRCS "test_common.c"
INCLUDE_DIRS "include"
REQUIRES unity)
set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
set(EXTRA_COMPONENT_DIRS)
if("${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}" VERSION_GREATER "5.5")
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/test_apps/components")
else()
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
endif()
add_subdirectory(mb_utest_lib)
target_link_libraries(${COMPONENT_LIB} PUBLIC mb_ut_lib)

View File

@@ -1,9 +1,16 @@
# This is the project CMakeLists.txt file for the test subproject
cmake_minimum_required(VERSION 3.16)
set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
list(APPEND EXTRA_COMPONENT_DIRS "../../test_common")
list(APPEND EXTRA_COMPONENT_DIRS "../test_stubs")
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
set(EXTRA_COMPONENT_DIRS "../../test_common" "../test_stubs")
# The workaround for the test_utils under ESP-IDF v6.0
if("${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}" VERSION_GREATER "5.5")
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/test_apps/components")
else()
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
endif()
project(test_mb_controller_common_unit)

View File

@@ -4,7 +4,7 @@ set(srcs "test_app_main.c"
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,
idf_component_register(SRCS ${srcs}
PRIV_REQUIRES test_stubs mocked_esp_modbus test_common cmock test_utils unity)
REQUIRES test_stubs mocked_esp_modbus test_common cmock test_utils unity)
# The workaround for WHOLE_ARCHIVE is absent in v4.4
set_property(TARGET ${COMPONENT_LIB} APPEND PROPERTY INTERFACE_LINK_LIBRARIES "-u mb_test_include_impl")

View File

@@ -1,11 +1,18 @@
# This is the project CMakeLists.txt file for the test subproject
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.22)
set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
list(APPEND EXTRA_COMPONENT_DIRS "../../test_common")
list(APPEND EXTRA_COMPONENT_DIRS "../test_stubs")
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
#set(COMPONENTS driver esp_timer esp_event esp_netif main)
set(EXTRA_COMPONENT_DIRS "../../test_common" "../test_stubs")
# The workaround for the test_utils under ESP-IDF v6.0
if("${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}" VERSION_GREATER "5.5")
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/test_apps/components")
else()
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
endif()
set(COMPONENTS driver esp_timer esp_event esp_netif main)
# list(APPEND EXTRA_COMPONENT_DIRS
# "$ENV{IDF_PATH}/tools/mocks/lwip/"
@@ -13,5 +20,4 @@ list(APPEND EXTRA_COMPONENT_DIRS "../test_stubs")
# "$ENV{IDF_PATH}/tools/mocks/esp_timer/"
# )
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(test_mb_controller_mapping_unit)

View File

@@ -1,8 +1,17 @@
#This is the project CMakeLists.txt file for the test subproject
cmake_minimum_required(VERSION 3.16)
set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
set(COMPONENTS main)
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
set(EXTRA_COMPONENT_DIRS)
# The workaround for the test_utils under ESP-IDF v6.0
if("${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}" VERSION_GREATER "5.5")
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/test_apps/components")
else()
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components")
endif()
set(COMPONENTS main)
project(mb_endianness_utils)

View File

@@ -4,9 +4,7 @@
import pytest
from pytest_embedded import Dut
#@pytest.mark.supported_targets
@pytest.mark.esp32 # test on esp32 for now
@pytest.mark.parametrize('target', ['esp32'], indirect=True)
@pytest.mark.multi_dut_modbus_generic
def test_mb_endianness_utils(dut: Dut) -> None:
dut.run_all_single_board_cases()

View File

@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.22)
set(srcs "src/mb_object_stub.c")
idf_component_register( SRCS ${srcs}