mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-04 13:19:51 -05:00
cmCTest*Command: Fortify argument parsing
Fix tests that pass `CDASH_UPLOAD` or `SCHEDULE_RANDOM` without an argument.
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -25,7 +25,7 @@ public:
|
||||
using cmCTestCommand::cmCTestCommand;
|
||||
|
||||
protected:
|
||||
struct BasicArguments
|
||||
struct BasicArguments : ArgumentParser::ParseResult
|
||||
{
|
||||
std::string CaptureCMakeError;
|
||||
std::vector<cm::string_view> ParsedKeywords;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user