Submit global tree revision in Update.xml
We teach CTest to report in a <Revision> element the revision of the source tree that was tested. This makes sense for all modern VCS tools because they version the whole tree. We simply omit this element for CVS because it only versions files. See issue #7541.
This commit is contained in:
parent
449b9aea23
commit
a73833d037
|
@ -106,6 +106,19 @@ void cmCTestGlobalVC::WriteXMLDirectory(std::ostream& xml,
|
|||
xml << "\t</Directory>\n";
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmCTestGlobalVC::WriteXMLGlobal(std::ostream& xml)
|
||||
{
|
||||
if(!this->NewRevision.empty())
|
||||
{
|
||||
xml << "\t<Revision>" << this->NewRevision << "</Revision>\n";
|
||||
}
|
||||
if(!this->OldRevision.empty() && this->OldRevision != this->NewRevision)
|
||||
{
|
||||
xml << "\t<PriorRevision>" << this->OldRevision << "</PriorRevision>\n";
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmCTestGlobalVC::WriteXMLUpdates(std::ostream& xml)
|
||||
{
|
||||
|
@ -117,6 +130,8 @@ bool cmCTestGlobalVC::WriteXMLUpdates(std::ostream& xml)
|
|||
|
||||
this->LoadModifications();
|
||||
|
||||
this->WriteXMLGlobal(xml);
|
||||
|
||||
for(std::map<cmStdString, Directory>::const_iterator
|
||||
di = this->Dirs.begin(); di != this->Dirs.end(); ++di)
|
||||
{
|
||||
|
|
|
@ -60,6 +60,7 @@ protected:
|
|||
virtual void LoadModifications() = 0;
|
||||
virtual void LoadRevisions() = 0;
|
||||
|
||||
virtual void WriteXMLGlobal(std::ostream& xml);
|
||||
void WriteXMLDirectory(std::ostream& xml, std::string const& path,
|
||||
Directory const& dir);
|
||||
};
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
# Test in a directory next to this script.
|
||||
get_filename_component(TOP "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
set(TOP "${TOP}/@CTestUpdateCVS_DIR@")
|
||||
set(UPDATE_NOT_GLOBAL 1)
|
||||
|
||||
# Include code common to all update tests.
|
||||
include("@CMAKE_CURRENT_SOURCE_DIR@/CTestUpdateCommon.cmake")
|
||||
|
|
|
@ -45,6 +45,25 @@ function(check_updates build)
|
|||
endif()
|
||||
endforeach(f)
|
||||
|
||||
if(NOT UPDATE_NOT_GLOBAL)
|
||||
set(rev_elements "Revision|PriorRevision")
|
||||
set(rev_regex "^\t<(${rev_elements})>[^<\n]+</(${rev_elements})>$")
|
||||
file(STRINGS ${TOP}/${UPDATE_XML_FILE} UPDATE_XML_REVISIONS
|
||||
REGEX "${rev_regex}"
|
||||
LIMIT_INPUT 4096
|
||||
)
|
||||
foreach(r IN LISTS UPDATE_XML_REVISIONS)
|
||||
string(REGEX REPLACE "${rev_regex}" "\\1" element "${r}")
|
||||
set(element_${element} 1)
|
||||
endforeach()
|
||||
string(REPLACE "|" ";" rev_elements "${rev_elements}")
|
||||
foreach(element ${rev_elements})
|
||||
if(NOT element_${element})
|
||||
list(APPEND MISSING "global <${element}> element")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# Report the result
|
||||
if(MISSING)
|
||||
# List the missing entries
|
||||
|
|
Loading…
Reference in New Issue