Raw File
CMakeLists.txt
# VS2012 doesn't support correctly the tuples yet
# See http://code.google.com/p/googletest/issues/detail?id=412
if(MSVC)
	add_definitions(/D_VARIADIC_MAX=10)
endif()

APPEND_SOURCE_FILES(TEST_SOURCES)
APPEND_SOURCE_FILES(TEST_SOURCES ApplicationsLib)
APPEND_SOURCE_FILES(TEST_SOURCES AssemblerLib)
APPEND_SOURCE_FILES(TEST_SOURCES BaseLib)
APPEND_SOURCE_FILES(TEST_SOURCES GeoLib)
APPEND_SOURCE_FILES(TEST_SOURCES InSituLib)
APPEND_SOURCE_FILES(TEST_SOURCES MathLib)
APPEND_SOURCE_FILES(TEST_SOURCES MeshLib)
APPEND_SOURCE_FILES(TEST_SOURCES MeshGeoToolsLib)
APPEND_SOURCE_FILES(TEST_SOURCES NumLib)

set(TEST_SOURCES ${TEST_SOURCES}
	FileIO/TestGLIReader.cpp
	FileIO/TestCsvReader.cpp
)
if(QT4_FOUND)
	set(TEST_SOURCES ${TEST_SOURCES} FileIO/TestXmlGmlReader.cpp)
endif()

if(OGS_USE_PETSC OR OGS_USE_MPI)
	list(REMOVE_ITEM TEST_SOURCES AssemblerLib/TestSerialLinearSolver.cpp)
endif()

add_executable(testrunner testrunner.cpp ${TEST_SOURCES})
set_target_properties(testrunner PROPERTIES FOLDER Testing)

target_link_libraries(testrunner
	ApplicationsLib
	AssemblerLib
	FileIO
	MeshGeoToolsLib
	NumLib
	GTest
	Threads::Threads
)
ADD_VTK_DEPENDENCY(testrunner)

if(OGS_USE_PETSC)
	target_link_libraries(testrunner ${PETSC_LIBRARIES})
endif()

if(OGS_USE_MPI)
	target_link_libraries(testrunner ${MPI_CXX_LIBRARIES})
endif()

if(OGS_BUILD_GUI)
	target_link_libraries(testrunner
		QtDataView
		QtStratView
		VtkVis
		vtkInteractionStyle
	)
endif()

if(QT4_FOUND)
	target_link_libraries(testrunner Qt4::QtCore Qt4::QtGui Qt4::QtXml Qt4::QtNetwork)
	if(CMAKE_CROSSCOMPILING)
		target_link_libraries(testrunner
			${QT_XML_DEPS_LIBRARIES}
			${QT_GUI_DEPS_LIBRARIES}
			${QT_NETWORK_DEPS_LIBRARIES})
	endif()
endif()

ADD_VTK_DEPENDENCY(testrunner)

# Add make-target tests which runs the testrunner
if(DEFINED ENV{CI})
	set(TESTRUNNER_ADDITIONAL_ARGUMENTS ${TESTRUNNER_ADDITIONAL_ARGUMENTS}
		--gtest_shuffle --gtest_repeat=3)
endif()
set(TESTRUNNER_ADDITIONAL_ARGUMENTS ${TESTRUNNER_ADDITIONAL_ARGUMENTS}
	--gtest_output=xml:./testrunner.xml)

add_custom_target(tests-cleanup ${CMAKE_COMMAND} -E remove testrunner.xml)

if(OGS_USE_PETSC)
	set(TEST_FILTER_MPI --gtest_filter=-MPITest*:*Assembler*:*MeshSubsets*:*PointVec*:*InsertZeroPointsInGrid*:InSituMesh.MappedMeshSourceRoundtrip)
	add_custom_target(tests
		mpirun -np 1 $<TARGET_FILE:testrunner> ${TESTRUNNER_ADDITIONAL_ARGUMENTS} ${TEST_FILTER_MPI}
		DEPENDS testrunner tests-cleanup
	)
	add_custom_target(tests_mpi
		mpirun -np 3 $<TARGET_FILE:testrunner> --gtest_filter=MPITest*
		DEPENDS testrunner
	)
else()
	add_custom_target(tests
		$<TARGET_FILE:testrunner> ${TESTRUNNER_ADDITIONAL_ARGUMENTS}
		DEPENDS testrunner tests-cleanup
	)
endif()

# Creates one ctest entry for every googletest
#ADD_GOOGLE_TESTS ( ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/testrunner ${TEST_SOURCES})
back to top