From 6bc3f222ef1fa38a281b3fad1fb3adf8dd38eaeb Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Thu, 28 Jan 2016 13:44:27 +0100
Subject: [PATCH] Moved from CMake external data to 'real' files.

Test output files are written to ${CMAKE_BUILD_DIR}/Tests/Data.

As a WIP data files have to be in ${CMAKE_SOURCE_DIR}../data
---
 CMakeLists.txt                           |  6 ---
 SimpleTests/MeshTests/MPI/CMakeLists.txt | 15 ++----
 scripts/cmake/test/AddTest.cmake         | 49 ++++++++------------
 scripts/cmake/test/AddTestTester.cmake   |  6 ---
 scripts/cmake/test/AddTestWrapper.cmake  |  1 +
 scripts/cmake/test/Data.cmake            | 59 ------------------------
 scripts/cmake/test/Test.cmake            |  3 +-
 7 files changed, 26 insertions(+), 113 deletions(-)
 delete mode 100644 scripts/cmake/test/Data.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 756546b9945..e599f0426b7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -189,12 +189,6 @@ if( OGS_BUILD_TESTS AND NOT IS_SUBPROJECT )
 			add_subdirectory( SimpleTests/SolverTests )
 		endif()
 	endif()
-
-	# Create a target 'data', which downloads all referenced data sets into the build tree
-	# This has to be defined after all tests are defined
-	ExternalData_Add_Target(data)
-	set_target_properties(data PROPERTIES EXCLUDE_FROM_ALL 1)
-	add_dependencies(ctest data)
 endif() # OGS_BUILD_TESTS
 
 # The configuration must be called from the source dir and not BaseLib/.
diff --git a/SimpleTests/MeshTests/MPI/CMakeLists.txt b/SimpleTests/MeshTests/MPI/CMakeLists.txt
index f22354771c4..46831d7dea9 100644
--- a/SimpleTests/MeshTests/MPI/CMakeLists.txt
+++ b/SimpleTests/MeshTests/MPI/CMakeLists.txt
@@ -21,16 +21,14 @@ endif()
 
 set(FilePath "DATA{${ExternalData_SOURCE_ROOT}/NodePartitionedMesh/ASCII/,REGEX:.*}")
 set(MPITestParameters -np 3 "${PROJECT_BINARY_DIR}/bin/test_node_partitioned_mesh" "${FilePath}/mesh_3d")
