mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
add_test: Restore support for empty test arguments
This was regressed by refactoring in commit e08ba229ee (CMake code rely
on cmList class for CMake lists management (part. 1), 2023-04-14,
v3.27.0-rc1~174^2). Fix it and add a test case.
Fixes: #24986
This commit is contained in:
@@ -152,7 +152,8 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os,
|
||||
this->EvaluateCommandLineArguments(this->Test->GetCommand(), ge, config),
|
||||
// Expand arguments if COMMAND_EXPAND_LISTS is set
|
||||
this->Test->GetCommandExpandLists() ? cmList::ExpandElements::Yes
|
||||
: cmList::ExpandElements::No
|
||||
: cmList::ExpandElements::No,
|
||||
cmList::EmptyElements::Yes
|
||||
};
|
||||
// Expanding lists on an empty command may have left it empty
|
||||
if (argv.empty()) {
|
||||
|
||||
11
Tests/RunCMake/add_test/CheckEmptyArgument.cmake
Normal file
11
Tests/RunCMake/add_test/CheckEmptyArgument.cmake
Normal file
@@ -0,0 +1,11 @@
|
||||
if (NOT CMAKE_ARGV4 STREQUAL "A")
|
||||
message(FATAL_ERROR "wrong parsing of arguments")
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_ARGV5 STREQUAL "")
|
||||
message(FATAL_ERROR "Empty argument was dropped")
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_ARGV6 STREQUAL "B")
|
||||
message(FATAL_ERROR "wrong parsing of arguments")
|
||||
endif()
|
||||
5
Tests/RunCMake/add_test/EmptyArgument.cmake
Normal file
5
Tests/RunCMake/add_test/EmptyArgument.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
enable_testing()
|
||||
add_test(
|
||||
NAME "EmptyArgument"
|
||||
COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_LIST_DIR}/CheckEmptyArgument.cmake" -- "A" "" "B"
|
||||
)
|
||||
@@ -33,3 +33,11 @@ foreach(case IN LISTS cases)
|
||||
run_case(OLD-${case})
|
||||
run_case(NEW-${case})
|
||||
endforeach()
|
||||
|
||||
block()
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/EmptyArgument-build)
|
||||
run_cmake(EmptyArgument)
|
||||
# Run ctest on the generated CTestTestfile.cmake.
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
run_cmake_command(EmptyArgument-ctest ${CMAKE_CTEST_COMMAND} -C Debug)
|
||||
endblock()
|
||||
|
||||
Reference in New Issue
Block a user