Austin Schuh | 1eb16d1 | 2015-09-06 17:21:56 -0700 | [diff] [blame] | 1 | # ---------------------------------------------------------------------------- |
| 2 | # sanitize string stored in variable for use in regular expression. |
| 3 | macro (sanitize_for_regex STRVAR) |
| 4 | string (REGEX REPLACE "([.+*?^$()])" "\\\\\\1" ${STRVAR} "${${STRVAR}}") |
| 5 | endmacro () |
| 6 | |
| 7 | # ---------------------------------------------------------------------------- |
| 8 | # script arguments |
| 9 | if (NOT COMMAND) |
| 10 | message (FATAL_ERROR "Test command not specified!") |
| 11 | endif () |
| 12 | if (NOT DEFINED EXPECTED_RC) |
| 13 | set (EXPECTED_RC 0) |
| 14 | endif () |
| 15 | if (EXPECTED_OUTPUT) |
| 16 | sanitize_for_regex(EXPECTED_OUTPUT) |
| 17 | endif () |
| 18 | if (UNEXPECTED_OUTPUT) |
| 19 | sanitize_for_regex(UNEXPECTED_OUTPUT) |
| 20 | endif () |
| 21 | |
| 22 | # ---------------------------------------------------------------------------- |
| 23 | # set a few environment variables (useful for --tryfromenv) |
| 24 | set (ENV{FLAGS_undefok} "foo,bar") |
| 25 | set (ENV{FLAGS_weirdo} "") |
| 26 | set (ENV{FLAGS_version} "true") |
| 27 | set (ENV{FLAGS_help} "false") |
| 28 | |
| 29 | # ---------------------------------------------------------------------------- |
| 30 | # execute test command |
| 31 | execute_process( |
| 32 | COMMAND ${COMMAND} |
| 33 | RESULT_VARIABLE RC |
| 34 | OUTPUT_VARIABLE OUTPUT |
| 35 | ERROR_VARIABLE OUTPUT |
| 36 | ) |
| 37 | |
| 38 | if (OUTPUT) |
| 39 | message ("${OUTPUT}") |
| 40 | endif () |
| 41 | |
| 42 | # ---------------------------------------------------------------------------- |
| 43 | # check test result |
| 44 | if (NOT RC EQUAL EXPECTED_RC) |
| 45 | string (REPLACE ";" " " COMMAND "${COMMAND}") |
| 46 | message (FATAL_ERROR "Command:\n\t${COMMAND}\nExit status is ${RC}, expected ${EXPECTED_RC}") |
| 47 | endif () |
| 48 | if (EXPECTED_OUTPUT AND NOT OUTPUT MATCHES "${EXPECTED_OUTPUT}") |
| 49 | message (FATAL_ERROR "Test output does not match expected output: ${EXPECTED_OUTPUT}") |
| 50 | endif () |
| 51 | if (UNEXPECTED_OUTPUT AND OUTPUT MATCHES "${UNEXPECTED_OUTPUT}") |
| 52 | message (FATAL_ERROR "Test output matches unexpected output: ${UNEXPECTED_OUTPUT}") |
| 53 | endif () |