-ExternalData_Add_Test(
-	data
+Add_Test(
 	NAME NodePartitionedMeshTestASCII
 	COMMAND "mpirun" ${MPITestParameters}
 )
 
 set(FilePath "DATA{${ExternalData_SOURCE_ROOT}/NodePartitionedMesh/Binary/,REGEX:.*}")
 set(MPITestParameters -np 3 "${PROJECT_BINARY_DIR}/bin/test_node_partitioned_mesh" "${FilePath}/mesh_3d")
-ExternalData_Add_Test(
-	data
+Add_Test(
 	NAME NodePartitionedMeshTestBinary
 	COMMAND  "mpirun" ${MPITestParameters}
 )
@@ -38,22 +36,19 @@ ExternalData_Add_Test(
 ## FEM#PETSc solver tests
 set(FilePath "DATA{${ExternalData_SOURCE_ROOT}/EllipticPETSc/,REGEX:.*}")
 set(MPITestParameters -np 3 "${PROJECT_BINARY_DIR}/bin/ogs" "${FilePath}/quad_20x10_GroundWaterFlow.prj" --  -gw_ksp_type bcgs -gw_pc_type bjacobi -gw_ksp_atol 1.e-10)
-ExternalData_Add_Test(
-    data
+Add_Test(
     NAME ParallelFEM_GroundWaterFlow2D
     COMMAND  "mpirun" ${MPITestParameters} ${SolverType}
 )
 
 set(MPITestParameters -np 3 "${PROJECT_BINARY_DIR}/bin/ogs" "${FilePath}/cube_1e3.prj" --  -gw_ksp_type bcgs -gw_pc_type bjacobi -gw_ksp_atol 1.e-10)
-ExternalData_Add_Test(
-    data
+Add_Test(
     NAME ParallelFEM_GroundWaterFlow3D_DirichletBC
     COMMAND  "mpirun" ${MPITestParameters} ${SolverType}
 )
 
 set(MPITestParameters -np 3 "${PROJECT_BINARY_DIR}/bin/ogs" "${FilePath}/cube_1e3_neumann.prj" --  -gw_ksp_type bcgs -gw_pc_type bjacobi -gw_ksp_atol 1.e-10)
-ExternalData_Add_Test(
-    data
+Add_Test(
     NAME ParallelFEM_GroundWaterFlow3D_NeumannBC
     COMMAND  "mpirun" ${MPITestParameters} ${SolverType}
 )
diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake
index 25907696c85..58db2b22a4c 100644
--- a/scripts/cmake/test/AddTest.cmake
+++ b/scripts/cmake/test/AddTest.cmake
@@ -31,13 +31,22 @@
 
 function (AddTest)
 
+	set(ExternalData_SOURCE_ROOT ${CMAKE_SOURCE_DIR}/../data)
+	set(ExternalData_BINARY_ROOT ${CMAKE_BINARY_DIR}/Tests/Data)
+
 	# parse arguments
 	set(options NONE)
 	set(oneValueArgs EXECUTABLE PATH NAME WRAPPER TESTER)
 	set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA WRAPPER_ARGS)
 	cmake_parse_arguments(AddTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-	set(AddTest_SOURCE_PATH "${ExternalData_SOURCE_ROOT}/${AddTest_PATH}")
-	set(AddTest_BINARY_PATH "${ExternalData_BINARY_ROOT}/${AddTest_PATH}")
+
+	# TODO set to submodule
+	set(AddTest_SOURCE_PATH "${CMAKE_SOURCE_DIR}/../data/${AddTest_PATH}")
+	set(AddTest_BINARY_PATH "${CMAKE_BINARY_DIR}/Tests/Data/${AddTest_PATH}")
+	file(MAKE_DIRECTORY ${AddTest_BINARY_PATH})
+	file(TO_NATIVE_PATH "${AddTest_BINARY_PATH}" AddTest_BINARY_PATH_NATIVE)
+
+	set(AddTest_EXECUTABLE_ARGS "${AddTest_EXECUTABLE_ARGS} -o ${AddTest_BINARY_PATH_NATIVE}")
 
 	# set defaults
 	if(NOT AddTest_EXECUTABLE)
@@ -48,20 +57,6 @@ function (AddTest)
 		set(AddTest_WRAPPER time)
 	endif()
 
-	# replace arguments which reference test data files with the correct DATA{}-path
-	foreach(ARG ${AddTest_EXECUTABLE_ARGS})
-		string(REGEX MATCH ".*${ARG}.*" ARG_FOUND ${AddTest_DATA} )
-		if(ARG_FOUND)
-			set(AddTest_EXECUTABLE_ARGS_PARSED ${AddTest_EXECUTABLE_ARGS_PARSED} DATA{${AddTest_SOURCE_PATH}/${ARG}})
-		else()
-			set(AddTest_EXECUTABLE_ARGS_PARSED ${AddTest_EXECUTABLE_ARGS_PARSED} ${ARG}})
-		endif()
-	endforeach()
-
-	string(REPLACE ";" "," AddTest_DATA "${AddTest_DATA}")
-	set(AddTest_DATA "${AddTest_SOURCE_PATH}/${AddTest_DATA}")
-
-
 	# --- Implement wrappers ---
 	# check requirements, disable if not met
 	if(AddTest_WRAPPER STREQUAL "time" AND NOT TIME_TOOL_PATH)
@@ -124,7 +119,9 @@ function (AddTest)
 			get_filename_component(FILE_NAME ${FILE} NAME_WE)
 			get_filename_component(FILE_EXT ${FILE} EXT)
 			set(FILE_EXPECTED ${FILE_NAME}_expected${FILE_EXT})
-			set(TESTER_COMMAND ${TESTER_COMMAND} "${SELECTED_DIFF_TOOL_PATH} ${TESTER_ARGS} DATA{${AddTest_SOURCE_PATH}/${FILE_EXPECTED}} ${AddTest_BINARY_PATH}/${FILE}")
+			set(TESTER_COMMAND ${TESTER_COMMAND} "${SELECTED_DIFF_TOOL_PATH} \
+				${TESTER_ARGS} ${AddTest_SOURCE_PATH}/${FILE_EXPECTED} \
+				${AddTest_BINARY_PATH}/${FILE}")
 			if(AddTest_DIFF_DATA_PARSED)
 				set(AddTest_DIFF_DATA_PARSED "${AddTest_DIFF_DATA_PARSED},${FILE_EXPECTED}")
 			else()
@@ -143,7 +140,8 @@ function (AddTest)
 		list(GET AddTest_DIFF_DATA 2 NAME_B)
 
 		set(TESTER_COMMAND ${TESTER_COMMAND} "${SELECTED_DIFF_TOOL_PATH} \
-			${AddTest_BINARY_PATH}/${VTK_FILE} -a ${NAME_A} -b ${NAME_B} \
+			${AddTest_BINARY_PATH}/${VTK_FILE} \
+			-a ${NAME_A} -b ${NAME_B} \
 			${TESTER_ARGS}")
 		string(REPLACE ";" " && " TESTER_COMMAND "${TESTER_COMMAND}")
 	elseif(tester STREQUAL "memcheck")
@@ -158,17 +156,14 @@ function (AddTest)
 	endif()
 
 	# Run the wrapper
-	ExternalData_Add_Test(data
+	Add_Test(
 		NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}"
 		COMMAND ${CMAKE_COMMAND}
 		-DEXECUTABLE=${AddTest_EXECUTABLE_PARSED}
-		-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS_PARSED}
+		-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}
 		-Dcase_path=${AddTest_SOURCE_PATH}
-		-Dcase_name=${AddTest_NAME}
 		-DWRAPPER_COMMAND=${WRAPPER_COMMAND}
-		-DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
 		-P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake
-		DATA{${AddTest_DATA}}
 	)
 
 	if(NOT AddTest_TESTER)
@@ -177,13 +172,11 @@ function (AddTest)
 
 	# Run the tester
 	if(AddTest_TESTER STREQUAL "diff" OR AddTest_TESTER STREQUAL "numdiff")
-		ExternalData_Add_Test(data
+		Add_Test(
 			NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}-${AddTest_TESTER}"
 			COMMAND ${CMAKE_COMMAND}
 			-Dcase_path=${AddTest_SOURCE_PATH}
-			-Dcase_name=${AddTest_NAME}
 			-DTESTER_COMMAND=${TESTER_COMMAND}
-			-DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
 			-P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake
 			DATA{${AddTest_DIFF_DATA_PARSED}}
 		)
@@ -192,9 +185,7 @@ function (AddTest)
 			NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}-${AddTest_TESTER}"
 			COMMAND ${CMAKE_COMMAND}
 			-Dcase_path=${AddTest_SOURCE_PATH}
-			-Dcase_name=${AddTest_NAME}
 			-DTESTER_COMMAND=${TESTER_COMMAND}
-			-DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
 			-P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake
 		)
 	else()
@@ -202,9 +193,7 @@ function (AddTest)
 			NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}-${AddTest_TESTER}"
 			COMMAND ${CMAKE_COMMAND}
 			-Dcase_path=${AddTest_SOURCE_PATH}
