summaryrefslogtreecommitdiffstats
path: root/tests/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/CMakeLists.txt')
-rw-r--r--tests/CMakeLists.txt82
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
new file mode 100644
index 00000000..c35b0d3c
--- /dev/null
+++ b/tests/CMakeLists.txt
@@ -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)