22set -e # break script on non-zero exitcode from any command
33set -x # display command being executed
44
5+ startXvfb () {
6+ # Xvfb sends SIGUSR1 to its parent when it finished startup, this causes the 'wait' below to stop waiting
7+ # Starting Xvfb hangs on OSX, that's why we do this on Linux only now
8+ if [[ " ${TRAVIS_OS_NAME} " = " linux" ]]; then
9+ trap : USR1
10+ (trap ' ' USR1; Xvfb $DISPLAY -screen 0 640x480x8 -nolisten tcp > /dev/null 2>&1 ) &
11+ XVFBPID=$!
12+ wait || :
13+ trap ' ' USR1
14+ if ! kill -0 $XVFBPID 2> /dev/null; then
15+ echo " Xvfb failed to start" >&2
16+ exit 1
17+ fi
18+ else
19+ sudo Xvfb $DISPLAY -screen 0 640x480x8 -nolisten tcp > /dev/null 2>&1 &
20+ XVFBPID=$!
21+ sleep 5
22+ fi
23+ }
24+
25+ killXvfb () {
26+ if [ -n " ${XVFBPID:- } " ]; then
27+ # Stop virtual X display server
28+ sudo kill $XVFBPID
29+ wait
30+ fi
31+ }
32+
533CTEST_OUTPUT_ON_FAILURE=ON
634export CTEST_OUTPUT_ON_FAILURE
735
@@ -27,26 +55,7 @@ cmake --build build
2755cmake --build build --target test
2856cmake --build build --target features
2957
30- # Start virtual X display server
31-
32- # Starting Xvfb hangs on OSX, that's why we do this on Linux only now
33- if [ " ${TRAVIS_OS_NAME} " = " linux" ]; then
34- DISPLAY=:99
35- export DISPLAY
36-
37- # Xvfb sends SIGUSR1 to its parent when it finished startup, this causes the 'wait' below to stop waiting
38- trap : USR1
39- (trap ' ' USR1; Xvfb $DISPLAY -screen 0 640x480x8 -nolisten tcp > /dev/null 2>&1 ) &
40- XVFBPID=$!
41- wait || :
42- trap ' ' USR1
43- if ! kill -0 $XVFBPID 2> /dev/null; then
44- echo " Xvfb failed to start" >&2
45- exit 1
46- fi
47- else
48- unset DISPLAY
49- fi
58+ startXvfb # Start virtual X display server
5059
5160for TEST in \
5261 build/examples/Calc/GTestCalculatorSteps \
@@ -83,8 +92,4 @@ if [ -f "${TEST}" ]; then
8392 wait %
8493fi
8594
86- if [ -n " ${XVFBPID:- } " ]; then
87- # Stop virtual X display server
88- kill $XVFBPID
89- wait
90- fi
95+ killXvfb
0 commit comments