ENH: turn on spaces in path test
This commit is contained in:
parent
314f5f60a0
commit
09699018cc
|
@ -991,6 +991,18 @@ IF(BUILD_TESTING)
|
|||
)
|
||||
ENDIF(NOT CMAKE_TEST_DIFFERENT_GENERATOR)
|
||||
|
||||
ADD_TEST(SubDirSpaces ${CMAKE_CTEST_COMMAND}
|
||||
--build-and-test
|
||||
"${CMake_SOURCE_DIR}/Tests/SubDirSpaces"
|
||||
"${CMake_BINARY_DIR}/Tests/SubDirSpaces"
|
||||
--build-exe-dir "${CMake_BINARY_DIR}/Tests/SubDirSpaces/Executable"
|
||||
--build-generator ${CMAKE_TEST_GENERATOR}
|
||||
--build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
|
||||
--build-project SUBDIR
|
||||
--test-command test
|
||||
"${CMake_BINARY_DIR}/Tests/SubDirSpaces/ShouldBeHere"
|
||||
"${CMake_BINARY_DIR}/Tests/SubDirSpaces/testfromsubdir.obj"
|
||||
)
|
||||
|
||||
IF (WIN32)
|
||||
ADD_TEST(SubDir ${CMAKE_CTEST_COMMAND}
|
||||
|
|
|
@ -232,6 +232,12 @@ void cmTarget::DefineProperties(cmake *cm)
|
|||
"A target property that can be set to override the suffix "
|
||||
"(such as \".so\") on a library name.");
|
||||
|
||||
cm->DefineProperty
|
||||
("TEST_LOCATION", cmProperty::TARGET,
|
||||
"Where a target will be written on disk for ctest.",
|
||||
"Much like the LOCATION property but makes use of "
|
||||
"CTEST_TEST_CONFIGURATION to handle the build configuration.");
|
||||
|
||||
cm->DefineProperty
|
||||
("VERSION", cmProperty::TARGET,
|
||||
"What version number is this target.",
|
||||
|
@ -1147,6 +1153,25 @@ const char* cmTarget::GetLocation(const char* config)
|
|||
return this->Location.c_str();
|
||||
}
|
||||
|
||||
const char* cmTarget::GetTestLocation(const char* config)
|
||||
{
|
||||
this->Location = this->GetDirectory();
|
||||
if(!this->Location.empty())
|
||||
{
|
||||
this->Location += "/";
|
||||
}
|
||||
const char* cfgid = this->Makefile->GetDefinition("CMAKE_CFG_INTDIR");
|
||||
// if this platform has configurations, then use the ctest var
|
||||
if(cfgid && strcmp(cfgid, ".") != 0)
|
||||
{
|
||||
this->Location += "${CTEST_CONFIGURATION_TYPE}";
|
||||
this->Location += "/";
|
||||
}
|
||||
this->Location += this->GetFullName(config, false);
|
||||
return this->Location.c_str();
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmTarget::GetTargetVersion(int& major, int& minor)
|
||||
{
|
||||
|
@ -1237,16 +1262,38 @@ const char *cmTarget::GetProperty(const char* prop,
|
|||
// variable in the location.
|
||||
this->SetProperty("LOCATION", this->GetLocation(0));
|
||||
}
|
||||
|
||||
if (!strcmp(prop,"TEST_LOCATION"))
|
||||
{
|
||||
// Set the LOCATION property of the target. Note that this cannot take
|
||||
// into account the per-configuration name of the target because the
|
||||
// configuration type may not be known at CMake time. We should
|
||||
// deprecate this feature and instead support transforming an executable
|
||||
// target name given as the command part of custom commands into the
|
||||
// proper path at build time. Alternatively we could put environment
|
||||
// variable settings in all custom commands that hold the name of the
|
||||
// target for each configuration and then give a reference to the
|
||||
// variable in the location.
|
||||
this->SetProperty("TEST_LOCATION", this->GetTestLocation(0));
|
||||
}
|
||||
else
|
||||
|
||||
if(strcmp(prop, "OBJECT_FILES") == 0)
|
||||
{
|
||||
this->ComputeObjectFiles();
|
||||
}
|
||||
|
||||
// Per-configuration location can be computed.
|
||||
int len = static_cast<int>(strlen(prop));
|
||||
if(len > 9 && strcmp(prop+len-9, "_LOCATION") == 0)
|
||||
{
|
||||
std::string configName(prop, len-9);
|
||||
this->SetProperty(prop, this->GetLocation(configName.c_str()));
|
||||
// Per-configuration location can be computed.
|
||||
int len = static_cast<int>(strlen(prop));
|
||||
if(len > 9 && strcmp(prop+len-9, "_LOCATION") == 0)
|
||||
{
|
||||
std::string configName(prop, len-9);
|
||||
this->SetProperty(prop, this->GetLocation(configName.c_str()));
|
||||
}
|
||||
}
|
||||
// the type property returns what type the target is
|
||||
if (!strcmp(prop,"TYPE"))
|
||||
|
|
|
@ -181,6 +181,10 @@ public:
|
|||
target property. */
|
||||
const char* GetLocation(const char* config);
|
||||
|
||||
/** Get the location of the target in the build tree for use by ctest.
|
||||
May make use of the CTEST_TEST_CONFIGURATION variable in ctest. */
|
||||
const char* GetTestLocation(const char* config);
|
||||
|
||||
/** Get the target major and minor version numbers interpreted from
|
||||
the VERSION property. Version 0 is returned if the property is
|
||||
not set or cannot be parsed. */
|
||||
|
|
Loading…
Reference in New Issue