File: execute_test.cmake

package info (click to toggle)
spring 105.0.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 108,860 kB
  • sloc: cpp: 467,785; ansic: 302,607; python: 12,925; java: 12,201; awk: 5,889; sh: 2,371; xml: 655; perl: 405; php: 276; objc: 194; makefile: 75; sed: 2
file content (53 lines) | stat: -rw-r--r-- 1,780 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# ----------------------------------------------------------------------------
# sanitize string stored in variable for use in regular expression.
macro (sanitize_for_regex STRVAR)
  string (REGEX REPLACE "([.+*?^$()])" "\\\\\\1" ${STRVAR} "${${STRVAR}}")
endmacro ()

# ----------------------------------------------------------------------------
# script arguments
if (NOT COMMAND)
  message (FATAL_ERROR "Test command not specified!")
endif ()
if (NOT DEFINED EXPECTED_RC)
  set (EXPECTED_RC 0)
endif ()
if (EXPECTED_OUTPUT)
  sanitize_for_regex(EXPECTED_OUTPUT)
endif ()
if (UNEXPECTED_OUTPUT)
  sanitize_for_regex(UNEXPECTED_OUTPUT)
endif ()

# ----------------------------------------------------------------------------
# set a few environment variables (useful for --tryfromenv)
set (ENV{FLAGS_undefok} "foo,bar")
set (ENV{FLAGS_weirdo}  "")
set (ENV{FLAGS_version} "true")
set (ENV{FLAGS_help}    "false")

# ----------------------------------------------------------------------------
# execute test command
execute_process(
  COMMAND ${COMMAND}
  RESULT_VARIABLE RC
  OUTPUT_VARIABLE OUTPUT
  ERROR_VARIABLE  OUTPUT
)

if (OUTPUT)
  message ("${OUTPUT}")
endif ()

# ----------------------------------------------------------------------------
# check test result
if (NOT RC EQUAL EXPECTED_RC)
  string (REPLACE ";" " " COMMAND "${COMMAND}")
  message (FATAL_ERROR "Command:\n\t${COMMAND}\nExit status is ${RC}, expected ${EXPECTED_RC}")
endif ()
if (EXPECTED_OUTPUT AND NOT OUTPUT MATCHES "${EXPECTED_OUTPUT}")
  message (FATAL_ERROR "Test output does not match expected output: ${EXPECTED_OUTPUT}")
endif ()
if (UNEXPECTED_OUTPUT AND OUTPUT MATCHES "${UNEXPECTED_OUTPUT}")
  message (FATAL_ERROR "Test output matches unexpected output: ${UNEXPECTED_OUTPUT}")
endif ()