cmCTest*Command: Fortify argument parsing

Fix tests that pass `CDASH_UPLOAD` or `SCHEDULE_RANDOM` without an argument.
This commit is contained in:
Daniel Pfeifer
2024-10-27 07:45:09 +01:00
parent ff2ec0387a
commit caa449493b
5 changed files with 18 additions and 7 deletions
+4
View File
@@ -80,6 +80,10 @@ bool cmCTestHandlerCommand::InvokeImpl(
}
bool success = [&]() -> bool {
if (args.MaybeReportError(status.GetMakefile())) {
return true;
}
std::sort(args.ParsedKeywords.begin(), args.ParsedKeywords.end());
auto const it = std::adjacent_find(args.ParsedKeywords.begin(),
args.ParsedKeywords.end());
+1 -1
View File
@@ -25,7 +25,7 @@ public:
using cmCTestCommand::cmCTestCommand;
protected:
struct BasicArguments
struct BasicArguments : ArgumentParser::ParseResult
{
std::string CaptureCMakeError;
std::vector<cm::string_view> ParsedKeywords;
-4
View File
@@ -484,10 +484,6 @@ void cmCTestSubmitHandler::ParseResponse(
int cmCTestSubmitHandler::HandleCDashUploadFile(std::string const& file,
std::string const& typeString)
{
if (file.empty()) {
cmCTestLog(this->CTest, ERROR_MESSAGE, "Upload file not specified\n");
return -1;
}
if (!cmSystemTools::FileExists(file)) {
cmCTestLog(this->CTest, ERROR_MESSAGE,
"Upload file not found: '" << file << "'\n");
@@ -31,10 +31,18 @@ elseif(CTEST_RESOURCE_SPEC_SOURCE STREQUAL "CACHE")
list(APPEND config_options "-DCTEST_RESOURCE_SPEC_FILE=@RunCMake_SOURCE_DIR@/resspec.json")
endif()
set(test_args)
if(DEFINED CTEST_PARALLEL)
list(APPEND test_args PARALLEL_LEVEL ${CTEST_PARALLEL})
endif()
if(DEFINED CTEST_RANDOM)
list(APPEND test_args SCHEDULE_RANDOM ${CTEST_RANDOM})
endif()
ctest_start(Experimental QUIET)
ctest_configure(OPTIONS "${config_options}")
ctest_build()
ctest_test(${resspec} RETURN_VALUE retval PARALLEL_LEVEL ${CTEST_PARALLEL} SCHEDULE_RANDOM ${CTEST_RANDOM})
ctest_test(${resspec} RETURN_VALUE retval ${test_args})
if(retval)
message(FATAL_ERROR "Tests did not pass")
endif()
@@ -1 +1,4 @@
Upload file not specified
^CMake Error at .*Tests/RunCMake/ctest_submit/CDashUploadNone/test.cmake:[0-9]+ \(ctest_submit\):
Error after keyword "CDASH_UPLOAD":
missing required value