mirror of https://github.com/vitalif/openscad
70 lines
2.7 KiB
Plaintext
70 lines
2.7 KiB
Plaintext
# __header__
|
|
#
|
|
# Template to build a CTestCustom.cmake file in the build directory.
|
|
#
|
|
# This template enables ctest to do things before and after the test runs.
|
|
# In our case, 1. Setup a virtual framebuffer, 2. pretty-print results
|
|
#
|
|
# As a template, this file is read inside of CMakeList.txt and certain
|
|
# words (__word__) are replaced with the cmake build dir/etc, at the time that
|
|
# cmake itself is run. Typically these are signified by two underscores (__)
|
|
# before and after the word in smallcase.
|
|
|
|
# Part 0. X11 and Virtual Framebuffer, for headless Linux/BSD systems.
|
|
# This is not used by Windows or Mac because they have alternate means
|
|
# of accessing OpenGL.
|
|
|
|
set(debug_openscad_template 0)
|
|
|
|
if( __cmake_system_name__ MATCHES "Linux|BSD")
|
|
set(DISPLAY_ENV $ENV{DISPLAY})
|
|
if(DISPLAY_ENV)
|
|
message("X11 DISPLAY environment variable found.")
|
|
message("Assuming framebuffer exists at DISPLAY=${DISPLAY_ENV}")
|
|
else()
|
|
message("X11 DISPLAY environment variable not found. Calling virtualfb.sh")
|
|
execute_process(
|
|
COMMAND __cmake_current_source_dir__/virtualfb.sh OUTPUT_VARIABLE SVFB_OUT)
|
|
string(REGEX MATCH "DISPLAY=:[0-9.]*" VFB_DISPLAY_STR "${SVFB_OUT}")
|
|
string(REGEX MATCH ":[0-9.]*" VFB_DISPLAY "${VFB_DISPLAY_STR}")
|
|
string(REGEX MATCH "PID=[0-9.]*" VFB_PID_STR "${SVFB_OUT}")
|
|
string(REPLACE "PID=" "" VFB_PID "${VFB_PID_STR}")
|
|
|
|
if (debug_openscad_template)
|
|
message("Output from virtualfb.sh script: ${SVFB_OUT}")
|
|
message("Display: ${VFB_DISPLAY}")
|
|
message("Process ID of vfb: ${VFB_PID}")
|
|
endif()
|
|
if ("${VFB_DISPLAY}" STREQUAL "" OR "${VFB_PID}" STREQUAL "")
|
|
set(VFBLOG "virtualfb.log")
|
|
message("Virtual framebuffer had a problem starting. Printing ${VFBLOG}")
|
|
execute_process(COMMAND cat virtualfb.log OUTPUT_VARIABLE VFBLOGTXT)
|
|
message("Log: ${VFBLOGTXT}")
|
|
else()
|
|
message("Virtual framebuffer started. DISPLAY=${VFB_DISPLAY}, PID=${VFB_PID}")
|
|
endif()
|
|
|
|
|
|
# This line is the heart of the mechanism by which ctest is able to take
|
|
# the DISPLAY env variable of the Virtual Framebuffer it just started, and
|
|
# pass it on to its child processes (the tests from CTestTestfile.cmake
|
|
# in the build directory).
|
|
set(ENV{DISPLAY} "${VFB_DISPLAY}")
|
|
|
|
set(CTEST_CUSTOM_POST_TEST "__cmake_current_source_dir__/virtualfb.sh")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
# Part 1. Pretty Printing
|
|
|
|
message("running 'opencsgtest --info' to generate sysinfo.txt")
|
|
execute_process(COMMAND __wine__ __cmake_current_binary_dir__/opencsgtest --info OUTPUT_FILE sysinfo.txt)
|
|
set(CTEST_CUSTOM_POST_TEST ${CTEST_CUSTOM_POST_TEST} "__cmake_current_binary_dir__/test_pretty_print")
|
|
|
|
if ( ${debug_openscad_template} )
|
|
foreach(post_test ${CTEST_CUSTOM_POST_TEST} )
|
|
message("Post test:" ${post_test})
|
|
endforeach()
|
|
endif()
|