Tests/RunCMake/CXXModules: Improve failure message formatting

This commit is contained in:
Brad King
2024-10-21 19:53:17 -04:00
parent 0b535ba7be
commit bc69ff7c6d

View File

@@ -50,8 +50,8 @@ endfunction ()
function (check_json_value path actual_type expect_type actual_value expect_value)
if (NOT actual_type STREQUAL expect_type)
list(APPEND RunCMake_TEST_FAILED
"Type mismatch at ${path}: ${actual_type} vs. ${expect_type}")
string(APPEND RunCMake_TEST_FAILED
"Type mismatch at:\n ${path}\nexpected:\n ${expect_type}\nactual:\n ${actual_type}\n")
set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
return ()
endif ()
@@ -60,13 +60,13 @@ function (check_json_value path actual_type expect_type actual_value expect_valu
# Nothing to check
elseif (actual_type STREQUAL BOOLEAN)
if (NOT actual_value STREQUAL expect_value)
list(APPEND RunCMake_TEST_FAILED
"Boolean mismatch at ${path}: ${actual_value} vs. ${expect_value}")
string(APPEND RunCMake_TEST_FAILED
"Boolean mismatch at:\n ${path}\nexpected:\n ${expect_value}\nactual:\n ${actual_value}\n")
endif ()
elseif (actual_type STREQUAL NUMBER)
if (NOT actual_value EQUAL expect_value)
list(APPEND RunCMake_TEST_FAILED
"Number mismatch at ${path}: ${actual_value} vs. ${expect_value}")
string(APPEND RunCMake_TEST_FAILED
"Number mismatch at:\n ${path}\nexpected:\n ${expect_value}\nactual:\n ${actual_value}\n")
endif ()
elseif (actual_type STREQUAL STRING)
# Allow some values to be ignored.
@@ -79,24 +79,24 @@ function (check_json_value path actual_type expect_type actual_value expect_valu
string(REPLACE "\\" "/" actual_value_check "${actual_value}")
string(REGEX REPLACE "^\"(.*)\"$" "\\1" actual_value_check "${actual_value_check}")
if (NOT actual_value_check MATCHES "^${expect_value_expanded}$")
list(APPEND RunCMake_TEST_FAILED
"String mismatch (path regex) at ${path}: ${actual_value} vs. ^${expect_value_expanded}$")
string(APPEND RunCMake_TEST_FAILED
"String mismatch (path regex) at:\n ${path}\nexpected:\n ^${expect_value_expanded}$\nactual:\n ${actual_value}\n")
endif ()
elseif (expect_value MATCHES "^REGEX:")
if (NOT actual_value MATCHES "^${expect_value_expanded}$")
list(APPEND RunCMake_TEST_FAILED
"String mismatch (regex) at ${path}: ${actual_value} vs. ^${expect_value_expanded}$")
string(APPEND RunCMake_TEST_FAILED
"String mismatch (regex) at:\n ${path}\nexpected:\n ^${expect_value_expanded}$\nactual:\n ${actual_value}\n")
endif ()
elseif (expect_value MATCHES "^PATH:")
string(REPLACE "\\" "/" actual_value_check "${actual_value}")
string(REGEX REPLACE "^\"(.*)\"$" "\\1" actual_value_check "${actual_value_check}")
if (NOT actual_value_check STREQUAL "${expect_value_expanded}")
list(APPEND RunCMake_TEST_FAILED
"String mismatch (path) at ${path}: ${actual_value} vs. ^${expect_value_expanded}$")
string(APPEND RunCMake_TEST_FAILED
"String mismatch (path) at:\n ${path}\nexpected:\n ${expect_value_expanded}\nactual:\n ${actual_value}\n")
endif ()
elseif (NOT actual_value STREQUAL expect_value_expanded)
list(APPEND RunCMake_TEST_FAILED
"String mismatch at ${path}: ${actual_value} vs. ${expect_value_expanded}")
string(APPEND RunCMake_TEST_FAILED
"String mismatch at:\n ${path}\nexpected:\n ${expect_value_expanded}\nactual:\n ${actual_value}\n")
endif ()
elseif (actual_type STREQUAL ARRAY)
check_json_array("${path}" "${actual_value}" "${expect_value}")
@@ -130,11 +130,11 @@ function (check_json_array path actual expect)
set(iter_len "${actual_len}")
if (actual_len LESS expect_len)
list(APPEND RunCMake_TEST_FAILED
"Missing array items at ${path}")
string(APPEND RunCMake_TEST_FAILED
"Missing array items at:\n ${path}\n")
elseif (expect_len LESS actual_len)
list(APPEND RunCMake_TEST_FAILED
"Extra array items at ${path}")
string(APPEND RunCMake_TEST_FAILED
"Extra array items at:\n ${path}\n")
set(iter_len "${expect_len}")
endif ()
@@ -200,13 +200,13 @@ function (check_json_object path actual expect)
if (actual_keys_missed)
string(REPLACE ";" ", " actual_keys_missed_text "${actual_keys_missed}")
list(APPEND RunCMake_TEST_FAILED
"Extra unexpected members at ${path}: ${actual_keys_missed_text}")
string(APPEND RunCMake_TEST_FAILED
"Extra unexpected members at:\n ${path}\nactual:\n ${actual_keys_missed_text}\n")
endif ()
if (expect_keys_missed)
string(REPLACE ";" ", " expect_keys_missed_text "${expect_keys_missed}")
list(APPEND RunCMake_TEST_FAILED
"Missing expected members at ${path}: ${expect_keys_missed_text}")
string(APPEND RunCMake_TEST_FAILED
"Missing expected members at\n ${path}\nactual:\n ${expect_keys_missed_text}\n")
endif ()
foreach (key IN LISTS common_keys)