Mercurial > irccd
annotate cmake/function/IrccdDefineTest.cmake @ 395:f9b4101fa51c
Tests: do not copy resources anymore
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 10 Jan 2017 15:16:09 +0100 |
parents | c6fbb6e0e06d |
children | beb6c638b841 |
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 | |
35 function(irccd_define_test) | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
36 set(oneValueArgs NAME) |
395
f9b4101fa51c
Tests: do not copy resources anymore
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
37 set(multiValueArgs SOURCES LIBRARIES FLAGS) |
0 | 38 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
39 cmake_parse_arguments(TEST "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
0 | 40 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
41 if (NOT TEST_NAME) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
42 message(FATAL_ERROR "Please set NAME") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
43 endif () |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
44 if (NOT TEST_SOURCES) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
45 message(FATAL_ERROR "Please set SOURCES") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
46 endif () |
0 | 47 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
48 # Always link to googletest |
295
6bf457b71e0c
Irccd: add new libirccd-test for unit tests
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
49 list(APPEND TEST_LIBRARIES libirccd-test) |
0 | 50 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
51 # Executable |
395
f9b4101fa51c
Tests: do not copy resources anymore
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
52 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
|
53 target_link_libraries(test-${TEST_NAME} ${TEST_LIBRARIES}) |
0 | 54 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
55 target_include_directories( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
56 test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
57 PRIVATE |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
58 ${irccd_SOURCE_DIR} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
59 ) |
0 | 60 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
61 target_compile_definitions( |
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 ${TEST_FLAGS} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
65 SOURCEDIR="${CMAKE_CURRENT_SOURCE_DIR}" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
66 BINARYDIR="${CMAKE_CURRENT_BINARY_DIR}" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
67 IRCCD_TESTS_DIRECTORY="${CMAKE_BINARY_DIR}/tests" |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
68 ) |
0 | 69 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
70 # Tests are all in the same directory |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
71 set_target_properties( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
72 test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
73 PROPERTIES |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
74 PROJECT_LABEL ${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
75 FOLDER test |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
76 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/tests |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
77 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
|
78 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
|
79 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
|
80 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
|
81 ) |
0 | 82 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
83 if (UNIX) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
84 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
|
85 endif () |
0 | 86 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
87 # And test |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
88 add_test( |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
89 NAME test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
90 COMMAND test-${TEST_NAME} |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
91 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
159
diff
changeset
|
92 ) |
0 | 93 endfunction() |