Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter

- 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
This commit is contained in:
Eric F
2026-06-08 00:38:27 -04:00
parent 468cfeaa50
commit d398a6ced2
7326 changed files with 1177561 additions and 7 deletions

View File

@@ -0,0 +1,138 @@
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()