
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.
111 lines
3.8 KiB
CMake
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()
|