From 84db68b0c8be9cf192a918bc1bb2811a646e3e2d Mon Sep 17 00:00:00 2001
From: Pascal Palenda <pascal.palenda@akustik.rwth-aachen.de>
Date: Wed, 15 Feb 2023 09:24:15 +0100
Subject: [PATCH] Add toggle for code coverage

---
 src/IhtaAddTest.cmake | 33 +++++++++++++++++++++------------
 1 file changed, 21 insertions(+), 12 deletions(-)

diff --git a/src/IhtaAddTest.cmake b/src/IhtaAddTest.cmake
index 3f7948b..0b774de 100644
--- a/src/IhtaAddTest.cmake
+++ b/src/IhtaAddTest.cmake
@@ -8,6 +8,11 @@ include_guard ()
 
 	This uses catch2 and FakeIt for the unit testing and mocking respectively.
 
+	The macro exposes the option `IHTA_COMMON_ENABLE_CODE_COVERAGE` which can
+	disable the code coverage by setting it to `OFF`. This can also be done by
+	adding `set(IHTA_COMMON_ENABLE_CODE_COVERAGE OFF)` before including the
+	IHTACMakeCommon library.
+
 	::
 
 		ihta_add_test(
@@ -45,6 +50,8 @@ include_guard ()
 
 #]=======================================================================]
 macro (ihta_add_test)
+	option (IHTA_COMMON_ENABLE_CODE_COVERAGE "Set to false to disable code coverage reporting" ON)
+
 	set (options)
 	set (oneValueArgs NAME TEST_TARGET IDE_FOLDER)
 	set (multiValueArgs SOURCES COV_SOURCES)
@@ -73,20 +80,22 @@ macro (ihta_add_test)
 		DOWNLOAD_ONLY ON
 	)
 
-	find_program (OPENCPPCOVERAGE OpenCppCoverage)
+	if (IHTA_COMMON_ENABLE_CODE_COVERAGE)
+		find_program (OPENCPPCOVERAGE OpenCppCoverage)
 
-	if (OPENCPPCOVERAGE)
-		CPMAddPackage (
-			NAME cpp_coverage
-			GITHUB_REPOSITORY ekcoh/cpp-coverage
-			GIT_TAG master
-			OPTIONS "CPP_COVERAGE_ENABLE_COV_COMMANDS ON"
-		)
-		# TODO set output types with quotes -> does not work :(
+		if (OPENCPPCOVERAGE)
+			CPMAddPackage (
+				NAME cpp_coverage
+				GITHUB_REPOSITORY ekcoh/cpp-coverage
+				GIT_TAG master
+				OPTIONS "CPP_COVERAGE_ENABLE_COV_COMMANDS ON"
+			)
+			# TODO set output types with quotes -> does not work :(
 
-		# unset(CPP_COVERAGE_REPORT_TYPE CACHE)
+			# unset(CPP_COVERAGE_REPORT_TYPE CACHE)
 
-		# set ( CPP_COVERAGE_REPORT_TYPE "\"Html;Badges\"" CACHE STRING "Report type passed to report tool via --reporttype argument" )
+			# set ( CPP_COVERAGE_REPORT_TYPE "\"Html;Badges\"" CACHE STRING "Report type passed to report tool via --reporttype argument" )
+		endif ()
 	endif ()
 
 	# Add the test executable
@@ -100,7 +109,7 @@ macro (ihta_add_test)
 
 	set_property (TARGET ${IHTA_ADD_TEST_NAME} PROPERTY FOLDER "UnitTest/${IHTA_ADD_TEST_IDE_FOLDER}")
 
-	if (OPENCPPCOVERAGE)
+	if (OPENCPPCOVERAGE AND IHTA_COMMON_ENABLE_CODE_COVERAGE)
 		if (DEFINED IHTA_ADD_TEST_TEST_TARGET)
 			get_target_property (IHTA_ADD_TEST_TEST_TARGET_SOURCE_DIR ${IHTA_ADD_TEST_TEST_TARGET} SOURCE_DIR)
 			list (APPEND IHTA_ADD_TEST_COV_SOURCES "${IHTA_ADD_TEST_TEST_TARGET_SOURCE_DIR}/include"
-- 
GitLab