solvespace/test/CMakeLists.txt
whitequark 9301dec98d Use the same code for loading resources in all executables.
All of our executables need resources; e.g. the vector font is
a resource and it is necessary for generation. Before this commit,
the GUI executable loaded the resources in a nice way, and everything
else did it in a very ad-hoc, fragile way.

After this commit, all executables are placed in <build>/bin and
follow the same algorithm:
  * On Windows, resources are compiled and linked into every
    executable.
  * On Linux, resources are copied into <build>/res (which is
    tried first) and <prefix>/share/solvespace (which is tried
    second).
  * On macOS, resources are copied into <build>/res (which is
    tried first) and <build>/bin/solvespace.app/Contents/Resources
    (which is tried second).

In practice this means that we can add as many executables as we want
without duplicating lots of code. In addition, on macOS, we can
place supplementary executables into the bundle, and they can use
resources from the bundle transparently.
2016-11-28 06:18:42 +00:00

111 lines
3.8 KiB
CMake

# test suite
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR})
foreach(pkg_config_lib CAIRO)
include_directories(${${pkg_config_lib}_INCLUDE_DIRS})
link_directories(${${pkg_config_lib}_LIBRARY_DIRS})
endforeach()
set(testsuite_SOURCES
harness.cpp
constraint/points_coincident/test.cpp
constraint/pt_pt_distance/test.cpp
constraint/pt_plane_distance/test.cpp
constraint/pt_line_distance/test.cpp
constraint/pt_face_distance/test.cpp
constraint/proj_pt_distance/test.cpp
constraint/pt_in_plane/test.cpp
constraint/pt_on_line/test.cpp
constraint/pt_on_face/test.cpp
constraint/equal_length_lines/test.cpp
constraint/length_ratio/test.cpp
constraint/eq_len_pt_line_d/test.cpp
constraint/eq_pt_ln_distances/test.cpp
constraint/equal_angle/test.cpp
constraint/equal_line_arc_len/test.cpp
constraint/length_difference/test.cpp
constraint/symmetric/test.cpp
constraint/symmetric_horiz/test.cpp
constraint/symmetric_vert/test.cpp
constraint/symmetric_line/test.cpp
constraint/at_midpoint/test.cpp
constraint/horizontal/test.cpp
constraint/vertical/test.cpp
constraint/diameter/test.cpp
constraint/pt_on_circle/test.cpp
constraint/same_orientation/test.cpp
constraint/angle/test.cpp
constraint/parallel/test.cpp
constraint/perpendicular/test.cpp
constraint/arc_line_tangent/test.cpp
constraint/cubic_line_tangent/test.cpp
constraint/curve_curve_tangent/test.cpp
constraint/equal_radius/test.cpp
constraint/where_dragged/test.cpp
constraint/comment/test.cpp
request/arc_of_circle/test.cpp
request/circle/test.cpp
request/cubic/test.cpp
request/cubic_periodic/test.cpp
request/datum_point/test.cpp
request/line_segment/test.cpp
request/ttf_text/test.cpp
group/translate_asy/test.cpp
group/translate_nd/test.cpp
)
add_executable(solvespace_testsuite
${testsuite_SOURCES}
$<TARGET_PROPERTY:resources,EXTRA_SOURCES>)
target_link_libraries(solvespace_testsuite
solvespace_headless
${COVERAGE_LIBRARY})
add_dependencies(solvespace_testsuite
resources)
add_custom_target(solvespace-test ALL
COMMAND $<TARGET_FILE:solvespace_testsuite>
COMMENT "Testing SolveSpace"
VERBATIM)
# coverage reports
if(ENABLE_COVERAGE)
set(LCOV_FLAGS -q --gcov-tool ${GCOV})
set(LCOV_FLAGS ${LCOV_FLAGS} --rc lcov_branch_coverage=1)
set(LCOV_FLAGS ${LCOV_FLAGS} --rc "lcov_excl_line=(ssassert|switch)")
set(LCOV_FLAGS ${LCOV_FLAGS} --rc "lcov_excl_br_line=BRANCH_ALWAYS_TAKEN")
set(LCOV_COLLECT -c -b ${CMAKE_SOURCE_DIR}/src -d ${CMAKE_BINARY_DIR}/src --no-external)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/coverage_base.info
COMMAND ${LCOV} ${LCOV_FLAGS} ${LCOV_COLLECT}
-o ${CMAKE_BINARY_DIR}/coverage_base.info -i
DEPENDS solvespace_testsuite
COMMENT "Importing baseline coverage data"
VERBATIM)
add_custom_target(solvespace-coverage ALL
COMMAND ${LCOV} ${LCOV_FLAGS} ${LCOV_COLLECT}
-o ${CMAKE_BINARY_DIR}/coverage_test.info
COMMAND ${LCOV} ${LCOV_FLAGS}
-o ${CMAKE_BINARY_DIR}/coverage_full.info
-a ${CMAKE_BINARY_DIR}/coverage_base.info
-a ${CMAKE_BINARY_DIR}/coverage_test.info
COMMAND ${LCOV} ${LCOV_FLAGS} --summary
${CMAKE_BINARY_DIR}/coverage_full.info
COMMAND ${GENHTML} -q --branch-coverage --demangle-cpp --legend
${CMAKE_BINARY_DIR}/coverage_full.info
-o ${CMAKE_BINARY_DIR}/coverage/
-t "SolveSpace testbench"
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/coverage_base.info
DEPENDS solvespace-test
COMMENT "Generating coverage report"
VERBATIM)
endif()