mirror of
https://github.com/opencv/opencv.git
synced 2025-01-18 06:03:15 +08:00
Add option to run java tests with run.py
This commit is contained in:
parent
46c4390a2e
commit
3889b34ec3
@ -461,6 +461,7 @@ macro(ocv_create_module)
|
||||
OUTPUT_NAME "${the_module}${OPENCV_DLLVERSION}"
|
||||
DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
|
||||
ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}
|
||||
LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}
|
||||
RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
|
||||
INSTALL_NAME_DIR lib
|
||||
)
|
||||
|
@ -303,6 +303,12 @@ set_target_properties(${the_module} PROPERTIES
|
||||
LINK_INTERFACE_LIBRARIES ""
|
||||
)
|
||||
|
||||
if(ANDROID)
|
||||
set_target_properties(${the_module} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
|
||||
else()
|
||||
set_target_properties(${the_module} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
|
||||
endif()
|
||||
|
||||
if(ENABLE_SOLUTION_FOLDERS)
|
||||
set_target_properties(${the_module} PROPERTIES FOLDER "bindings")
|
||||
endif()
|
||||
|
@ -1,80 +1,77 @@
|
||||
ocv_check_dependencies(opencv_java ${OPENCV_MODULE_opencv_java_OPT_DEPS} ${OPENCV_MODULE_opencv_java_REQ_DEPS})
|
||||
|
||||
if(NOT OCV_DEPENDENCIES_FOUND OR NOT ANT_EXECUTABLE)
|
||||
if(NOT OCV_DEPENDENCIES_FOUND)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# TODO: This has the same name as the Android test project. That project should
|
||||
# probably be renamed.
|
||||
project(opencv_test_java)
|
||||
|
||||
set(opencv_test_java_bin_dir "${CMAKE_CURRENT_BINARY_DIR}/.build")
|
||||
|
||||
set(android_source_dir "${CMAKE_CURRENT_SOURCE_DIR}/../android_test")
|
||||
|
||||
set(java_source_dir ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
# get project sources
|
||||
file(GLOB_RECURSE opencv_test_java_files RELATIVE "${android_source_dir}" "${android_source_dir}/res/*" "${android_source_dir}/src/*")
|
||||
ocv_list_filterout(opencv_test_java_files ".svn")
|
||||
ocv_list_filterout(opencv_test_java_files ".*#.*")
|
||||
file(GLOB_RECURSE opencv_test_java_files RELATIVE "${android_source_dir}" "${android_source_dir}/res/*" "${android_source_dir}/src/*.java")
|
||||
# These are the files that need to be updated for pure Java.
|
||||
ocv_list_filterout(opencv_test_java_files ".*OpenCVTestCase.*")
|
||||
ocv_list_filterout(opencv_test_java_files ".*OpenCVTestRunner.*")
|
||||
ocv_list_filterout(opencv_test_java_files "OpenCVTest(Case|Runner).java")
|
||||
# These files aren't for desktop Java.
|
||||
ocv_list_filterout(opencv_test_java_files ".*android.*")
|
||||
ocv_list_filterout(opencv_test_java_files "/android/")
|
||||
|
||||
# These are files updated for pure Java.
|
||||
file(GLOB_RECURSE modified_files RELATIVE "${java_source_dir}" "${java_source_dir}/src/*")
|
||||
ocv_list_filterout(modified_files ".svn")
|
||||
ocv_list_filterout(modified_files ".*#.*")
|
||||
|
||||
# These are extra jars needed to run the tests.
|
||||
file(GLOB_RECURSE lib_files RELATIVE "${java_source_dir}" "${java_source_dir}/lib/*")
|
||||
ocv_list_filterout(lib_files ".svn")
|
||||
ocv_list_filterout(lib_files ".*#.*")
|
||||
file(GLOB_RECURSE lib_files RELATIVE "${java_source_dir}" "${java_source_dir}/lib/*.jar")
|
||||
|
||||
# copy sources out from the build tree
|
||||
set(opencv_test_java_file_deps "")
|
||||
foreach(f ${opencv_test_java_files})
|
||||
add_custom_command(
|
||||
OUTPUT "${opencv_test_java_bin_dir}/${f}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${android_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}"
|
||||
MAIN_DEPENDENCY "${android_source_dir}/${f}"
|
||||
COMMENT "Copying ${f}")
|
||||
add_custom_command(OUTPUT "${opencv_test_java_bin_dir}/${f}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${android_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}"
|
||||
DEPENDS "${android_source_dir}/${f}"
|
||||
COMMENT "Copying ${f}"
|
||||
)
|
||||
list(APPEND opencv_test_java_file_deps "${android_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}")
|
||||
endforeach()
|
||||
|
||||
# Overwrite select Android sources with Java-specific sources.
|
||||
# Also, copy over the libs we'll need for testing.
|
||||
foreach(f ${modified_files} ${lib_files})
|
||||
add_custom_command(
|
||||
OUTPUT "${opencv_test_java_bin_dir}/${f}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${java_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}"
|
||||
MAIN_DEPENDENCY "${java_source_dir}/${f}"
|
||||
COMMENT "Copying ${f}")
|
||||
list(APPEND opencv_test_java_file_deps "${java_source_dir}/${f}")
|
||||
add_custom_command(OUTPUT "${opencv_test_java_bin_dir}/${f}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${java_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}"
|
||||
DEPENDS "${java_source_dir}/${f}"
|
||||
COMMENT "Copying ${f}"
|
||||
)
|
||||
list(APPEND opencv_test_java_file_deps "${java_source_dir}/${f}" "${opencv_test_java_bin_dir}/${f}")
|
||||
endforeach()
|
||||
|
||||
# Copy the OpenCV jar after it has been generated.
|
||||
add_custom_command(
|
||||
OUTPUT "${opencv_test_java_bin_dir}/bin/${JAR_NAME}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/bin/${JAR_NAME}" "${opencv_test_java_bin_dir}/bin/${JAR_NAME}"
|
||||
COMMENT "Copying the OpenCV jar")
|
||||
add_custom_target(copy_opencv_jar ALL SOURCES "${opencv_test_java_bin_dir}/bin/${JAR_NAME}")
|
||||
# ${the_module} is the target for the Java jar.
|
||||
add_dependencies(copy_opencv_jar ${the_module})
|
||||
add_custom_command(OUTPUT "${opencv_test_java_bin_dir}/bin/${JAR_NAME}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${JAR_FILE}" "${opencv_test_java_bin_dir}/bin/${JAR_NAME}"
|
||||
DEPENDS "${JAR_FILE}"
|
||||
COMMENT "Copying the OpenCV jar"
|
||||
)
|
||||
|
||||
# Copy the ant build file.
|
||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/build.xml" DESTINATION "${opencv_test_java_bin_dir}")
|
||||
add_custom_command(OUTPUT "${opencv_test_java_bin_dir}/build.xml"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/build.xml" "${opencv_test_java_bin_dir}/build.xml"
|
||||
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/build.xml"
|
||||
COMMENT "Copying build.xml"
|
||||
)
|
||||
|
||||
# Create a script for running the Java tests and place it in build/bin.
|
||||
if(WIN32)
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java.cmd" "cd ${opencv_test_java_bin_dir}\nset PATH=${EXECUTABLE_OUTPUT_PATH}/Release;%PATH%\nant -DjavaLibraryPath=${EXECUTABLE_OUTPUT_PATH}/Release buildAndTest")
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java_D.cmd" "cd ${opencv_test_java_bin_dir}\nset PATH=${EXECUTABLE_OUTPUT_PATH}/Debug;%PATH%\nant -DjavaLibraryPath=${EXECUTABLE_OUTPUT_PATH}/Debug buildAndTest")
|
||||
else()
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java.sh" "cd ${opencv_test_java_bin_dir};\nant -DjavaLibraryPath=${LIBRARY_OUTPUT_PATH} buildAndTest;\ncd -")
|
||||
endif()
|
||||
#if(WIN32)
|
||||
#file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java.cmd" "cd ${opencv_test_java_bin_dir}\nset PATH=${EXECUTABLE_OUTPUT_PATH}/Release;%PATH%\nant -DjavaLibraryPath=${EXECUTABLE_OUTPUT_PATH}/Release buildAndTest")
|
||||
#file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java_D.cmd" "cd ${opencv_test_java_bin_dir}\nset PATH=${EXECUTABLE_OUTPUT_PATH}/Debug;%PATH%\nant -DjavaLibraryPath=${EXECUTABLE_OUTPUT_PATH}/Debug buildAndTest")
|
||||
#else()
|
||||
#file(WRITE "${CMAKE_BINARY_DIR}/bin/opencv_test_java.sh" "cd ${opencv_test_java_bin_dir};\nant -DjavaLibraryPath=${LIBRARY_OUTPUT_PATH} buildAndTest;\ncd -")
|
||||
#endif()
|
||||
|
||||
add_custom_target(${PROJECT_NAME} ALL SOURCES ${opencv_test_java_file_deps})
|
||||
add_dependencies(opencv_tests ${PROJECT_NAME})
|
||||
add_custom_command(OUTPUT "${opencv_test_java_bin_dir}/build/jar/opencv-test.jar"
|
||||
COMMAND "${ANT_EXECUTABLE}" build
|
||||
WORKING_DIRECTORY "${opencv_test_java_bin_dir}"
|
||||
DEPENDS ${opencv_test_java_file_deps} "${opencv_test_java_bin_dir}/build.xml" "${CMAKE_CURRENT_SOURCE_DIR}/build.xml" "${JAR_FILE}" "${opencv_test_java_bin_dir}/bin/${JAR_NAME}"
|
||||
COMMENT "Build Java tests"
|
||||
)
|
||||
|
||||
add_custom_target(${PROJECT_NAME} ALL SOURCES "${opencv_test_java_bin_dir}/build/jar/opencv-test.jar")
|
||||
add_dependencies(${PROJECT_NAME} ${the_module})
|
||||
|
@ -16,7 +16,7 @@
|
||||
<target name="compile">
|
||||
<mkdir dir="build/classes"/>
|
||||
|
||||
<javac sourcepath="" srcdir="src" destdir="build/classes" >
|
||||
<javac sourcepath="" srcdir="src" destdir="build/classes" includeantruntime="false" >
|
||||
<include name="**/*.java"/>
|
||||
<classpath refid="master-classpath"/>
|
||||
</javac>
|
||||
@ -26,7 +26,7 @@
|
||||
<mkdir dir="build/jar"/>
|
||||
<jar destfile="build/jar/opencv-test.jar" basedir="build/classes">
|
||||
<manifest>
|
||||
<attribute name="Main-Class" value="org.opencv.test.OpenCVTestRunner"/>
|
||||
<attribute name="Main-Class" value="org.opencv.test.OpenCVTestRunner"/>
|
||||
</manifest>
|
||||
</jar>
|
||||
</target>
|
||||
@ -35,6 +35,7 @@
|
||||
<mkdir dir="testResults"/>
|
||||
<junit printsummary="false" haltonfailure="false" haltonerror="false" showoutput="false" logfailedtests="true" maxmemory="256m">
|
||||
<sysproperty key="java.library.path" path="${javaLibraryPath}"/>
|
||||
<env key="PATH" path="${javaLibraryPath}"/>
|
||||
<classpath refid="master-classpath"/>
|
||||
<classpath>
|
||||
<pathelement location="build/classes"/>
|
||||
@ -43,13 +44,18 @@
|
||||
<formatter type="xml"/>
|
||||
|
||||
<batchtest fork="yes" todir="testResults">
|
||||
<zipfileset src="build/jar/opencv-test.jar" includes="**/*.class" excludes="**/OpenCVTest*">
|
||||
<exclude name="**/*$*.class"/>
|
||||
</zipfileset>
|
||||
<zipfileset src="build/jar/opencv-test.jar" includes="**/*.class" excludes="**/OpenCVTest*">
|
||||
<exclude name="**/*$*.class"/>
|
||||
</zipfileset>
|
||||
</batchtest>
|
||||
</junit>
|
||||
</target>
|
||||
|
||||
<target name="build">
|
||||
<antcall target="compile"/>
|
||||
<antcall target="jar"/>
|
||||
</target>
|
||||
|
||||
<target name="buildAndTest">
|
||||
<antcall target="compile"/>
|
||||
<antcall target="jar"/>
|
||||
|
@ -69,6 +69,8 @@ parse_patterns = (
|
||||
{'name': "ndk_path", 'default': None, 'pattern': re.compile("^(?:ANDROID_NDK|ANDROID_STANDALONE_TOOLCHAIN)?:PATH=(.*)$")},
|
||||
{'name': "android_abi", 'default': None, 'pattern': re.compile("^ANDROID_ABI:STRING=(.*)$")},
|
||||
{'name': "android_executable", 'default': None, 'pattern': re.compile("^ANDROID_EXECUTABLE:FILEPATH=(.*android.*)$")},
|
||||
{'name': "ant_executable", 'default': None, 'pattern': re.compile("^ANT_EXECUTABLE:FILEPATH=(.*ant.*)$")},
|
||||
{'name': "java_test_binary_dir", 'default': None, 'pattern': re.compile("^opencv_test_java_BINARY_DIR:STATIC=(.*)$")},
|
||||
{'name': "is_x64", 'default': "OFF", 'pattern': re.compile("^CUDA_64_BIT_DEVICE_CODE:BOOL=(ON)$")},#ugly(
|
||||
{'name': "cmake_generator", 'default': None, 'pattern': re.compile("^CMAKE_GENERATOR:INTERNAL=(.+)$")},
|
||||
{'name': "cxx_compiler", 'default': None, 'pattern': re.compile("^CMAKE_CXX_COMPILER:FILEPATH=(.+)$")},
|
||||
@ -431,6 +433,8 @@ class TestSuite(object):
|
||||
if self.tests_dir and os.path.isdir(self.tests_dir):
|
||||
files = glob.glob(os.path.join(self.tests_dir, self.nameprefix + "*"))
|
||||
files = [f for f in files if self.isTest(f)]
|
||||
if self.ant_executable and self.java_test_binary_dir:
|
||||
files.append("java")
|
||||
return files
|
||||
return []
|
||||
|
||||
@ -740,6 +744,16 @@ class TestSuite(object):
|
||||
if os.path.isfile(hostlogpath):
|
||||
return hostlogpath
|
||||
return None
|
||||
elif path == "java":
|
||||
cmd = [self.ant_executable, "-DjavaLibraryPath=" + self.tests_dir, "buildAndTest"]
|
||||
|
||||
print >> _stderr, "Run command:", " ".join(cmd)
|
||||
try:
|
||||
Popen(cmd, stdout=_stdout, stderr=_stderr, cwd = self.java_test_binary_dir + "/.build").wait()
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
return None
|
||||
else:
|
||||
cmd = [exe]
|
||||
if self.options.help:
|
||||
|
Loading…
Reference in New Issue
Block a user