summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/CTest/cmCTestRunTest.cxx8
-rw-r--r--Tests/Environment/CMakeLists.txt18
-rw-r--r--Tests/Environment/check_mod.cmake8
3 files changed, 27 insertions, 7 deletions
diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx
index 20f0ed3..2d1562a 100644
--- a/Source/CTest/cmCTestRunTest.cxx
+++ b/Source/CTest/cmCTestRunTest.cxx
@@ -800,13 +800,9 @@ bool cmCTestRunTest::ForkProcess(
auto apply_diff =
[&env_application](const std::string& name,
std::function<void(std::string&)> const& apply) {
- auto entry = env_application.find(name);
- std::string output;
- if (entry != env_application.end() && entry->second) {
- output = *entry->second;
- }
+ std::string output = env_application[name].value_or(std::string{});
apply(output);
- entry->second = output;
+ env_application[name] = output;
};
bool err_occurred = false;
diff --git a/Tests/Environment/CMakeLists.txt b/Tests/Environment/CMakeLists.txt
index 17009bd..5f1edbf 100644
--- a/Tests/Environment/CMakeLists.txt
+++ b/Tests/Environment/CMakeLists.txt
@@ -45,6 +45,12 @@ set_property(TEST EchoEnvironment3
"STRING_MANIP=string_append:suffix"
"STRING_MANIP=string_prepend:prefix"
+ # String manipulation on non-existent.
+ "STRING_DNE=string_append:post-"
+ "STRING_DNE=string_prepend:-pre"
+ "STRING_DNE=string_append:suffix"
+ "STRING_DNE=string_prepend:prefix"
+
# Path manipulation.
"PATH_MANIP=set:core"
"PATH_MANIP=path_list_append:post"
@@ -52,10 +58,22 @@ set_property(TEST EchoEnvironment3
"PATH_MANIP=path_list_append:suffix"
"PATH_MANIP=path_list_prepend:prefix"
+ # Path manipulation on non-existent.
+ "PATH_DNE=path_list_append:post"
+ "PATH_DNE=path_list_prepend:pre"
+ "PATH_DNE=path_list_append:suffix"
+ "PATH_DNE=path_list_prepend:prefix"
+
# CMake list manipulation.
"CMAKE_LIST_MANIP=set:core"
"CMAKE_LIST_MANIP=cmake_list_append:post"
"CMAKE_LIST_MANIP=cmake_list_prepend:pre"
"CMAKE_LIST_MANIP=cmake_list_append:suffix"
"CMAKE_LIST_MANIP=cmake_list_prepend:prefix"
+
+ # CMake list manipulation on non-existent.
+ "CMAKE_LIST_DNE=cmake_list_append:post"
+ "CMAKE_LIST_DNE=cmake_list_prepend:pre"
+ "CMAKE_LIST_DNE=cmake_list_append:suffix"
+ "CMAKE_LIST_DNE=cmake_list_prepend:prefix"
)
diff --git a/Tests/Environment/check_mod.cmake b/Tests/Environment/check_mod.cmake
index 16d02f2..179bd7a 100644
--- a/Tests/Environment/check_mod.cmake
+++ b/Tests/Environment/check_mod.cmake
@@ -20,12 +20,18 @@ 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(expect_STRING_DNE "prefix-prepost-suffix")
+set(expect_PATH_DNE "prefix${path_sep}pre${path_sep}post${path_sep}suffix")
+set(expect_CMAKE_LIST_DNE "prefix;pre;post;suffix")
set(expected_vars
DIRECT
STRING_MANIP
PATH_MANIP
- CMAKE_LIST_MANIP)
+ CMAKE_LIST_MANIP
+ STRING_DNE
+ PATH_DNE
+ CMAKE_LIST_DNE)
while (out)
string(FIND "${out}" "\n" nl_pos)