cmake: Compile Java tests and add to ctest if Java bindings are enabled.
authorMathias Preiner <mathias.preiner@gmail.com>
Fri, 24 Aug 2018 22:11:03 +0000 (15:11 -0700)
committerMathias Preiner <mathias.preiner@gmail.com>
Sat, 22 Sep 2018 23:30:59 +0000 (16:30 -0700)
CMakeLists.txt
cmake/FindHamcrest.cmake [new file with mode: 0644]
cmake/FindJUnit.cmake [new file with mode: 0644]
test/java/CMakeLists.txt

index 81bbaf533120bb7498c0047117c35227b8ab0a32..81e9a0e3061fab4c9a44b3908f043bade27c0447 100644 (file)
@@ -519,7 +519,9 @@ add_subdirectory(src)
 if(BUILD_BINDINGS)
   add_subdirectory(src/bindings)
 endif()
-add_subdirectory(test/java)
+if(BUILD_BINDINGS_JAVA)
+  add_subdirectory(test/java)
+endif()
 add_subdirectory(test/regress)
 add_subdirectory(test/system)
 if(ENABLE_UNIT_TESTING)
diff --git a/cmake/FindHamcrest.cmake b/cmake/FindHamcrest.cmake
new file mode 100644 (file)
index 0000000..96fde96
--- /dev/null
@@ -0,0 +1,13 @@
+# Find Hamcrest
+# Hamcrest_FOUND - system has Hamcrest lib
+# Hamcrest_JAR - the Hamcrest jar file
+
+find_package(Java REQUIRED)
+include(UseJava)
+
+find_jar(Hamcrest_JAR hamcrest-core)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Hamcrest DEFAULT_MSG Hamcrest_JAR)
+
+mark_as_advanced(Hamcrest_JAR)
diff --git a/cmake/FindJUnit.cmake b/cmake/FindJUnit.cmake
new file mode 100644 (file)
index 0000000..1fd4ebb
--- /dev/null
@@ -0,0 +1,26 @@
+# Find JUnit
+# JUnit_FOUND - system has JUnit lib
+# JUnit_JAR - JUnit jar file
+# JUnit_JAR_DEPS - JUnit jar dependencies
+
+find_package(Java REQUIRED)
+include(UseJava)
+find_package(Hamcrest REQUIRED)
+
+find_jar(JUnit_JAR NAMES junit junit4)
+
+if(JUnit_JAR)
+  set(JUnit_JAR_DEPS ${Hamcrest_JAR})
+  # Determine version of JUnit
+  execute_process(
+    COMMAND ${Java_JAVA_EXECUTABLE} -cp ${JUnit_JAR} junit.runner.Version
+    OUTPUT_VARIABLE JUnit_VERSION
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(JUnit
+  REQUIRED_VARS JUnit_JAR JUnit_JAR_DEPS
+  VERSION_VAR JUnit_VERSION)
+
+mark_as_advanced(JUnit_JAR JUnit_JAR_DEPS)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0139c5672c36c5a0d953fed1d8f6fefcba7f346d 100644 (file)
@@ -0,0 +1,38 @@
+find_package(Java REQUIRED)
+find_package(JUnit REQUIRED)
+include(UseJava)
+
+set(java_test_src_files
+  BitVectors.java
+  BitVectorsAndArrays.java
+  Combination.java
+  HelloWorld.java
+  LinearArith.java
+)
+
+add_jar(cvc4javatests
+  SOURCES ${java_test_src_files}
+  INCLUDE_JARS
+    ${CMAKE_BINARY_DIR}/src/bindings/java/CVC4.jar
+    ${JUnit_JAR}
+)
+add_dependencies(cvc4javatests cvc4jar)
+
+# Add java tests to ctest
+set(classpath "${CMAKE_CURRENT_BINARY_DIR}/cvc4javatests.jar")
+set(classpath "${classpath}:${CMAKE_BINARY_DIR}/src/bindings/java/CVC4.jar")
+set(classpath "${classpath}:${JUnit_JAR}:${JUnit_JAR_DEPS}")
+
+foreach(src_file ${java_test_src_files})
+  string(REPLACE ".java" "" name ${src_file})
+  add_test(
+    NAME ${name}
+    COMMAND
+      java
+        -Djava.library.path=${CMAKE_BINARY_DIR}/src/bindings/java/
+        -cp ${classpath}
+        org.junit.runner.JUnitCore
+        ${name}
+  )
+  set_tests_properties(${name} PROPERTIES LABELS "java")
+endforeach()