| set(configure_log "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/CMakeConfigureLog.yaml") |
| if (NOT EXISTS "${configure_log}") |
| set(RunCMake_TEST_FAILED "Configure log does not exist:\n ${configure_log}") |
| return () |
| endif () |
| |
| set(force_fail 0) |
| set(want_varname 0) |
| file(STRINGS "${configure_log}" lines REGEX "(kind:|variable:)") |
| foreach (line IN LISTS lines) |
| if (line MATCHES "kind:") |
| string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" kind "${line}") |
| if (kind MATCHES "try_") |
| set(force_fail 1) |
| set(want_varname 1) |
| endif () |
| elseif (want_varname AND line MATCHES "variable:") |
| string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" varname "${line}") |
| list(APPEND RunCMake_TEST_FAILED |
| "Found a `${kind}` event for `${varname}`") |
| set(want_varname 0) |
| endif () |
| endforeach () |
| |
| if (force_fail AND NOT RunCMake_TEST_FAILED) |
| set(RunCMake_TEST_FAILED "Found a failing event, but not its variable. Forcing a failure. See ${configure_log}") |
| endif () |