diff --git a/CMakeLists.txt b/CMakeLists.txt index 802138652..6b9fb0c99 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,14 +213,13 @@ if(NOT GTEST_INCDIR OR NOT GTEST_SRCDIR) set(GTEST_URL "https://github.com/google/googletest/archive/release-${GTEST_VERSION}.tar.gz") set(GTEST_ARCHIVE "${RADIO_SRC_DIRECTORY}/tests/gtest-${GTEST_VERSION}.tar.gz") - if (NOT EXISTS "${GTEST_ARCHIVE}") - file(DOWNLOAD "${GTEST_URL}" ${GTEST_ARCHIVE} SHOW_PROGRESS) - endif() - if (NOT EXISTS "${GTEST_SRCDIR}") + file(DOWNLOAD "${GTEST_URL}" ${GTEST_ARCHIVE} SHOW_PROGRESS) execute_process( COMMAND ${CMAKE_COMMAND} -E tar -xf ${GTEST_ARCHIVE} WORKING_DIRECTORY ${RADIO_SRC_DIRECTORY}/tests) + execute_process( + COMMAND ${CMAKE_COMMAND} -E remove -f ${GTEST_ARCHIVE}) endif() endif() diff --git a/radio/src/tests/CMakeLists.txt b/radio/src/tests/CMakeLists.txt index c7e02afe2..316f7a16c 100644 --- a/radio/src/tests/CMakeLists.txt +++ b/radio/src/tests/CMakeLists.txt @@ -6,6 +6,7 @@ if(GTEST_INCDIR AND GTEST_SRCDIR AND Qt5Widgets_FOUND) add_definitions(-DSIMU -DGTESTS) remove_definitions(-DCLI) set(TESTS_PATH ${RADIO_SRC_DIRECTORY}/tests) + set(TESTS_BUILD_PATH ${CMAKE_CURRENT_BINARY_DIR}) configure_file(${RADIO_SRC_DIRECTORY}/tests/location.h.in ${CMAKE_CURRENT_BINARY_DIR}/location.h @ONLY) include_directories(${CMAKE_CURRENT_BINARY_DIR}) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_DEBUG} -O0") @@ -13,21 +14,21 @@ if(GTEST_INCDIR AND GTEST_SRCDIR AND Qt5Widgets_FOUND) use_cxx11() # ensure gnu++11 in CXX_FLAGS with CMake < 3.1 if(PCB STREQUAL X12S OR PCB STREQUAL X10) - add_custom_command( - DEPENDS ${TESTS_PATH}/model_22_x10.otx - ${TESTS_PATH}/model_22_x12s.otx - OUTPUT ${TESTS_PATH}/model_22_x10/RADIO/radio.bin ${TESTS_PATH}/model_22_x10/RADIO/models.txt ${TESTS_PATH}/model_22_x10/MODELS/model1.bin - ${TESTS_PATH}/model_22_x12s/RADIO/radio.bin ${TESTS_PATH}/model_22_x12s/RADIO/models.txt ${TESTS_PATH}/model_22_x12s/MODELS/model1.bin - COMMAND mkdir -p model_22_x10 && cd model_22_x10 && unzip -o -DD ../model_22_x10.otx - COMMAND mkdir -p model_22_x12s && cd model_22_x12s && unzip -o -DD ../model_22_x12s.otx - WORKING_DIRECTORY ${TESTS_PATH} - ) - add_custom_target(x10-model-test-files - DEPENDS ${TESTS_PATH}/model_22_x10/RADIO/radio.bin ${TESTS_PATH}/model_22_x10/RADIO/models.txt ${TESTS_PATH}/model_22_x10/MODELS/model1.bin - ) - add_custom_target(x12s-model-test-files - DEPENDS ${TESTS_PATH}/model_22_x12s/RADIO/radio.bin ${TESTS_PATH}/model_22_x12s/RADIO/models.txt ${TESTS_PATH}/model_22_x12s/MODELS/model1.bin + + set(EXTRACT_MODEL_FILES model_22_x12s model_22_x10) + + foreach(model_file ${EXTRACT_MODEL_FILES}) + add_custom_command( + DEPENDS ${TESTS_PATH}/${model_file}.otx + OUTPUT ${TESTS_BUILD_PATH}/${model_file}/RADIO/radio.bin + COMMAND mkdir -p ${model_file} && cd ${model_file} && unzip -o -q -DD ${TESTS_PATH}/${model_file}.otx >/dev/null + WORKING_DIRECTORY ${TESTS_BUILD_PATH} ) + add_custom_target(${model_file}_files + DEPENDS ${TESTS_BUILD_PATH}/${model_file}/RADIO/radio.bin + ) + set(HORUS_MODEL_FILES ${HORUS_MODEL_FILES} ${model_file}_files) + endforeach() endif() if(WIN32) @@ -54,10 +55,7 @@ if(GTEST_INCDIR AND GTEST_SRCDIR AND Qt5Widgets_FOUND) add_executable(gtests-radio EXCLUDE_FROM_ALL ${TEST_SRC_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/location.h ${RADIO_SRC} ../targets/simu/simpgmspace.cpp ../targets/simu/simueeprom.cpp ../targets/simu/simufatfs.cpp) add_dependencies(gtests-radio ${FIRMWARE_DEPENDENCIES} gtests-radio-lib) if(PCB STREQUAL X12S OR PCB STREQUAL X10) - add_dependencies(gtests-radio - x10-model-test-files - x12s-model-test-files - ) + add_dependencies(gtests-radio ${HORUS_MODEL_FILES}) endif() target_link_libraries(gtests-radio gtests-radio-lib pthread Qt5::Core Qt5::Widgets) message(STATUS "Added optional gtests target") diff --git a/radio/src/tests/conversions.cpp b/radio/src/tests/conversions.cpp index c3bcb895b..cbc778b1f 100644 --- a/radio/src/tests/conversions.cpp +++ b/radio/src/tests/conversions.cpp @@ -33,7 +33,7 @@ void loadEEPROMFile(const char * filename) #if defined(PCBX9DP) TEST(Conversions, ConversionX9DPFrom22) { - loadEEPROMFile(TESTS_PATH "/eeprom_22_x9d+.bin"); + loadEEPROMFile(TESTS_BUILD_PATH "/eeprom_22_x9d+.bin"); eepromOpen(); eeLoadGeneralSettingsData(); @@ -72,7 +72,7 @@ TEST(Conversions, ConversionX9DPFrom22) TEST(Conversions, ConversionX9DPFrom23) { - loadEEPROMFile(TESTS_PATH "/eeprom_23_x9d+.bin"); + loadEEPROMFile(TESTS_BUILD_PATH "/eeprom_23_x9d+.bin"); eepromOpen(); eeLoadGeneralSettingsData(); @@ -116,7 +116,7 @@ TEST(Conversions, ConversionX9DPFrom23) #if defined(PCBXLITE) TEST(Conversions, ConversionXLiteFrom22) { - loadEEPROMFile(TESTS_PATH "/eeprom_22_xlite.bin"); + loadEEPROMFile(TESTS_BUILD_PATH "/eeprom_22_xlite.bin"); eepromOpen(); eeLoadGeneralSettingsData(); @@ -164,7 +164,7 @@ TEST(Conversions, ConversionXLiteFrom22) #if defined(PCBX7) TEST(Conversions, ConversionX7From22) { - loadEEPROMFile(TESTS_PATH "/eeprom_22_x7.bin"); + loadEEPROMFile(TESTS_BUILD_PATH "/eeprom_22_x7.bin"); eepromOpen(); eeLoadGeneralSettingsData(); @@ -217,7 +217,7 @@ TEST(Conversions, ConversionX7From22) #if defined(PCBX10) TEST(Conversions, ConversionX10From22) { - simuFatfsSetPaths(TESTS_PATH "/model_22_x10/", TESTS_PATH "/model_22_x10/"); + simuFatfsSetPaths(TESTS_BUILD_PATH "/model_22_x10/", TESTS_BUILD_PATH "/model_22_x10/"); loadRadioSettings("/RADIO/radio.bin"); loadModel("model1.bin"); @@ -293,7 +293,7 @@ TEST(Conversions, ConversionX10From22) #if defined(PCBX12S) TEST(Conversions, ConversionX12SFrom22) { - simuFatfsSetPaths(TESTS_PATH "/model_22_x12s/", TESTS_PATH "/model_22_x12s/"); + simuFatfsSetPaths(TESTS_BUILD_PATH "/model_22_x12s/", TESTS_BUILD_PATH "/model_22_x12s/"); loadRadioSettings("/RADIO/radio.bin"); loadModel("model1.bin"); diff --git a/radio/src/tests/location.h.in b/radio/src/tests/location.h.in index 359e110b1..e2eeac460 100644 --- a/radio/src/tests/location.h.in +++ b/radio/src/tests/location.h.in @@ -1 +1,2 @@ -#define TESTS_PATH "@TESTS_PATH@" +#define TESTS_PATH "@TESTS_PATH@" +#define TESTS_BUILD_PATH "@TESTS_BUILD_PATH@" diff --git a/radio/src/tests/model_22_x12s.otx b/radio/src/tests/model_22_x12s.otx index 404df3460..ac4033662 100644 Binary files a/radio/src/tests/model_22_x12s.otx and b/radio/src/tests/model_22_x12s.otx differ