diff options
Diffstat (limited to 'cmake/Modules/JUnit.cmake')
-rw-r--r-- | cmake/Modules/JUnit.cmake | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/cmake/Modules/JUnit.cmake b/cmake/Modules/JUnit.cmake new file mode 100644 index 000000000..84faa6874 --- /dev/null +++ b/cmake/Modules/JUnit.cmake @@ -0,0 +1,65 @@ +# +# This file provides functions for JUnit support. +# +# Available Functions: +# +# add_junit_test(<target name> +# CLASSPATH [path1 ...] +# TESTS [class1 ...] +# ) +# +# This command creates a target for executing JUnit test classes +# using the specified class path. +# + +find_file(JUNIT_JAR + NAMES + junit4.jar + PATHS + ${JAVA_LIB_INSTALL_DIR} + /usr/share/java +) + +function(add_junit_test TARGET_NAME) + + if (WIN32 AND NOT CYGWIN) + set(SEPARATOR ";") + else (WIN32 AND NOT CYGWIN) + set(SEPARATOR ":") + endif(WIN32 AND NOT CYGWIN) + + set(REPORTS_DIR "reports") + + foreach (ARG ${ARGN}) + if (ARG MATCHES "(CLASSPATH|TESTS|REPORTS_DIR)") + set(TYPE ${ARG}) + + else (ARG MATCHES "(CLASSPATH|TESTS|REPORTS_DIR)") + + if (TYPE MATCHES "CLASSPATH") + set(CLASSPATH "${CLASSPATH}${SEPARATOR}${ARG}") + + elseif (TYPE MATCHES "TESTS") + set(TESTS ${TESTS} ${ARG}) + + elseif (TYPE MATCHES "REPORTS_DIR") + set(REPORTS_DIR ${ARG}) + + endif(TYPE MATCHES "CLASSPATH") + + endif(ARG MATCHES "(CLASSPATH|TESTS|REPORTS_DIR)") + + endforeach(ARG) + + add_custom_target(${TARGET_NAME} + COMMAND + mkdir -p "${REPORTS_DIR}" + COMMAND + ${CMAKE_Java_RUNTIME} + -Djunit.reports.dir=${REPORTS_DIR} + -classpath ${CLASSPATH} + com.netscape.test.TestRunner + ${TESTS} + ) + +endfunction(add_junit_test) |