cmTestGenerator: Separate test properties for each configuration

Move property generation from GenerateScriptConfigs to separate copies
in GenerateOldStyle and GenerateScriptForConfig.  This causes the
per-config tests generated for the add_test(NAME) signature to each get
their own test properties.  This will allow us to later change the
property values based on the test configuration.

While at it, generate lower-case CMake code (e.g. set_tests_properties).

Inspired-by: Ben Boeckel <mathstuf@gmail.com>
This commit is contained in:
Brad King 2013-09-18 13:05:05 -04:00
parent 7324eb896e
commit 6fe5c4afc0

View File

@ -39,29 +39,8 @@ cmTestGenerator
void cmTestGenerator::GenerateScriptConfigs(std::ostream& os,
Indent const& indent)
{
// First create the tests.
// Create the tests.
this->cmScriptGenerator::GenerateScriptConfigs(os, indent);
// Now generate the test properties.
if(this->TestGenerated)
{
cmTest* test = this->Test;
cmMakefile* mf = test->GetMakefile();
cmLocalGenerator* lg = mf->GetLocalGenerator();
std::ostream& fout = os;
cmPropertyMap::const_iterator pit;
cmPropertyMap* mpit = &test->GetProperties();
if ( mpit->size() )
{
fout << "SET_TESTS_PROPERTIES(" << test->GetName() << " PROPERTIES ";
for ( pit = mpit->begin(); pit != mpit->end(); ++ pit )
{
fout << " " << pit->first
<< " " << lg->EscapeForCMake(pit->second.GetValue());
}
fout << ")" << std::endl;
}
}
}
//----------------------------------------------------------------------------
@ -127,6 +106,21 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os,
// Finish the test command.
os << ")\n";
// Output properties for the test.
cmPropertyMap& pm = this->Test->GetProperties();
if(!pm.empty())
{
os << indent << "set_tests_properties(" << this->Test->GetName()
<< " PROPERTIES ";
for(cmPropertyMap::const_iterator i = pm.begin();
i != pm.end(); ++i)
{
os << " " << i->first
<< " " << lg->EscapeForCMake(i->second.GetValue());
}
os << ")" << std::endl;
}
}
//----------------------------------------------------------------------------
@ -181,4 +175,21 @@ void cmTestGenerator::GenerateOldStyle(std::ostream& fout,
fout << "\"";
}
fout << ")" << std::endl;
// Output properties for the test.
cmMakefile* mf = this->Test->GetMakefile();
cmLocalGenerator* lg = mf->GetLocalGenerator();
cmPropertyMap& pm = this->Test->GetProperties();
if(!pm.empty())
{
fout << indent << "set_tests_properties(" << this->Test->GetName()
<< " PROPERTIES ";
for(cmPropertyMap::const_iterator i = pm.begin();
i != pm.end(); ++i)
{
fout << " " << i->first
<< " " << lg->EscapeForCMake(i->second.GetValue());
}
fout << ")" << std::endl;
}
}