include(CTest)

IF(BUILD_TESTING MATCHES "ON")
	SET(TESTSRC		rspamd_mem_pool_test.c
					rspamd_statfile_test.c
					rspamd_url_test.c
					rspamd_dns_test.c
					rspamd_dkim_test.c
					rspamd_rrd_test.c
					rspamd_radix_test.c
					rspamd_shingles_test.c
					rspamd_upstream_test.c
					rspamd_lua_pcall_vs_resume_test.c
					rspamd_lua_test.c
					rspamd_cryptobox_test.c
					rspamd_heap_test.c
					rspamd_test_suite.c)

	ADD_EXECUTABLE(rspamd-test ${TESTSRC})
	SET_TARGET_PROPERTIES(rspamd-test PROPERTIES COMPILE_FLAGS "-DRSPAMD_TEST")
	ADD_DEPENDENCIES(rspamd-test rspamd-server)
	SET_TARGET_PROPERTIES(rspamd-test PROPERTIES LINKER_LANGUAGE CXX)
	TARGET_LINK_LIBRARIES(rspamd-test rspamd-server)
	ADD_TEST(NAME rspamd-test COMMAND rspamd-test "-p" "/rspamd/lua")

	SET(CXXTESTSSRC		rspamd_cxx_unit.cxx)

	ADD_EXECUTABLE(rspamd-test-cxx ${CXXTESTSSRC})
	SET_TARGET_PROPERTIES(rspamd-test-cxx PROPERTIES LINKER_LANGUAGE CXX)
	ADD_DEPENDENCIES(rspamd-test-cxx rspamd-server)
	TARGET_LINK_LIBRARIES(rspamd-test-cxx PRIVATE rspamd-server)
	SET_TARGET_PROPERTIES(rspamd-test-cxx PROPERTIES LINKER_LANGUAGE CXX)
	ADD_TEST(NAME rspamd-test-cxx COMMAND rspamd-test-cxx)

	IF(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
		# Also add dependencies for convenience
		FILE(GLOB_RECURSE LUA_TESTS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/lua/*.*")
		ADD_CUSTOM_TARGET(units-dir COMMAND
			${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/lua/unit"
		)
		ADD_DEPENDENCIES(rspamd-test units-dir)
		FOREACH(_LF IN LISTS LUA_TESTS)
			GET_FILENAME_COMPONENT(_NM "${_LF}" NAME)
			IF("${_LF}" MATCHES "^.*/unit/.*$")
				SET(_DS "${CMAKE_CURRENT_BINARY_DIR}/lua/unit/${_NM}")
			ELSE()
				SET(_DS "${CMAKE_CURRENT_BINARY_DIR}/lua/${_NM}")
			ENDIF()
			ADD_CUSTOM_TARGET("${_NM}" COMMAND
				${CMAKE_COMMAND} -E copy_if_different ${_LF} ${_DS}
				SOURCES "${_LF}"
			)
			ADD_DEPENDENCIES(rspamd-test "${_NM}")
		ENDFOREACH()
	ENDIF()
ENDIF()