- CitrineOS core extracted (CSMS OCPP 2.0.1) - OpenOCPP extracted (firmware OCPP 1.6J/2.0.1) - ShapeShifter library installed (pip install -e) - ShapeShifter specification extracted - EVerest extracted TODO updated with progress
139 lines
4.6 KiB
CMake
139 lines
4.6 KiB
CMake
function (setup_test_directory)
|
|
# NOTE (aw): this function got quite complex, it could be simpler if
|
|
# the tests would use a more consistent directory layout
|
|
|
|
set(options
|
|
USE_FILESYSTEM_HIERARCHY_STANDARD
|
|
)
|
|
|
|
set(one_value_args
|
|
CONFIG
|
|
USER_CONFIG
|
|
)
|
|
set(multi_value_args
|
|
TYPE_FILES
|
|
MODULES
|
|
INTERFACE_FILES
|
|
)
|
|
|
|
cmake_parse_arguments(arg "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
|
|
|
|
if (NOT arg_UNPARSED_ARGUMENTS)
|
|
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} requires first argument to be the name")
|
|
endif()
|
|
|
|
list(GET arg_UNPARSED_ARGUMENTS 0 NAME)
|
|
if (NOT NAME STREQUAL ARGV0)
|
|
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} unexpected argument: ${NAME}")
|
|
endif()
|
|
|
|
list(LENGTH arg_UNPARSED_ARGUMENTS UNPARSED_ARGUMENTS_COUNT)
|
|
if (UNPARSED_ARGUMENTS_COUNT GREATER 1)
|
|
list(GET arg_UNPARSED_ARGUMENTS 1 MODULE)
|
|
if (NOT MODULE STREQUAL ARGV1)
|
|
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} unexpected argument: ${MODULE}")
|
|
endif()
|
|
endif()
|
|
|
|
if (UNPARSED_ARGUMENTS_COUNT GREATER 2)
|
|
list(GET arg_UNPARSED_ARGUMENTS 2 INTERFACE_FILE)
|
|
if (NOT INTERFACE_FILE STREQUAL ARGV2)
|
|
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} unexpected argument: ${INTERFACE_FILE}")
|
|
endif()
|
|
endif()
|
|
|
|
if (UNPARSED_ARGUMENTS_COUNT GREATER 3)
|
|
list(GET arg_UNPARSED_ARGUMENTS 3 UNKNOWN_ARG)
|
|
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} unknown argument: ${UNKNOWN_ARG}")
|
|
endif()
|
|
|
|
set(DIR ${CMAKE_CURRENT_BINARY_DIR}/${NAME})
|
|
file(MAKE_DIRECTORY "${DIR}")
|
|
|
|
set(SHARE_EVEREST_DIR ${DIR})
|
|
if (arg_USE_FILESYSTEM_HIERARCHY_STANDARD)
|
|
set(SHARE_EVEREST_DIR "${DIR}/share/everest")
|
|
endif ()
|
|
file(MAKE_DIRECTORY "${SHARE_EVEREST_DIR}")
|
|
|
|
file(COPY ${PROJECT_SOURCE_DIR}/schemas/migrations DESTINATION ${DIR}/share/everest/)
|
|
|
|
set (SCHEMAS_DIR "${SHARE_EVEREST_DIR}/schemas")
|
|
file(MAKE_DIRECTORY "${SCHEMAS_DIR}")
|
|
file(COPY ${PROJECT_SOURCE_DIR}/schemas/ DESTINATION ${SCHEMAS_DIR}/)
|
|
|
|
set (INTERFACES_DIR "${SHARE_EVEREST_DIR}/interfaces")
|
|
file(MAKE_DIRECTORY "${INTERFACES_DIR}")
|
|
|
|
set (TYPES_DIR "${SHARE_EVEREST_DIR}/types")
|
|
file(MAKE_DIRECTORY "${TYPES_DIR}")
|
|
|
|
|
|
file(MAKE_DIRECTORY "${SHARE_EVEREST_DIR}/errors")
|
|
file(MAKE_DIRECTORY "${SHARE_EVEREST_DIR}/www")
|
|
|
|
|
|
set(MODULES_DIR "${DIR}/modules")
|
|
if (arg_USE_FILESYSTEM_HIERARCHY_STANDARD)
|
|
set(MODULES_DIR "${DIR}/libexec/everest/modules")
|
|
endif()
|
|
file(MAKE_DIRECTORY "${MODULES_DIR}")
|
|
|
|
set(CONFIG_DIR ${DIR})
|
|
if (arg_USE_FILESYSTEM_HIERARCHY_STANDARD)
|
|
set(CONFIG_DIR "${DIR}/etc/everest")
|
|
endif ()
|
|
file(MAKE_DIRECTORY "${CONFIG_DIR}")
|
|
|
|
if (arg_USE_FILESYSTEM_HIERARCHY_STANDARD)
|
|
configure_file(test_logging.ini ${CONFIG_DIR}/default_logging.cfg COPYONLY)
|
|
else ()
|
|
configure_file(test_logging.ini ${CONFIG_DIR}/logging.ini COPYONLY)
|
|
endif()
|
|
|
|
# FIXME (aw): these two need to exist anyway
|
|
file(MAKE_DIRECTORY "${DIR}/etc/everest")
|
|
file(MAKE_DIRECTORY "${DIR}/share/everest")
|
|
|
|
|
|
# FIXME (aw): config files get special directory treatment, this
|
|
# should be consistent too (tests need to be changed)
|
|
if (arg_CONFIG)
|
|
# NOTE (aw): this is for json config file compatibility, but
|
|
# this is probably not in use anymore and should be removed
|
|
get_filename_component(CONFIG_EXT ${arg_CONFIG} LAST_EXT)
|
|
configure_file(test_configs/${arg_CONFIG} ${DIR}/config${CONFIG_EXT} COPYONLY)
|
|
else ()
|
|
configure_file(test_configs/${NAME}_config.yaml ${DIR}/config.yaml COPYONLY)
|
|
endif()
|
|
|
|
if (arg_USER_CONFIG)
|
|
configure_file(test_configs/${arg_USER_CONFIG} ${DIR}/user-config/config.yaml COPYONLY)
|
|
endif()
|
|
|
|
if (MODULE)
|
|
file(COPY test_modules/${MODULE} DESTINATION ${MODULES_DIR})
|
|
endif()
|
|
|
|
if (INTERFACE_FILE)
|
|
file(COPY test_interfaces/${INTERFACE_FILE}.yaml DESTINATION ${INTERFACES_DIR}/)
|
|
endif()
|
|
|
|
if (arg_TYPE_FILES)
|
|
foreach(TYPE_FILE ${arg_TYPE_FILES})
|
|
file(COPY test_types/${TYPE_FILE} DESTINATION ${TYPES_DIR}/)
|
|
endforeach()
|
|
endif()
|
|
if (arg_MODULES)
|
|
foreach(MODULE ${arg_MODULES})
|
|
file(COPY test_modules/${MODULE} DESTINATION ${MODULES_DIR})
|
|
endforeach()
|
|
endif()
|
|
if (arg_INTERFACE_FILES)
|
|
foreach(INTERFACE_FILE ${arg_INTERFACE_FILES})
|
|
file(COPY test_interfaces/${INTERFACE_FILE}.yaml DESTINATION ${INTERFACES_DIR}/)
|
|
endforeach()
|
|
endif()
|
|
|
|
endfunction()
|