-			-Dcase_name=${AddTest_NAME}
 			-DTESTER_COMMAND=${TESTER_COMMAND}
-			-DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
 			-P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake
 		)
 	endif()
diff --git a/scripts/cmake/test/AddTestTester.cmake b/scripts/cmake/test/AddTestTester.cmake
index c91e1380cad..15adfbe41ef 100644
--- a/scripts/cmake/test/AddTestTester.cmake
+++ b/scripts/cmake/test/AddTestTester.cmake
@@ -1,9 +1,3 @@
-#message("tester: ${TESTER_COMMAND}")
-#string(REPLACE " " ";" TESTER_COMMAND ${TESTER_COMMAND})
-#set(list ${TESTER_COMMAND})
-#message("tester: ${list}")
-
-
 execute_process(
 	COMMAND bash -c ${TESTER_COMMAND}
 	WORKING_DIRECTORY ${case_path}
diff --git a/scripts/cmake/test/AddTestWrapper.cmake b/scripts/cmake/test/AddTestWrapper.cmake
index 54cfd25710e..fe52d89083a 100644
--- a/scripts/cmake/test/AddTestWrapper.cmake
+++ b/scripts/cmake/test/AddTestWrapper.cmake
@@ -1,4 +1,5 @@
 string(REPLACE " " ";" WRAPPER_COMMAND ${WRAPPER_COMMAND})
+string(REPLACE " " ";" EXECUTABLE_ARGS ${EXECUTABLE_ARGS})
 execute_process(
 	COMMAND ${WRAPPER_COMMAND} ${EXECUTABLE} ${EXECUTABLE_ARGS}
 	WORKING_DIRECTORY ${case_path}
diff --git a/scripts/cmake/test/Data.cmake b/scripts/cmake/test/Data.cmake
deleted file mode 100644
index 7cbdb55e431..00000000000
--- a/scripts/cmake/test/Data.cmake
+++ /dev/null
@@ -1,59 +0,0 @@
-include(ExternalData)
-
-set(ExternalData_LOCAL_FOLDER ogs6-data)
-
-set(ExternalData_OBJECT_STORES "${ExternalData_OBJECT_STORES_DEFAULT}" CACHE STRING
-	"Semicolon-separated list of local directories holding test data files in the layout %(algo)/%(hash).")
-mark_as_advanced(ExternalData_OBJECT_STORES)
-if(NOT ExternalData_OBJECT_STORES)
-	set(ExternalData_OBJECT_STORES "${CMAKE_SOURCE_DIR}/../${ExternalData_LOCAL_FOLDER}")
-	file(MAKE_DIRECTORY "${ExternalData_OBJECT_STORES}")
-endif()
-
-set(ExternalData_SOURCE_ROOT ${CMAKE_SOURCE_DIR}/Tests/Data)
-set(ExternalData_BINARY_ROOT ${CMAKE_BINARY_DIR}/Tests/Data)
-set(ExternalData_LINK_CONTENT MD5)
-
-# Amazon S3 config
-set(ExternalData_S3_Bucket opengeosys)
-
-set(ExternalData_URL_TEMPLATES
-	"http://www.opengeosys.org/images/dev/%(algo)/%(hash)"
-	"http://${ExternalData_S3_Bucket}.s3.amazonaws.com/${ExternalData_LOCAL_FOLDER}/%(algo)/%(hash)"
-)
-
-add_custom_target(
-	move-data
-	COMMAND ${CMAKE_COMMAND}
-	-DExternalData_SOURCE_ROOT=${ExternalData_SOURCE_ROOT}
-	-DExternalData_LINK_CONTENT=${ExternalData_LINK_CONTENT}
-	-DExternalData_OBJECT_STORES=${ExternalData_OBJECT_STORES}
-	-P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/MoveDataToStore.cmake
-	VERBATIM
-)
-
-if(S3CMD_TOOL_PATH)
-	add_custom_target(
-		upload-data
-		COMMAND ${S3CMD_TOOL_PATH} sync --acl-public --skip-existing --no-check-md5
-			${CMAKE_SOURCE_DIR}/../${ExternalData_LOCAL_FOLDER} s3://${ExternalData_S3_Bucket}
-	)
-endif()
-
-if(HOSTNAME STREQUAL "envinf1.eve.ufz.de")
-	add_custom_target(
-		sync-data
-		COMMAND ${CMAKE_COMMAND} -E copy_directory
-		${CMAKE_SOURCE_DIR}/../${ExternalData_LOCAL_FOLDER}
-		/data/ogs/${ExternalData_LOCAL_FOLDER}
-	)
-	if(CURL_TOOL_PATH)
-		add_custom_command(
-			TARGET sync-data POST_BUILD
-			COMMAND ${CURL_TOOL_PATH} --insecure 'https://svn.ufz.de:8443/buildByToken/build?job=Tmp_Trigger&token=ogsbuild&cause=Triggered_by_sync-data_target_on_envinf1'
-			COMMENT "Triggered sync to opengeosys.org, see https://svn.ufz.de:8443/job/OGS-6/job/SyncExternalData"
-		)
-	else()
-		message(STATUS "curl tool was not found but is required for the sync-data target!")
-	endif()
-endif()
diff --git a/scripts/cmake/test/Test.cmake b/scripts/cmake/test/Test.cmake
index d1d596a092b..3e6c86b3092 100644
--- a/scripts/cmake/test/Test.cmake
+++ b/scripts/cmake/test/Test.cmake
@@ -40,7 +40,6 @@ configure_file(
 )
 
 include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/test/AddTest.cmake)
-include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/test/Data.cmake)
 
 if(CMAKE_CONFIGURATION_TYPES)
 	set(CONFIG_PARAMETER --build-config "$<CONFIGURATION>")
@@ -53,7 +52,7 @@ add_custom_target(
 	--output-on-failure --output-log Tests/ctest.log
 	--exclude-regex LARGE
 	${CONFIG_PARAMETER} --parallel ${NUM_PROCESSORS} --test-action test
-	DEPENDS data ogs vtkdiff ctest-cleanup
+	DEPENDS ogs vtkdiff ctest-cleanup
 )
 add_custom_target(ctest-large-cleanup ${CMAKE_COMMAND} -E remove Tests/ctest-large.log)
 add_custom_target(
-- 
GitLab