60d68cd
From 2382618c2de489b860228b74283a581b4333030d Mon Sep 17 00:00:00 2001
60d68cd
From: Sandro Mani <manisandro@gmail.com>
60d68cd
Date: Fri, 8 Apr 2016 23:23:20 +0200
60d68cd
Subject: [PATCH 4/4] Correctly build and run java test
60d68cd
60d68cd
---
60d68cd
 cmake/JUnit.cmake         | 38 ++++++++++++++++++++++++++++++++++++++
60d68cd
 tests/swig/CMakeLists.txt | 23 +++++++++++++++++------
60d68cd
 2 files changed, 55 insertions(+), 6 deletions(-)
60d68cd
 create mode 100644 cmake/JUnit.cmake
60d68cd
60d68cd
diff --git a/cmake/JUnit.cmake b/cmake/JUnit.cmake
60d68cd
new file mode 100644
60d68cd
index 0000000..3c114fd
60d68cd
--- /dev/null
60d68cd
+++ b/cmake/JUnit.cmake
60d68cd
@@ -0,0 +1,38 @@
60d68cd
+include(FindJava)
60d68cd
+
60d68cd
+#   add_junit_test(<target name> 
60d68cd
+#       CLASSPATH [path1 ...]
60d68cd
+#       TESTS [class1 ...]
60d68cd
+#   )
60d68cd
+function(add_junit_test TARGET_NAME)
60d68cd
+
60d68cd
+   if (WIN32 AND NOT CYGWIN)
60d68cd
+      set(SEPARATOR ";")
60d68cd
+   else (WIN32 AND NOT CYGWIN)
60d68cd
+      set(SEPARATOR ":")
60d68cd
+   endif(WIN32 AND NOT CYGWIN)
60d68cd
+
60d68cd
+   foreach (ARG ${ARGN})
60d68cd
+      if (ARG MATCHES "CLASSPATH" OR ARG MATCHES "TESTS" OR ARG MATCHES "JVMARGS")
60d68cd
+         set(TYPE ${ARG})
60d68cd
+
60d68cd
+      else ()
60d68cd
+
60d68cd
+         if (TYPE MATCHES "CLASSPATH")
60d68cd
+            set(CLASSPATH "${CLASSPATH}${SEPARATOR}${ARG}")
60d68cd
+
60d68cd
+         elseif (TYPE MATCHES "TESTS")
60d68cd
+            set(TESTS ${TESTS} ${ARG})
60d68cd
+
60d68cd
+         elseif (TYPE MATCHES "JVMARGS")
60d68cd
+            set(JVMARGS ${JVMARGS} ${ARG})
60d68cd
+
60d68cd
+         endif()
60d68cd
+
60d68cd
+      endif()
60d68cd
+
60d68cd
+   endforeach(ARG)
60d68cd
+
60d68cd
+   add_test(NAME ${TARGET_NAME} COMMAND ${Java_JAVA_EXECUTABLE} ${JVMARGS} -classpath ${CLASSPATH} org.junit.runner.JUnitCore ${TESTS})
60d68cd
+
60d68cd
+endfunction(add_junit_test)
60d68cd
diff --git a/tests/swig/CMakeLists.txt b/tests/swig/CMakeLists.txt
60d68cd
index 5ba1cd1..c859d4d 100644
60d68cd
--- a/tests/swig/CMakeLists.txt
60d68cd
+++ b/tests/swig/CMakeLists.txt
60d68cd
@@ -16,10 +16,21 @@ set_tests_properties(test_python_kmlengine
60d68cd
 endif()
60d68cd
 
60d68cd
 if(WITH_JAVA)
60d68cd
-add_test( NAME test_java_kmlbase
60d68cd
-  COMMAND
60d68cd
-  ${Java_JAVA_EXECUTABLE}
60d68cd
-  -cp "${CMAKE_JAVA_INCLUDE_PATH}${PATH_SEPARATOR}${CMAKE_BINARY_DIR}/src/swig/LibKML.jar;${CMAKE_CURRENT_BINARY_DIR}"
60d68cd
-  KmlBaseTest )
60d68cd
+include(UseJava)
60d68cd
+include(JUnit)
60d68cd
+find_file(JUNIT_JAR NAMES junit.jar PATHS ${JAVA_LIB_INSTALL_DIR} /usr/share/java)
60d68cd
+find_file(HAMCREST_JAR NAMES hamcrest/core.jar PATHS ${JAVA_LIB_INSTALL_DIR} /usr/share/java)
60d68cd
 
60d68cd
-endif()
60d68cd
\ No newline at end of file
60d68cd
+add_jar(KmlBaseTest KmlBaseTest.java INCLUDE_JARS /usr/share/java/junit.jar ${CMAKE_BINARY_DIR}/src/swig/LibKML.jar)
60d68cd
+add_dependencies(KmlBaseTest LibKML_jar)
60d68cd
+
60d68cd
+if(WIN32 AND NOT CYGWIN)
60d68cd
+    set(PATH_SEPARATOR ";")
60d68cd
+else(WIN32 AND NOT CYGWIN)
60d68cd
+    set(PATH_SEPARATOR ":")
60d68cd
+endif(WIN32 AND NOT CYGWIN)
60d68cd
+
60d68cd
+add_junit_test(test_java_kmlbase CLASSPATH "${JUNIT_JAR}${PATH_SEPARATOR}${HAMCREST_JAR}${PATH_SEPARATOR}${CMAKE_BINARY_DIR}/src/swig/LibKML.jar${PATH_SEPARATOR}${CMAKE_CURRENT_BINARY_DIR}/KmlBaseTest.jar" TESTS KmlBaseTest)
60d68cd
+set_tests_properties(test_java_kmlbase
60d68cd
+     PROPERTIES ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib")
60d68cd
+endif()
60d68cd
-- 
60d68cd
2.8.1
60d68cd