summaryrefslogtreecommitdiff
blob: fe8675418894135f442bc2ae8cc2c8e6240904a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
From b99d2d2c5dedcaba9745dddc1dd7b8d4811babf1 Mon Sep 17 00:00:00 2001
From: Kevin Funk <kfunk@kde.org>
Date: Mon, 7 Aug 2017 15:50:25 +0200
Subject: RFC: Make ECMAddTests respect BUILD_TESTING

Summary:
Use-case: Make building unit tests optional, by just following the CMake
BUILD_TESTING option.

The usual approach to conditionally build tests is to do:
```
if (BUILD_TESTING)
    add_executable(TestOne TestOne.cpp)
    target_link_libraries(TestOne my_library)
endif()
```

or:

```
if (BUILD_TESTING)
    add_subdirectory(tests)
endif()
```

This patch just turns all calls to ecm_add_test(...) into no-ops if
BUILD_TESTING=OFF.

See:
  https://cmake.org/cmake/help/v3.6/module/CTest.html

Reviewers: vkrause

Reviewed By: vkrause

Subscribers: kossebau, vkrause, elvisangelaccio, asturmlechner, apol, #frameworks, #build_system

Tags: #frameworks, #build_system

Differential Revision: https://phabricator.kde.org/D7187
---
 modules/ECMAddTests.cmake | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/modules/ECMAddTests.cmake b/modules/ECMAddTests.cmake
index 9667388..c77a7aa 100644
--- a/modules/ECMAddTests.cmake
+++ b/modules/ECMAddTests.cmake
@@ -49,6 +49,12 @@
 # be given; this will be used for both the target and test names (and, as with
 # ecm_add_tests(), the NAME_PREFIX argument will be prepended to the test name).
 #
+# If BUILD_TESTING is set to OFF, ecm_add_test will turn into a no-op and thus
+# will not add any test-related targets
+#
+# BUILD_TESTING is created as a cache variable by the CTest module and by the
+# :kde-module:`KDECMakeSettings` module.
+#
 #
 # Since pre-1.0.0.
 
@@ -84,6 +90,10 @@ include(ECMMarkAsTest)
 include(ECMMarkNonGuiExecutable)
 
 function(ecm_add_test)
+  if(NOT BUILD_TESTING)
+      return() # turn this function into a no-op
+  endif()
+
   set(options GUI)
   # TARGET_NAME_VAR and TEST_NAME_VAR are undocumented args used by
   # ecm_add_tests
-- 
cgit v0.11.2