From 153d03c79f8fae53a0df8e73e44eb641b800b820 Mon Sep 17 00:00:00 2001 From: Daljit Singh Date: Tue, 27 Aug 2024 15:41:55 +0100 Subject: [PATCH 1/4] Use ExternalProject to download test data at build time We now download testing data at build time instead of cloning the data as a git submodule. The user can also provide local git repos for the data by specifying the MRTRIX_BINARIES_DATA_DIR and MRTRIX_SCRIPTS_DATA_DIR environment variables during the configuration stage. This prevents from polluting the source directory and it's more in line with CMake's philosophy. --- testing/CMakeLists.txt | 43 +++++++++++++++++++++++++++++++++ testing/binaries/CMakeLists.txt | 4 +-- testing/scripts/CMakeLists.txt | 4 +-- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt index 94e2543a0d..aa1a700e63 100644 --- a/testing/CMakeLists.txt +++ b/testing/CMakeLists.txt @@ -1,3 +1,46 @@ +if(NOT DEFINED ENV{MRTRIX_BINARIES_DATA_DIR}) + set(mrtrix_binaries_data_url "https://github.com/mrtrix3/test_data.git") +else() + set(mrtrix_binaries_data_url $ENV{MRTRIX_BINARIES_DATA_DIR}) +endif() + +if(NOT DEFINED ENV{MRTRIX_SCRIPTS_DATA_DIR}) + set(mrtrix_scripts_data_url "https://github.com/mrtrix3/script_test_data.git") +else() + set(mrtrix_scripts_data_url $ENV{MRTRIX_SCRIPTS_DATA_DIR}) +endif() + +include(ExternalProject) +ExternalProject_Add(BinariesTestData + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/binaries_data + GIT_REPOSITORY ${mrtrix_binaries_data_url} + GIT_TAG f6e117e99481331d0bc39685b4aa122844ca885e + GIT_PROGRESS TRUE + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + LOG_DOWNLOAD ON +) + +ExternalProject_Add(ScriptsTestData + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/scripts_data + GIT_REPOSITORY ${mrtrix_scripts_data_url} + GIT_TAG 4f0d6653e994212d3653660a4f9163437956c989 + GIT_PROGRESS TRUE + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + LOG_DOWNLOAD ON +) + +set(BINARY_DATA_DIR + ${CMAKE_CURRENT_BINARY_DIR}/binaries_data/src/BinariesTestData +) + +set(SCRIPT_DATA_DIR + ${CMAKE_CURRENT_BINARY_DIR}/scripts_data/src/ScriptsTestData +) + add_subdirectory(binaries) add_subdirectory(lib) add_subdirectory(scripts) diff --git a/testing/binaries/CMakeLists.txt b/testing/binaries/CMakeLists.txt index 13a5f69156..e3a4839d40 100644 --- a/testing/binaries/CMakeLists.txt +++ b/testing/binaries/CMakeLists.txt @@ -1,7 +1,5 @@ find_program(BASH bash) -set(DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data) - include(DirsToUnix) set(EXEC_DIRS ${CMAKE_CURRENT_BINARY_DIR}) list(APPEND EXEC_DIRS ${PROJECT_BINARY_DIR}/bin) @@ -23,7 +21,7 @@ function(add_bash_binary_test file_path) add_bash_test( FILE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tests/${file_path}" PREFIX "${folder_name}" - WORKING_DIRECTORY ${DATA_DIR} + WORKING_DIRECTORY ${BINARY_DATA_DIR} EXEC_DIRECTORIES "${EXEC_DIRS}" LABELS "binary;${folder_name};${extra_labels}" ) diff --git a/testing/scripts/CMakeLists.txt b/testing/scripts/CMakeLists.txt index 5ad1f0c9af..9a0b9fad51 100644 --- a/testing/scripts/CMakeLists.txt +++ b/testing/scripts/CMakeLists.txt @@ -1,7 +1,5 @@ find_program(BASH bash) -set(DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data) - include(DirsToUnix) set(EXEC_DIRS ${CMAKE_CURRENT_BINARY_DIR}) list(APPEND EXEC_DIRS ${PROJECT_BINARY_DIR}/bin) @@ -23,7 +21,7 @@ function(add_bash_script_test file_path) add_bash_test( FILE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tests/${file_path}" PREFIX "${folder_name}" - WORKING_DIRECTORY ${DATA_DIR} + WORKING_DIRECTORY ${SCRIPT_DATA_DIR} EXEC_DIRECTORIES "${EXEC_DIRS}" LABELS "script;${folder_name};${extra_labels}" ) From 5fba41712a18adb4c5ca6cb869472643497b3ae8 Mon Sep 17 00:00:00 2001 From: Daljit Singh Date: Wed, 28 Aug 2024 08:51:49 +0100 Subject: [PATCH 2/4] Remove testing data submodules --- .gitmodules | 8 -------- testing/binaries/data | 1 - testing/scripts/data | 1 - 3 files changed, 10 deletions(-) delete mode 160000 testing/binaries/data delete mode 160000 testing/scripts/data diff --git a/.gitmodules b/.gitmodules index 2d89398ce1..e69de29bb2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,8 +0,0 @@ -[submodule "testing/data"] - path = testing/binaries/data - url = https://github.com/MRtrix3/test_data - ignore = dirty -[submodule "testing/script_data"] - path = testing/scripts/data - url = https://github.com/MRtrix3/script_test_data.git - ignore = dirty \ No newline at end of file diff --git a/testing/binaries/data b/testing/binaries/data deleted file mode 160000 index 2169ebc060..0000000000 --- a/testing/binaries/data +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2169ebc06040a0b1380017f5f2a11d6380c69922 diff --git a/testing/scripts/data b/testing/scripts/data deleted file mode 160000 index 76f47633cd..0000000000 --- a/testing/scripts/data +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 76f47633cd0a37e901c42320f4540ecaffd51367 From 3a7d2f719a4297baefe95fe5e035961884e0e0ad Mon Sep 17 00:00:00 2001 From: Daljit Singh Date: Tue, 10 Sep 2024 23:15:43 +0100 Subject: [PATCH 3/4] Update commit hashes for testing data repos --- testing/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt index aa1a700e63..83432bfe9c 100644 --- a/testing/CMakeLists.txt +++ b/testing/CMakeLists.txt @@ -14,7 +14,7 @@ include(ExternalProject) ExternalProject_Add(BinariesTestData PREFIX ${CMAKE_CURRENT_BINARY_DIR}/binaries_data GIT_REPOSITORY ${mrtrix_binaries_data_url} - GIT_TAG f6e117e99481331d0bc39685b4aa122844ca885e + GIT_TAG 2169ebc06040a0b1380017f5f2a11d6380c69922 GIT_PROGRESS TRUE CONFIGURE_COMMAND "" BUILD_COMMAND "" @@ -25,7 +25,7 @@ ExternalProject_Add(BinariesTestData ExternalProject_Add(ScriptsTestData PREFIX ${CMAKE_CURRENT_BINARY_DIR}/scripts_data GIT_REPOSITORY ${mrtrix_scripts_data_url} - GIT_TAG 4f0d6653e994212d3653660a4f9163437956c989 + GIT_TAG 76f47633cd0a37e901c42320f4540ecaffd51367 GIT_PROGRESS TRUE CONFIGURE_COMMAND "" BUILD_COMMAND "" From 91ac695aaa992f4606e391b69628a9cee8254d2e Mon Sep 17 00:00:00 2001 From: Daljit Singh Date: Tue, 10 Sep 2024 23:10:26 +0100 Subject: [PATCH 4/4] Log location of local testing data directories --- testing/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt index 83432bfe9c..ed43c4ed09 100644 --- a/testing/CMakeLists.txt +++ b/testing/CMakeLists.txt @@ -2,12 +2,14 @@ if(NOT DEFINED ENV{MRTRIX_BINARIES_DATA_DIR}) set(mrtrix_binaries_data_url "https://github.com/mrtrix3/test_data.git") else() set(mrtrix_binaries_data_url $ENV{MRTRIX_BINARIES_DATA_DIR}) + message(STATUS "Using binaries data from $ENV{MRTRIX_BINARIES_DATA_DIR}") endif() if(NOT DEFINED ENV{MRTRIX_SCRIPTS_DATA_DIR}) set(mrtrix_scripts_data_url "https://github.com/mrtrix3/script_test_data.git") else() set(mrtrix_scripts_data_url $ENV{MRTRIX_SCRIPTS_DATA_DIR}) + message(STATUS "Using scripts data from $ENV{MRTRIX_SCRIPTS_DATA_DIR}") endif() include(ExternalProject)