diff options
author | Stefan Dinkelacker <s.dinkelacker@dkfz-heidelberg.de> | 2020-01-31 17:09:35 (GMT) |
---|---|---|
committer | Stefan Dinkelacker <s.dinkelacker@dkfz-heidelberg.de> | 2020-01-31 17:17:13 (GMT) |
commit | a39d4139d07eee841016ddccde0e7c35d40c894c (patch) | |
tree | 16ecd9c12b45d49e37a04d1e215567ecdb5a01e8 /Source/cmCTest.cxx | |
parent | 08774385995777e2e2f9a72055e782b2b6d96cfa (diff) | |
download | CMake-a39d4139d07eee841016ddccde0e7c35d40c894c.zip CMake-a39d4139d07eee841016ddccde0e7c35d40c894c.tar.gz CMake-a39d4139d07eee841016ddccde0e7c35d40c894c.tar.bz2 |
Add --no-tests=<[error|ignore]> option to CTest
If no tests were found, the default behavior of CTest is to always log an
error message but to return an error code in script mode only. This option
unifies the behavior of CTest by either returning an error code if no tests
were found or by ignoring it.
Signed-off-by: Stefan Dinkelacker <s.dinkelacker@dkfz-heidelberg.de>
Diffstat (limited to 'Source/cmCTest.cxx')
-rw-r--r-- | Source/cmCTest.cxx | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 22a6e38..04f75bd 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -208,6 +208,8 @@ struct cmCTest::Private bool OutputColorCode = cmCTest::ColoredOutputSupportedByConsole(); std::map<std::string, std::string> Definitions; + + cmCTest::NoTests NoTestsMode = cmCTest::NoTests::Legacy; }; struct tm* cmCTest::GetNightlyTime(std::string const& str, bool tomorrowtag) @@ -2059,6 +2061,19 @@ bool cmCTest::HandleCommandLineArguments(size_t& i, this->SetNotesFiles(args[i].c_str()); } + const std::string noTestsPrefix = "--no-tests="; + if (cmHasPrefix(arg, noTestsPrefix)) { + const std::string noTestsMode = arg.substr(noTestsPrefix.length()); + if (noTestsMode == "error") { + this->Impl->NoTestsMode = cmCTest::NoTests::Error; + } else if (noTestsMode != "ignore") { + errormsg = "'--no-tests=' given unknown value '" + noTestsMode + "'"; + return false; + } else { + this->Impl->NoTestsMode = cmCTest::NoTests::Ignore; + } + } + // options that control what tests are run if (this->CheckArgument(arg, "-I", "--tests-information") && i < args.size() - 1) { @@ -2896,6 +2911,11 @@ cmCTest::Repeat cmCTest::GetRepeatMode() const return this->Impl->RepeatMode; } +cmCTest::NoTests cmCTest::GetNoTestsMode() const +{ + return this->Impl->NoTestsMode; +} + void cmCTest::SetBuildID(const std::string& id) { this->Impl->BuildID = id; |