blob: 16d02f26a9548c2c3c8f019838663fab934215a0 [file] [log] [blame]
execute_process(
COMMAND ${CMAKE_COMMAND} -E environment
OUTPUT_VARIABLE out
ERROR_VARIABLE err
RESULT_VARIABLE res)
if (res)
message(FATAL_ERROR "Failed with exit code ${res}: ${err}")
endif ()
if (CMAKE_HOST_WIN32)
set(path_sep ";")
else ()
set(path_sep ":")
endif ()
set(unexpect_UNSET_EXPLICIT "")
set(unexpect_UNSET_VIA_RESET "")
set(expect_DIRECT "new")
set(expect_STRING_MANIP "prefix-pre-core-post-suffix")
set(expect_PATH_MANIP "prefix${path_sep}pre${path_sep}core${path_sep}post${path_sep}suffix")
set(expect_CMAKE_LIST_MANIP "prefix;pre;core;post;suffix")
set(expected_vars
DIRECT
STRING_MANIP
PATH_MANIP
CMAKE_LIST_MANIP)
while (out)
string(FIND "${out}" "\n" nl_pos)
string(SUBSTRING "${out}" 0 "${nl_pos}" line)
math(EXPR line_next "${nl_pos} + 1")
string(SUBSTRING "${out}" "${line_next}" -1 out)
string(FIND "${line}" "=" eq_pos)
string(SUBSTRING "${line}" 0 "${eq_pos}" name)
math(EXPR value_start "${eq_pos} + 1")
string(SUBSTRING "${line}" "${value_start}" -1 value)
if (DEFINED "unexpect_${name}")
message(SEND_ERROR "Found `${name}=${value}` when it should have been unset")
elseif (DEFINED "expect_${name}")
list(REMOVE_ITEM expected_vars "${name}")
if (expect_${name} STREQUAL value)
message(STATUS "Found `${name}=${value}` as expected")
else ()
message(SEND_ERROR "Found `${name}=${value}` when it should have been ${expect_${name}}")
endif ()
endif ()
endwhile ()
if (expected_vars)
message(SEND_ERROR "Did not test expected variables: ${expected_vars}")
endif ()