Mercurial > irccd
annotate cmake/function/IrccdDefineTest.cmake @ 500:458e34f16c1f
Irccd: rework native plugins, closes #707
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 02 Oct 2017 13:05:30 +0200 |
parents | 349fe29d86d5 |
children | c9a6d9df083f |
rev | line source |
---|---|
0 | 1 # |
2 # IrccdDefineTest.cmake -- CMake build system for irccd | |
3 # | |
394 | 4 # Copyright (c) 2013-2017 David Demelier <markand@malikania.fr> |
0 | 5 # |
6 # Permission to use, copy, modify, and/or distribute this software for any | |
7 # purpose with or without fee is hereby granted, provided that the above | |
8 # copyright notice and this permission notice appear in all copies. | |
9 # | |
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 # | |
18 | |
19 # | |
20 # irccd_define_test | |
21 # ------------------------------------------------------------------- | |
22 # | |
23 # irccd_define_test( | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
24 # NAME the test name |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
25 # SOURCES the sources files |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
26 # LIBRARIES (Optional) libraries to link |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
27 # FLAGS (Optional) compilation flags |
0 | 28 # ) |
29 # | |
30 # Create a unit test named test-${NAME} | |
31 # | |
32 # Resources files are copied VERBATIM into the same directory. | |
33 # | |
34 | |
489
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
35 find_package(Boost REQUIRED COMPONENTS unit_test_framework) |
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
36 |
0 | 37 function(irccd_define_test) |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
38 set(oneValueArgs NAME) |
395
f9b4101fa51c
Tests: do not copy resources anymore
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
39 set(multiValueArgs SOURCES LIBRARIES FLAGS) |
0 | 40 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
41 cmake_parse_arguments(TEST "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
0 | 42 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
43 if (NOT TEST_NAME) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
44 message(FATAL_ERROR "Please set NAME") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
45 endif () |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
46 if (NOT TEST_SOURCES) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
47 message(FATAL_ERROR "Please set SOURCES") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
48 endif () |
0 | 49 |
489
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
50 list( |
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
51 APPEND |
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
52 TEST_LIBRARIES |
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
53 libirccd-test |
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
54 Boost::unit_test_framework |
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
55 ) |
0 | 56 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
57 # Executable |
395
f9b4101fa51c
Tests: do not copy resources anymore
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
58 add_executable(test-${TEST_NAME} ${TEST_SOURCES}) |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
59 target_link_libraries(test-${TEST_NAME} ${TEST_LIBRARIES}) |
0 | 60 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
61 target_include_directories( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
62 test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
63 PRIVATE |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
64 ${irccd_SOURCE_DIR} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
65 ) |
0 | 66 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
67 target_compile_definitions( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
68 test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
69 PRIVATE |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
70 ${TEST_FLAGS} |
489
349fe29d86d5
Tests: switch to Boost, closes #680
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
71 BOOST_TEST_DYN_LINK |
487
beb6c638b841
Tests: create plugin_test fixture, closes #677
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
72 CMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR}" |
500
458e34f16c1f
Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
489
diff
changeset
|
73 CMAKE_CURRENT_BINARY_DIR="${CMAKE_CURRENT_BINARY_DIR}" |
487
beb6c638b841
Tests: create plugin_test fixture, closes #677
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
74 CMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
75 SOURCEDIR="${CMAKE_CURRENT_SOURCE_DIR}" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
76 BINARYDIR="${CMAKE_CURRENT_BINARY_DIR}" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
77 IRCCD_TESTS_DIRECTORY="${CMAKE_BINARY_DIR}/tests" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
78 ) |
0 | 79 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
80 # Tests are all in the same directory |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
81 set_target_properties( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
82 test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
83 PROPERTIES |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
84 PROJECT_LABEL ${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
85 FOLDER test |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
86 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/tests |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
87 RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/tests |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
88 RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/tests |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
89 RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/tests |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
90 RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR}/tests |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
91 ) |
0 | 92 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
93 if (UNIX) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
94 set_target_properties(test-${TEST_NAME} PROPERTIES LINK_FLAGS -pthread) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
95 endif () |
0 | 96 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
97 # And test |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
98 add_test( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
99 NAME test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
100 COMMAND test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
101 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
102 ) |
0 | 103 endfunction() |