From db330fdd31ad5c27fdb75b214d15f47ad497fef8 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Mon, 6 Feb 2017 21:48:51 +0100
Subject: [PATCH] [CMake] Introduced optional VIS parameter on AddTest().

Specify one or more files which be converted to vtk.js if
vtkDataConverter is found.

https://github.com/Kitware/vtk-js/issues/3#issuecomment-230389315
---
 ProcessLib/GroundwaterFlow/CMakeLists.txt | 4 ++--
 scripts/cmake/Find.cmake                  | 2 ++
 scripts/cmake/test/AddTest.cmake          | 6 +++++-
 scripts/cmake/test/AddTestTester.cmake    | 7 +++++++
 4 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/ProcessLib/GroundwaterFlow/CMakeLists.txt b/ProcessLib/GroundwaterFlow/CMakeLists.txt
index fb16a642ffd..70d2e9f41e1 100644
--- a/ProcessLib/GroundwaterFlow/CMakeLists.txt
+++ b/ProcessLib/GroundwaterFlow/CMakeLists.txt
@@ -34,6 +34,8 @@ foreach(mesh_size 1e0 1e1 1e2 1e3)
         ABSTOL 1e-1 RELTOL 1e-1
         DIFF_DATA
         cube_1x1x1_hex_${mesh_size}.vtu cube_${mesh_size}_neumann_pcs_0_ts_1_t_1.000000.vtu D1_left_front_N1_right pressure
+        VIS
+        cube_${mesh_size}_neumann_pcs_0_ts_1_t_1.000000.vtu
     )
 endforeach()
 
@@ -558,5 +560,3 @@ foreach(mesh_size 1e1)
         line_1_line_${mesh_size}.vtu line_${mesh_size}_neumann_pcs_0_ts_1_t_1_000000_0.vtu D1_left_N1_right pressure
     )
 endforeach()
-
-
diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index ed14e951f76..16901c57036 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -64,6 +64,8 @@ if(CCACHE_FOUND)
     endif()
 endif(CCACHE_FOUND)
 
+find_program(VTKJS_CONVERTER vtkDataConverter)
+
 ######################
 ### Find libraries ###
 ######################
diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake
index 733de255e47..5a1c83c2330 100644
--- a/scripts/cmake/test/AddTest.cmake
+++ b/scripts/cmake/test/AddTest.cmake
@@ -15,6 +15,7 @@
 #   REQUIREMENTS # optional simple boolean expression which has to be true to
 #                  enable the test, e.g.
 #                  OGS_USE_PETSC AND (OGS_USE_EIGEN OR OGS_USE_LIS)
+#   VIS <vtu output file(s)> # optional for documentation
 # )
 #
 # Conditional arguments:
@@ -36,7 +37,7 @@ function (AddTest)
     # parse arguments
     set(options NONE)
     set(oneValueArgs EXECUTABLE PATH NAME WRAPPER TESTER ABSTOL RELTOL)
-    set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA WRAPPER_ARGS REQUIREMENTS)
+    set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA WRAPPER_ARGS REQUIREMENTS VIS)
     cmake_parse_arguments(AddTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 
 
@@ -214,6 +215,9 @@ function (AddTest)
         COMMAND ${CMAKE_COMMAND}
         -Dcase_path=${AddTest_SOURCE_PATH}
         -DTESTER_COMMAND=${TESTER_COMMAND}
+        -DVTKJS_CONVERTER=${VTKJS_CONVERTER}
+        -DBINARY_PATH=${AddTest_BINARY_PATH}
+        "-DVIS_FILES=${AddTest_VIS}"
         -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake
     )
     set_tests_properties(${TESTER_NAME} PROPERTIES DEPENDS ${TEST_NAME})
diff --git a/scripts/cmake/test/AddTestTester.cmake b/scripts/cmake/test/AddTestTester.cmake
index 806bf527f8b..6fdd3472fec 100644
--- a/scripts/cmake/test/AddTestTester.cmake
+++ b/scripts/cmake/test/AddTestTester.cmake
@@ -17,3 +17,10 @@ endif()
 if(NOT EXIT_CODE STREQUAL "0")
     message(FATAL_ERROR "Error exit code: ${EXIT_CODE}")
 endif()
+
+# Run vtk.js converter
+foreach(FILE ${VIS_FILES})
+    execute_process(
+        COMMAND ${VTKJS_CONVERTER} -e -i ${BINARY_PATH}/${FILE} -o ${BINARY_PATH}/vtk-js
+    )
+endforeach()
-- 
GitLab