Unit testing
This commit is contained in:
		
							
								
								
									
										82
									
								
								tests/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								tests/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,82 @@
 | 
			
		||||
find_package(Qt5 COMPONENTS Test Core Network Widgets)
 | 
			
		||||
 | 
			
		||||
include_directories(${MMC_SRC})
 | 
			
		||||
 | 
			
		||||
unset(MultiMC_TESTS)
 | 
			
		||||
macro(add_unit_test name)
 | 
			
		||||
	unset(srcs)
 | 
			
		||||
	foreach(arg ${testname} ${ARGN})
 | 
			
		||||
		list(APPEND srcs ${CMAKE_CURRENT_SOURCE_DIR}/${arg})
 | 
			
		||||
	endforeach()
 | 
			
		||||
	add_executable(tst_${name} ${srcs})
 | 
			
		||||
	qt5_use_modules(tst_${name} Test Core Network Widgets)
 | 
			
		||||
	target_link_libraries(tst_${name} MultiMC_common)
 | 
			
		||||
	add_test(tst_${name} tst_${name})
 | 
			
		||||
	list(APPEND MultiMC_TESTS tst_${name})
 | 
			
		||||
endmacro()
 | 
			
		||||
 | 
			
		||||
macro(add_unit_test2 name)
 | 
			
		||||
	add_unit_test(${name} tst_${name}.cpp)
 | 
			
		||||
endmacro()
 | 
			
		||||
 | 
			
		||||
# Tests START #
 | 
			
		||||
 | 
			
		||||
add_unit_test2(pathutils)
 | 
			
		||||
 | 
			
		||||
# Tests END #
 | 
			
		||||
	
 | 
			
		||||
set(COVERAGE_SOURCE_DIRS
 | 
			
		||||
 ${MMC_SRC}/logic/*
 | 
			
		||||
 ${MMC_SRC}/logic/lists/*
 | 
			
		||||
 ${MMC_SRC}/logic/net/*
 | 
			
		||||
 ${MMC_SRC}/logic/tasks/*
 | 
			
		||||
 ${MMC_SRC}/gui/*
 | 
			
		||||
 ${MMC_SRC}/gui/dialogs/*
 | 
			
		||||
 ${MMC_SRC}/gui/widgets/*
 | 
			
		||||
 ${MMC_SRC}/depends/settings/include/*
 | 
			
		||||
 ${MMC_SRC}/depends/settings/src/*
 | 
			
		||||
 ${MMC_SRC}/depends/util/include/*
 | 
			
		||||
 ${MMC_SRC}/depends/util/src/*
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
if(MultiMC_CODE_COVERAGE)
 | 
			
		||||
	unset(MultiMC_RUN_TESTS)
 | 
			
		||||
	unset(MultiMC_TEST_COVERAGE_FILES)
 | 
			
		||||
 | 
			
		||||
	foreach(test ${MultiMC_TESTS})
 | 
			
		||||
		add_custom_target(MultiMC_RUN_TEST_${test}
 | 
			
		||||
		 COMMAND lcov -d ${CMAKE_CURRENT_BINARY_DIR} -z -q # clean test
 | 
			
		||||
				&& lcov -d ${MMC_BIN} -z -q # clean common
 | 
			
		||||
				&& lcov -d ${MMC_BIN}/depends/settings/CMakeFiles/libSettings.dir -z -q # clean settings
 | 
			
		||||
				&& lcov -d ${MMC_BIN}/depends/utils/CMakeFiles/libUtil.dir -z -q # clean utils
 | 
			
		||||
				&& ${MMC_BIN}/${test} -o coverage_${test}.out,xml # run test
 | 
			
		||||
				&& lcov -q --checksum -b ${MMC_SRC} -d ${CMAKE_CURRENT_BINARY_DIR} -c -o coverage_${test}.info # generate for test
 | 
			
		||||
				&& lcov -q --checksum -b ${MMC_SRC} -d ${MMC_BIN} -c -o coverage_common.info # generate for common
 | 
			
		||||
				&& lcov -q --checksum -b ${MMC_SRC} -d ${MMC_BIN}/depends/settings/CMakeFiles/libSettings.dir -c -o coverage_settings.info # generate for settings
 | 
			
		||||
				&& lcov -q --checksum -b ${MMC_SRC} -d ${MMC_BIN}/depends/util/CMakeFiles/libUtil.dir -c -o coverage_utils.info # generate for utils
 | 
			
		||||
				&& lcov -q --checksum -b ${MMC_SRC} -d .
 | 
			
		||||
					-a coverage_${test}.info -a coverage_common.info -a coverage_settings.info -a coverage_utils.info
 | 
			
		||||
					-o coverage_${test}-combined.info # combine test and common
 | 
			
		||||
				&& lcov -q --checksum -b ${MMC_SRC} --list-full-path --extract coverage_${test}-combined.info ${COVERAGE_SOURCE_DIRS} -o coverage_${test}-stripped.info # strip
 | 
			
		||||
		 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
 | 
			
		||||
		 VERBATIM
 | 
			
		||||
		 DEPENDS ${test}
 | 
			
		||||
		 COMMENT "Running ${test}..."
 | 
			
		||||
		)
 | 
			
		||||
		list(APPEND MultiMC_TEST_COVERAGE_FILES coverage_${test}-stripped.info)
 | 
			
		||||
		list(APPEND MultiMC_RUN_TESTS MultiMC_RUN_TEST_${test})
 | 
			
		||||
	endforeach(test)
 | 
			
		||||
 | 
			
		||||
	add_custom_target(MultiMC_GENERATE_COVERAGE
 | 
			
		||||
	 DEPENDS ${MultiMC_RUN_TESTS}
 | 
			
		||||
	 COMMENT "Generating coverage files..."
 | 
			
		||||
	)
 | 
			
		||||
	add_custom_target(MultiMC_GENERATE_COVERAGE_HTML
 | 
			
		||||
	 COMMAND genhtml -t "MultiMC 5 Test Coverage" --num-spaces 4 --demangle-cpp --legend -o ${MMC_SRC}/html/coverage ${MultiMC_TEST_COVERAGE_FILES}
 | 
			
		||||
	 DEPENDS MultiMC_GENERATE_COVERAGE
 | 
			
		||||
	 COMMENT "Generating test coverage html..."
 | 
			
		||||
	)
 | 
			
		||||
	add_custom_target(MultiMC_RUN_TESTS DEPENDS MultiMC_GENERATE_COVERAGE_HTML)
 | 
			
		||||
endif(MultiMC_CODE_COVERAGE)
 | 
			
		||||
 | 
			
		||||
add_subdirectory(data)
 | 
			
		||||
		Reference in New Issue
	
	Block a user