summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-02-15 19:12:03 (GMT)
committerBrad King <brad.king@kitware.com>2017-02-16 18:19:26 (GMT)
commitf10b2f72f6979ccb16410d97bac98c440eb7f992 (patch)
tree709d220cd518e1e4c71363625a723521a6319a73
parentef399f9bc6b8e2ff917a5f2809346fb81fd954ae (diff)
downloadCMake-f10b2f72f6979ccb16410d97bac98c440eb7f992.zip
CMake-f10b2f72f6979ccb16410d97bac98c440eb7f992.tar.gz
CMake-f10b2f72f6979ccb16410d97bac98c440eb7f992.tar.bz2
ctest_update: Capture failure of svn to load revisions and local mods
Issue: #16646
-rw-r--r--Source/CTest/cmCTestSVN.cxx23
-rw-r--r--Source/CTest/cmCTestSVN.h4
2 files changed, 16 insertions, 11 deletions
diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx
index e85d01c..ce395cd 100644
--- a/Source/CTest/cmCTestSVN.cxx
+++ b/Source/CTest/cmCTestSVN.cxx
@@ -99,7 +99,9 @@ std::string cmCTestSVN::LoadInfo(SVNInfo& svninfo)
bool cmCTestSVN::NoteOldRevision()
{
- this->LoadRepositories();
+ if (!this->LoadRepositories()) {
+ return false;
+ }
std::list<SVNInfo>::iterator itbeg = this->Repositories.begin();
std::list<SVNInfo>::iterator itend = this->Repositories.end();
@@ -121,7 +123,9 @@ bool cmCTestSVN::NoteOldRevision()
bool cmCTestSVN::NoteNewRevision()
{
- this->LoadRepositories();
+ if (!this->LoadRepositories()) {
+ return false;
+ }
std::list<SVNInfo>::iterator itbeg = this->Repositories.begin();
std::list<SVNInfo>::iterator itend = this->Repositories.end();
@@ -374,17 +378,18 @@ private:
bool cmCTestSVN::LoadRevisions()
{
+ bool result = true;
// Get revisions for all the external repositories
std::list<SVNInfo>::iterator itbeg = this->Repositories.begin();
std::list<SVNInfo>::iterator itend = this->Repositories.end();
for (; itbeg != itend; itbeg++) {
SVNInfo& svninfo = *itbeg;
- LoadRevisions(svninfo);
+ result = this->LoadRevisions(svninfo) && result;
}
- return true;
+ return result;
}
-void cmCTestSVN::LoadRevisions(SVNInfo& svninfo)
+bool cmCTestSVN::LoadRevisions(SVNInfo& svninfo)
{
// We are interested in every revision included in the update.
std::string revs;
@@ -403,7 +408,7 @@ void cmCTestSVN::LoadRevisions(SVNInfo& svninfo)
svn_log.push_back(svninfo.LocalPath.c_str());
LogParser out(this, "log-out> ", svninfo);
OutputLogger err(this->Log, "log-err> ");
- this->RunSVNCommand(svn_log, &out, &err);
+ return this->RunSVNCommand(svn_log, &out, &err);
}
void cmCTestSVN::DoRevisionSVN(Revision const& revision,
@@ -525,10 +530,10 @@ private:
}
};
-void cmCTestSVN::LoadRepositories()
+bool cmCTestSVN::LoadRepositories()
{
if (!this->Repositories.empty()) {
- return;
+ return true;
}
// Info for root repository
@@ -540,7 +545,7 @@ void cmCTestSVN::LoadRepositories()
svn_status.push_back("status");
ExternalParser out(this, "external-out> ");
OutputLogger err(this->Log, "external-err> ");
- this->RunSVNCommand(svn_status, &out, &err);
+ return this->RunSVNCommand(svn_status, &out, &err);
}
std::string cmCTestSVN::SVNInfo::BuildLocalPath(std::string const& path) const
diff --git a/Source/CTest/cmCTestSVN.h b/Source/CTest/cmCTestSVN.h
index 1832fd9..e5fe5b7 100644
--- a/Source/CTest/cmCTestSVN.h
+++ b/Source/CTest/cmCTestSVN.h
@@ -77,10 +77,10 @@ private:
SVNInfo* RootInfo;
std::string LoadInfo(SVNInfo& svninfo);
- void LoadRepositories();
+ bool LoadRepositories();
bool LoadModifications() CM_OVERRIDE;
bool LoadRevisions() CM_OVERRIDE;
- void LoadRevisions(SVNInfo& svninfo);
+ bool LoadRevisions(SVNInfo& svninfo);
void GuessBase(SVNInfo& svninfo, std::vector<Change> const& changes);