summaryrefslogtreecommitdiff
path: root/Source/cmTest.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmTest.cxx')
-rw-r--r--Source/cmTest.cxx186
1 files changed, 22 insertions, 164 deletions
diff --git a/Source/cmTest.cxx b/Source/cmTest.cxx
index 0904431d1..4d0cbaafc 100644
--- a/Source/cmTest.cxx
+++ b/Source/cmTest.cxx
@@ -1,205 +1,63 @@
-/*============================================================================
- CMake - Cross Platform Makefile Generator
- Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
- Distributed under the OSI-approved BSD License (the "License");
- see accompanying file Copyright.txt for details.
-
- This software is distributed WITHOUT ANY WARRANTY; without even the
- implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmTest.h"
-#include "cmSystemTools.h"
-#include "cmake.h"
#include "cmMakefile.h"
+#include "cmProperty.h"
+#include "cmState.h"
+#include "cmSystemTools.h"
-//----------------------------------------------------------------------------
cmTest::cmTest(cmMakefile* mf)
+ : Backtrace(mf->GetBacktrace())
{
this->Makefile = mf;
this->OldStyle = true;
- this->Properties.SetCMakeInstance(mf->GetCMakeInstance());
- this->Backtrace = new cmListFileBacktrace;
- this->Makefile->GetBacktrace(*this->Backtrace);
}
-//----------------------------------------------------------------------------
cmTest::~cmTest()
{
- delete this->Backtrace;
}
-//----------------------------------------------------------------------------
cmListFileBacktrace const& cmTest::GetBacktrace() const
{
- return *this->Backtrace;
+ return this->Backtrace;
}
-//----------------------------------------------------------------------------
-void cmTest::SetName(const char* name)
+void cmTest::SetName(const std::string& name)
{
- if ( !name )
- {
- name = "";
- }
this->Name = name;
}
-//----------------------------------------------------------------------------
void cmTest::SetCommand(std::vector<std::string> const& command)
{
this->Command = command;
}
-//----------------------------------------------------------------------------
-const char *cmTest::GetProperty(const char* prop) const
+const char* cmTest::GetProperty(const std::string& prop) const
{
- bool chain = false;
- const char *retVal =
- this->Properties.GetPropertyValue(prop, cmProperty::TEST, chain);
- if (chain)
- {
- return this->Makefile->GetProperty(prop,cmProperty::TEST);
+ const char* retVal = this->Properties.GetPropertyValue(prop);
+ if (!retVal) {
+ const bool chain =
+ this->Makefile->GetState()->IsPropertyChained(prop, cmProperty::TEST);
+ if (chain) {
+ return this->Makefile->GetProperty(prop, chain);
}
+ }
return retVal;
}
-//----------------------------------------------------------------------------
-bool cmTest::GetPropertyAsBool(const char* prop) const
+bool cmTest::GetPropertyAsBool(const std::string& prop) const
{
return cmSystemTools::IsOn(this->GetProperty(prop));
}
-//----------------------------------------------------------------------------
-void cmTest::SetProperty(const char* prop, const char* value)
+void cmTest::SetProperty(const std::string& prop, const char* value)
{
- if (!prop)
- {
- return;
- }
-
- this->Properties.SetProperty(prop, value, cmProperty::TEST);
+ this->Properties.SetProperty(prop, value);
}
-//----------------------------------------------------------------------------
-void cmTest::AppendProperty(const char* prop, const char* value, bool asString)
+void cmTest::AppendProperty(const std::string& prop, const char* value,
+ bool asString)
{
- if (!prop)
- {
- return;
- }
- this->Properties.AppendProperty(prop, value, cmProperty::TEST, asString);
-}
-
-//----------------------------------------------------------------------------
-void cmTest::DefineProperties(cmake *cm)
-{
- cm->DefineProperty
- ("ATTACHED_FILES", cmProperty::TEST,
- "Attach a list of files to a dashboard submission.",
- "Set this property to a list of files that will be encoded and "
- "submitted to the dashboard as an addition to the test result.");
-
- cm->DefineProperty
- ("ATTACHED_FILES_ON_FAIL", cmProperty::TEST,
- "Attach a list of files to a dashboard submission if the test fails.",
- "Same as ATTACHED_FILES, but these files will only be included if the "
- "test does not pass.");
-
- cm->DefineProperty
- ("COST", cmProperty::TEST,
- "Set this to a floating point value. Tests in a test set will be "
- "run in descending order of cost.", "This property describes the cost "
- "of a test. You can explicitly set this value; tests with higher COST "
- "values will run first.");
-
- cm->DefineProperty
- ("DEPENDS", cmProperty::TEST,
- "Specifies that this test should only be run after the specified "
- "list of tests.",
- "Set this to a list of tests that must finish before this test is run.");
-
- cm->DefineProperty
- ("ENVIRONMENT", cmProperty::TEST,
- "Specify environment variables that should be defined for running "
- "a test.",
- "If set to a list of environment variables and values of the form "
- "MYVAR=value those environment variables will be defined while "
- "running the test. The environment is restored to its previous state "
- "after the test is done.");
-
- cm->DefineProperty
- ("FAIL_REGULAR_EXPRESSION", cmProperty::TEST,
- "If the output matches this regular expression the test will fail.",
- "If set, if the output matches one of "
- "specified regular expressions, the test will fail."
- "For example: FAIL_REGULAR_EXPRESSION \"[^a-z]Error;ERROR;Failed\"");
-
- cm->DefineProperty
- ("LABELS", cmProperty::TEST,
- "Specify a list of text labels associated with a test.",
- "The list is reported in dashboard submissions.");
-
- cm->DefineProperty
- ("RESOURCE_LOCK", cmProperty::TEST,
- "Specify a list of resources that are locked by this test.",
- "If multiple tests specify the same resource lock, they are guaranteed "
- "not to run concurrently.");
-
- cm->DefineProperty
- ("MEASUREMENT", cmProperty::TEST,
- "Specify a CDASH measurement and value to be reported for a test.",
- "If set to a name then that name will be reported to CDASH as a "
- "named measurement with a value of 1. You may also specify a value "
- "by setting MEASUREMENT to \"measurement=value\".");
-
- cm->DefineProperty
- ("PASS_REGULAR_EXPRESSION", cmProperty::TEST,
- "The output must match this regular expression for the test to pass.",
- "If set, the test output will be checked "
- "against the specified regular expressions and at least one of the"
- " regular expressions has to match, otherwise the test will fail.");
-
- cm->DefineProperty
- ("PROCESSORS", cmProperty::TEST,
- "How many process slots this test requires",
- "Denotes the number of processors that this test will require. This is "
- "typically used for MPI tests, and should be used in conjunction with "
- "the ctest_test PARALLEL_LEVEL option.");
-
- cm->DefineProperty
- ("REQUIRED_FILES", cmProperty::TEST,
- "List of files required to run the test.",
- "If set to a list of files, the test will not be run unless all of the "
- "files exist.");
-
- cm->DefineProperty
- ("RUN_SERIAL", cmProperty::TEST,
- "Do not run this test in parallel with any other test.",
- "Use this option in conjunction with the ctest_test PARALLEL_LEVEL "
- "option to specify that this test should not be run in parallel with "
- "any other tests.");
-
- cm->DefineProperty
- ("TIMEOUT", cmProperty::TEST,
- "How many seconds to allow for this test.",
- "This property if set will limit a test to not take more than "
- "the specified number of seconds to run. If it exceeds that the "
- "test process will be killed and ctest will move to the next test. "
- "This setting takes precedence over "
- "CTEST_TESTING_TIMEOUT.");
-
- cm->DefineProperty
- ("WILL_FAIL", cmProperty::TEST,
- "If set to true, this will invert the pass/fail flag of the test.",
- "This property can be used for tests that are expected to fail and "
- "return a non zero return code.");
-
- cm->DefineProperty
- ("WORKING_DIRECTORY", cmProperty::TEST,
- "The directory from which the test executable will be called.",
- "If this is not set it is called from the directory the test executable "
- "is located in.");
+ this->Properties.AppendProperty(prop, value, asString);
}