mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
[mocks]: moved already added spi_flash mocks
[nvs]: page test works with new overriden mock [spi_flash]: Removed mocking code from CMake * Renamed nvs test to be consistent with other host test
This commit is contained in:
parent
d2fe8bfd15
commit
46e59e7194
@ -340,7 +340,7 @@ test_nvs_page:
|
||||
script:
|
||||
- cd ${IDF_PATH}/components/nvs_flash/host_test/nvs_page_test
|
||||
- idf.py build
|
||||
- build/host_nvs_page_test.elf
|
||||
- build/test_nvs_page_host.elf
|
||||
|
||||
test_log:
|
||||
extends: .host_test_template
|
||||
|
@ -13,13 +13,9 @@ set(srcs "src/nvs_api.cpp"
|
||||
"src/nvs_partition_manager.cpp"
|
||||
"src/nvs_types.cpp")
|
||||
|
||||
set(public_req "spi_flash")
|
||||
|
||||
set(include_dirs "include")
|
||||
|
||||
idf_component_register(SRCS "${srcs}"
|
||||
REQUIRES "${public_req}"
|
||||
INCLUDE_DIRS "${include_dirs}")
|
||||
REQUIRES "spi_flash"
|
||||
INCLUDE_DIRS "include")
|
||||
|
||||
# If we use the linux target, we need to redirect the crc functions to the linux
|
||||
if(${target} STREQUAL "linux")
|
||||
@ -27,9 +23,6 @@ if(${target} STREQUAL "linux")
|
||||
# mbedtls isn't configured for building with linux or as mock target. It will draw in all kind of dependencies
|
||||
message(FATAL_ERROR "NVS currently doesn't support encryption if built for Linux.")
|
||||
endif()
|
||||
idf_component_get_property(spi_flash_dir spi_flash COMPONENT_DIR)
|
||||
target_include_directories(${COMPONENT_LIB} PUBLIC
|
||||
"${spi_flash_dir}/sim/stubs/freertos/include")
|
||||
target_compile_options(${COMPONENT_LIB} PUBLIC "-DLINUX_TARGET")
|
||||
else()
|
||||
# TODO: this is a workaround until IDF-2085 is fixed
|
||||
|
@ -1,12 +1,15 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
|
||||
set(COMPONENTS main)
|
||||
idf_component_set_property(spi_flash USE_MOCK 1)
|
||||
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/mocks/driver/")
|
||||
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/mocks/freertos/")
|
||||
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/mocks/spi_flash/")
|
||||
|
||||
idf_build_set_property(COMPILE_DEFINITIONS "-DNO_DEBUG_STORAGE" APPEND)
|
||||
project(host_nvs_page_test)
|
||||
project(test_nvs_page_host)
|
||||
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/build/coverage.info"
|
||||
|
@ -1,4 +1,4 @@
|
||||
CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
|
||||
CONFIG_COMPILER_HIDE_PATHS_MACROS=n
|
||||
CONFIG_IDF_TARGET="linux"
|
||||
CONFIG_CXX_EXCEPTIONS=y
|
||||
CONFIG_COMPILER_CXX_EXCEPTIONS=y
|
||||
|
@ -1,121 +1,58 @@
|
||||
idf_component_get_property(spi_flash_mock ${COMPONENT_NAME} USE_MOCK)
|
||||
idf_build_get_property(target IDF_TARGET)
|
||||
if(${spi_flash_mock})
|
||||
message(STATUS "building SPI FLASH MOCKS")
|
||||
|
||||
set(IDF_PATH $ENV{IDF_PATH})
|
||||
set(CMOCK_DIR "${IDF_PATH}/components/cmock/CMock")
|
||||
set(MOCK_GEN_DIR "${CMAKE_CURRENT_BINARY_DIR}/mocks")
|
||||
|
||||
file(MAKE_DIRECTORY ${MOCK_GEN_DIR})
|
||||
|
||||
set(MOCK_OUTPUT
|
||||
"${MOCK_GEN_DIR}/Mockesp_partition.c" "${MOCK_GEN_DIR}/Mockesp_partition.h"
|
||||
"${MOCK_GEN_DIR}/Mockesp_flash.c" "${MOCK_GEN_DIR}/Mockesp_flash.h"
|
||||
"${MOCK_GEN_DIR}/Mockesp_spi_flash.c" "${MOCK_GEN_DIR}/Mockesp_spi_flash.h")
|
||||
|
||||
set(MOCK_HEADERS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/esp_partition.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/esp_flash.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/esp_spi_flash.h
|
||||
)
|
||||
|
||||
set(ENV{UNITY_DIR} "$ENV{IDF_PATH}/components/cmock/CMock")
|
||||
|
||||
set(include_dirs
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/include"
|
||||
"${MOCK_GEN_DIR}")
|
||||
|
||||
set(srcs "${MOCK_GEN_DIR}/Mockesp_partition.c"
|
||||
"${MOCK_GEN_DIR}/Mockesp_spi_flash.c"
|
||||
"${MOCK_GEN_DIR}/Mockesp_flash.c")
|
||||
|
||||
if(${target} STREQUAL "linux")
|
||||
list(APPEND include_dirs
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../spi_flash/sim/stubs/soc/include")
|
||||
endif()
|
||||
|
||||
idf_component_register(SRCS "${srcs}"
|
||||
INCLUDE_DIRS "${include_dirs}"
|
||||
REQUIRES "cmock")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ruby_found SYMBOLIC
|
||||
COMMAND "ruby" "-v"
|
||||
COMMENT "Try to find ruby. If this fails, you need to install ruby"
|
||||
if(BOOTLOADER_BUILD)
|
||||
set(srcs "${target}/spi_flash_rom_patch.c")
|
||||
set(cache_srcs "")
|
||||
set(priv_requires bootloader_support soc)
|
||||
else()
|
||||
set(cache_srcs
|
||||
"cache_utils.c"
|
||||
"flash_mmap.c"
|
||||
"flash_ops.c"
|
||||
"${target}/flash_ops_${target}.c"
|
||||
)
|
||||
set(srcs
|
||||
"partition.c"
|
||||
"${target}/spi_flash_rom_patch.c"
|
||||
)
|
||||
|
||||
# This command builds the mocks.
|
||||
# First, environment variable UNITY_DIR is set. This is necessary to prevent unity from looking in its own submodule
|
||||
# which doesn't work in our CI yet...
|
||||
# The rest is a straight forward call to cmock.rb, consult cmock's documentation for more information.
|
||||
add_custom_command(
|
||||
OUTPUT ${MOCK_OUTPUT}
|
||||
DEPENDS ruby_found
|
||||
COMMAND ${CMAKE_COMMAND} -E env "UNITY_DIR=${IDF_PATH}/components/unity/unity"
|
||||
ruby
|
||||
${CMOCK_DIR}/lib/cmock.rb
|
||||
-o${CMAKE_CURRENT_SOURCE_DIR}/mock/mock_config.yaml
|
||||
${MOCK_HEADERS}
|
||||
)
|
||||
|
||||
else()
|
||||
if(BOOTLOADER_BUILD)
|
||||
set(srcs "${target}/spi_flash_rom_patch.c")
|
||||
set(cache_srcs "")
|
||||
set(priv_requires bootloader_support soc)
|
||||
else()
|
||||
set(cache_srcs
|
||||
"cache_utils.c"
|
||||
"flash_mmap.c"
|
||||
"flash_ops.c"
|
||||
"${target}/flash_ops_${target}.c"
|
||||
)
|
||||
set(srcs
|
||||
"partition.c"
|
||||
"${target}/spi_flash_rom_patch.c"
|
||||
)
|
||||
|
||||
if(CONFIG_ESPTOOLPY_OCT_FLASH)
|
||||
list(APPEND srcs "${target}/spi_flash_oct_flash_init.c")
|
||||
endif()
|
||||
|
||||
if(CONFIG_IDF_TARGET_ESP32S3)
|
||||
list(APPEND srcs
|
||||
"esp32s3/spi_timing_config.c"
|
||||
"spi_flash_timing_tuning.c")
|
||||
endif()
|
||||
|
||||
# New implementation after IDF v4.0
|
||||
list(APPEND srcs
|
||||
"spi_flash_chip_drivers.c"
|
||||
"spi_flash_chip_generic.c"
|
||||
"spi_flash_chip_issi.c"
|
||||
"spi_flash_chip_mxic.c"
|
||||
"spi_flash_chip_gd.c"
|
||||
"spi_flash_chip_winbond.c"
|
||||
"spi_flash_chip_boya.c"
|
||||
"memspi_host_driver.c")
|
||||
|
||||
list(APPEND cache_srcs
|
||||
"esp_flash_api.c"
|
||||
"esp_flash_spi_init.c"
|
||||
"spi_flash_os_func_app.c"
|
||||
"spi_flash_os_func_noos.c")
|
||||
|
||||
list(APPEND srcs ${cache_srcs})
|
||||
set(priv_requires bootloader_support app_update soc esp_ipc driver)
|
||||
if(CONFIG_ESPTOOLPY_OCT_FLASH)
|
||||
list(APPEND srcs "${target}/spi_flash_oct_flash_init.c")
|
||||
endif()
|
||||
|
||||
idf_component_register(SRCS "${srcs}"
|
||||
REQUIRES hal
|
||||
PRIV_REQUIRES "${priv_requires}"
|
||||
INCLUDE_DIRS include
|
||||
PRIV_INCLUDE_DIRS include/spi_flash
|
||||
LDFRAGMENTS linker.lf)
|
||||
if(CONFIG_IDF_TARGET_ESP32S3)
|
||||
list(APPEND srcs
|
||||
"esp32s3/spi_timing_config.c"
|
||||
"spi_flash_timing_tuning.c")
|
||||
endif()
|
||||
|
||||
# Avoid cache miss by unexpected inlineing when built by -Os
|
||||
set_source_files_properties(${cache_srcs} PROPERTIES COMPILE_FLAGS
|
||||
"-fno-inline-functions -fno-inline-small-functions -fno-inline-functions-called-once")
|
||||
# New implementation after IDF v4.0
|
||||
list(APPEND srcs
|
||||
"spi_flash_chip_drivers.c"
|
||||
"spi_flash_chip_generic.c"
|
||||
"spi_flash_chip_issi.c"
|
||||
"spi_flash_chip_mxic.c"
|
||||
"spi_flash_chip_gd.c"
|
||||
"spi_flash_chip_winbond.c"
|
||||
"spi_flash_chip_boya.c"
|
||||
"memspi_host_driver.c")
|
||||
|
||||
list(APPEND cache_srcs
|
||||
"esp_flash_api.c"
|
||||
"esp_flash_spi_init.c"
|
||||
"spi_flash_os_func_app.c"
|
||||
"spi_flash_os_func_noos.c")
|
||||
|
||||
list(APPEND srcs ${cache_srcs})
|
||||
set(priv_requires bootloader_support app_update soc esp_ipc driver)
|
||||
endif()
|
||||
|
||||
idf_component_register(SRCS "${srcs}"
|
||||
REQUIRES hal
|
||||
PRIV_REQUIRES "${priv_requires}"
|
||||
INCLUDE_DIRS include
|
||||
PRIV_INCLUDE_DIRS include/spi_flash
|
||||
LDFRAGMENTS linker.lf)
|
||||
|
||||
# Avoid cache miss by unexpected inlineing when built by -Os
|
||||
set_source_files_properties(${cache_srcs} PROPERTIES COMPILE_FLAGS
|
||||
"-fno-inline-functions -fno-inline-small-functions -fno-inline-functions-called-once")
|
||||
|
24
tools/mocks/spi_flash/CMakeLists.txt
Normal file
24
tools/mocks/spi_flash/CMakeLists.txt
Normal file
@ -0,0 +1,24 @@
|
||||
# NOTE: This kind of mocking currently works on Linux targets only.
|
||||
# On Espressif chips, too many dependencies are missing at the moment.
|
||||
# Furthermore, this component can only mock the interfaces of
|
||||
# spi_master.h and gpio.h.
|
||||
message(STATUS "building SPI FLASH MOCKS (only esp_partition* API)")
|
||||
|
||||
idf_component_get_property(original_spi_flash_dir spi_flash COMPONENT_OVERRIDEN_DIR)
|
||||
|
||||
idf_build_get_property(target IDF_TARGET)
|
||||
|
||||
set(include_dirs
|
||||
"${original_spi_flash_dir}/include")
|
||||
|
||||
if(${target} STREQUAL "linux")
|
||||
list(APPEND include_dirs
|
||||
"${original_spi_flash_dir}/sim/stubs/soc/include")
|
||||
endif()
|
||||
|
||||
idf_component_mock(INCLUDE_DIRS ${include_dirs}
|
||||
REQUIRES esp_common
|
||||
MOCK_HEADER_FILES
|
||||
${original_spi_flash_dir}/include/esp_partition.h
|
||||
${original_spi_flash_dir}/include/esp_flash.h
|
||||
${original_spi_flash_dir}/include/esp_spi_flash.h)
|
8
tools/mocks/spi_flash/mock/mock_config.yaml
Normal file
8
tools/mocks/spi_flash/mock/mock_config.yaml
Normal file
@ -0,0 +1,8 @@
|
||||
:cmock:
|
||||
:plugins:
|
||||
- expect
|
||||
- expect_any_args
|
||||
- return_thru_ptr
|
||||
- array
|
||||
- ignore_arg
|
||||
- callback
|
Loading…
Reference in New Issue
Block a user