Tests: Add test for exported JARs
Add a unit test to test the new functions to export JAR targets. The test builds three sub-projects: two that generate and export a JAR (one does a build-directory-only export, one an install-only export), and a third that consumes the first two as imported targets.
This commit is contained in:
parent
5341c0d84a
commit
95d84369b8
|
@ -3104,6 +3104,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
|
||||||
find_package(Java COMPONENTS Development QUIET)
|
find_package(Java COMPONENTS Development QUIET)
|
||||||
if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE AND Java_JAR_EXECUTABLE AND NOT MINGW
|
if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE AND Java_JAR_EXECUTABLE AND NOT MINGW
|
||||||
AND NOT "${CMAKE_GENERATOR}" MATCHES "Xcode")
|
AND NOT "${CMAKE_GENERATOR}" MATCHES "Xcode")
|
||||||
|
|
||||||
|
set(JavaExportImport_BUILD_OPTIONS -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM})
|
||||||
|
ADD_TEST_MACRO(JavaExportImport JavaExportImport)
|
||||||
|
|
||||||
get_filename_component(JNIPATH ${JAVA_COMPILE} PATH)
|
get_filename_component(JNIPATH ${JAVA_COMPILE} PATH)
|
||||||
find_file(JNI_H jni.h
|
find_file(JNI_H jni.h
|
||||||
"${JNIPATH}/../include"
|
"${JNIPATH}/../include"
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
project(foo Java)
|
||||||
|
|
||||||
|
cmake_minimum_required (VERSION 3.5)
|
||||||
|
set(CMAKE_VERBOSE_MAKEFILE 1)
|
||||||
|
|
||||||
|
find_package(Java COMPONENTS Development)
|
||||||
|
include(UseJava)
|
||||||
|
|
||||||
|
add_jar(${PROJECT_NAME} Foo.java)
|
||||||
|
export_jars(TARGETS ${PROJECT_NAME} FILE JavaBuildExportTestConfig.cmake)
|
|
@ -0,0 +1,11 @@
|
||||||
|
class Foo
|
||||||
|
{
|
||||||
|
public Foo()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printName()
|
||||||
|
{
|
||||||
|
System.out.println("Foo");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,104 @@
|
||||||
|
cmake_minimum_required (VERSION 3.5)
|
||||||
|
project(JavaExportImport)
|
||||||
|
if(NOT DEFINED CMake_TEST_NESTED_MAKE_PROGRAM AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||||
|
set(CMake_TEST_NESTED_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(Java COMPONENTS Development)
|
||||||
|
|
||||||
|
# Wipe out the install tree to make sure the exporter works.
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${JavaExportImport_BINARY_DIR}/CleanupProject
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E remove_directory ${JavaExportImport_BINARY_DIR}/Root
|
||||||
|
)
|
||||||
|
add_custom_target(CleanupTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/CleanupProject)
|
||||||
|
set_property(
|
||||||
|
SOURCE ${JavaExportImport_BINARY_DIR}/CleanupProject
|
||||||
|
PROPERTY SYMBOLIC 1
|
||||||
|
)
|
||||||
|
|
||||||
|
if(CMAKE_CONFIGURATION_TYPES)
|
||||||
|
set(NESTED_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
|
||||||
|
else()
|
||||||
|
if(CMAKE_BUILD_TYPE)
|
||||||
|
set(NESTED_CONFIG_TYPE -C "${CMAKE_BUILD_TYPE}")
|
||||||
|
else()
|
||||||
|
set(NESTED_CONFIG_TYPE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
configure_file(${JavaExportImport_SOURCE_DIR}/InitialCache.cmake.in
|
||||||
|
${JavaExportImport_BINARY_DIR}/InitialCache.cmake @ONLY)
|
||||||
|
|
||||||
|
# Build the build exporter.
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${JavaExportImport_BINARY_DIR}/BuildExportProject
|
||||||
|
COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
|
||||||
|
--build-and-test
|
||||||
|
${JavaExportImport_SOURCE_DIR}/BuildExport
|
||||||
|
${JavaExportImport_BINARY_DIR}/BuildExport
|
||||||
|
--build-noclean
|
||||||
|
--build-project BuildExport
|
||||||
|
--build-generator ${CMAKE_GENERATOR}
|
||||||
|
--build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
|
||||||
|
--build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
|
||||||
|
--build-options -C${JavaExportImport_BINARY_DIR}/InitialCache.cmake
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
add_custom_target(BuildExportTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/BuildExportProject)
|
||||||
|
add_dependencies(BuildExportTarget CleanupTarget)
|
||||||
|
set_property(
|
||||||
|
SOURCE ${JavaExportImport_BINARY_DIR}/BuildExportProject
|
||||||
|
PROPERTY SYMBOLIC 1
|
||||||
|
)
|
||||||
|
|
||||||
|
# Build and install the install exporter.
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${JavaExportImport_BINARY_DIR}/InstallExportProject
|
||||||
|
COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
|
||||||
|
--build-and-test
|
||||||
|
${JavaExportImport_SOURCE_DIR}/InstallExport
|
||||||
|
${JavaExportImport_BINARY_DIR}/InstallExport
|
||||||
|
--build-noclean
|
||||||
|
--build-project InstallExport
|
||||||
|
--build-target install
|
||||||
|
--build-generator ${CMAKE_GENERATOR}
|
||||||
|
--build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
|
||||||
|
--build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
|
||||||
|
--build-options -C${JavaExportImport_BINARY_DIR}/InitialCache.cmake
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
add_custom_target(InstallExportTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/InstallExportProject)
|
||||||
|
add_dependencies(InstallExportTarget CleanupTarget)
|
||||||
|
set_property(
|
||||||
|
SOURCE ${JavaExportImport_BINARY_DIR}/InstallExportProject
|
||||||
|
PROPERTY SYMBOLIC 1
|
||||||
|
)
|
||||||
|
|
||||||
|
# Build and install the importer.
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${JavaExportImport_BINARY_DIR}/ImportProject
|
||||||
|
COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
|
||||||
|
--build-and-test
|
||||||
|
${JavaExportImport_SOURCE_DIR}/Import
|
||||||
|
${JavaExportImport_BINARY_DIR}/Import
|
||||||
|
--build-noclean
|
||||||
|
--build-project Import
|
||||||
|
--build-generator ${CMAKE_GENERATOR}
|
||||||
|
--build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
|
||||||
|
--build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
|
||||||
|
--build-options
|
||||||
|
-C${JavaExportImport_BINARY_DIR}/InitialCache.cmake
|
||||||
|
-DJavaBuildExportTest_DIR:PATH=${JavaExportImport_BINARY_DIR}/BuildExport
|
||||||
|
-DJavaInstallExportTest_DIR:PATH=${JavaExportImport_BINARY_DIR}/Root/share/cmake
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
add_custom_target(ImportTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/ImportProject)
|
||||||
|
add_dependencies(ImportTarget BuildExportTarget InstallExportTarget)
|
||||||
|
set_property(
|
||||||
|
SOURCE ${JavaExportImport_BINARY_DIR}/ImportProject
|
||||||
|
PROPERTY SYMBOLIC 1
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(JavaExportImport main.c)
|
||||||
|
add_dependencies(JavaExportImport ImportTarget)
|
|
@ -0,0 +1,14 @@
|
||||||
|
project(import Java)
|
||||||
|
|
||||||
|
cmake_minimum_required (VERSION 3.5)
|
||||||
|
set(CMAKE_VERBOSE_MAKEFILE 1)
|
||||||
|
|
||||||
|
find_package(Java COMPONENTS Development)
|
||||||
|
include(UseJava)
|
||||||
|
|
||||||
|
find_package(JavaBuildExportTest REQUIRED)
|
||||||
|
find_package(JavaInstallExportTest REQUIRED)
|
||||||
|
|
||||||
|
add_jar(${PROJECT_NAME}
|
||||||
|
SOURCES Import.java
|
||||||
|
INCLUDE_JARS foo bar)
|
|
@ -0,0 +1,10 @@
|
||||||
|
class Import
|
||||||
|
{
|
||||||
|
public static void main(String args[])
|
||||||
|
{
|
||||||
|
Foo foo = new Foo();
|
||||||
|
Bar bar = new Bar();
|
||||||
|
foo.printName();
|
||||||
|
bar.printName();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
set(CMAKE_MAKE_PROGRAM "@CMake_TEST_NESTED_MAKE_PROGRAM@" CACHE FILEPATH "Make Program")
|
||||||
|
set(Java_JAVA_EXECUTABLE "@Java_JAVA_EXECUTABLE@" CACHE STRING "Java Interpreter")
|
||||||
|
set(Java_JAVAC_EXECUTABLE "@Java_JAVAC_EXECUTABLE@" CACHE STRING "Java Compiler")
|
||||||
|
set(Java_JAR_EXECUTABLE "@Java_JAR_EXECUTABLE@" CACHE STRING "Java Archive Tool")
|
||||||
|
set(CMAKE_INSTALL_PREFIX "@JavaExportImport_BINARY_DIR@/Root" CACHE STRING "Installation Prefix")
|
|
@ -0,0 +1,11 @@
|
||||||
|
class Bar
|
||||||
|
{
|
||||||
|
public Bar()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printName()
|
||||||
|
{
|
||||||
|
System.out.println("Bar");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
project(bar Java)
|
||||||
|
|
||||||
|
cmake_minimum_required (VERSION 3.5)
|
||||||
|
set(CMAKE_VERBOSE_MAKEFILE 1)
|
||||||
|
|
||||||
|
find_package(Java COMPONENTS Development)
|
||||||
|
include(UseJava)
|
||||||
|
|
||||||
|
add_jar(${PROJECT_NAME} Bar.java)
|
||||||
|
install_jar(${PROJECT_NAME} DESTINATION share/java)
|
||||||
|
install_jar_exports(
|
||||||
|
TARGETS ${PROJECT_NAME}
|
||||||
|
FILE JavaInstallExportTestConfig.cmake
|
||||||
|
DESTINATION share/cmake)
|
|
@ -0,0 +1,4 @@
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue