diff options
Diffstat (limited to 'Source/cmTest.cxx')
-rw-r--r-- | Source/cmTest.cxx | 186 |
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); } |