summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-03-27 11:45:58 (GMT)
committerKitware Robot <kwrobot@kitware.com>2020-03-27 11:46:15 (GMT)
commit0613f1b24582ced108ac4697d542876ceada6201 (patch)
treeafd662da0df4f589397834d29fe366d8fdf48de9 /Source
parente50c02c009a86f88df53c0bddecea39073c29ba3 (diff)
parent3503a79639f66bf3d2644c3d5fc1f6d28ca639b8 (diff)
downloadCMake-0613f1b24582ced108ac4697d542876ceada6201.zip
CMake-0613f1b24582ced108ac4697d542876ceada6201.tar.gz
CMake-0613f1b24582ced108ac4697d542876ceada6201.tar.bz2
Merge topic 'ctest-timeout-report'
3503a79639 Merge branch 'backport-ctest-timeout-report' into ctest-timeout-report 7fda917fa4 CTest: Fix reported duration on timeout when grindchild keeps pipes open Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4530
Diffstat (limited to 'Source')
-rw-r--r--Source/CTest/cmProcess.cxx21
-rw-r--r--Source/CTest/cmProcess.h1
2 files changed, 14 insertions, 8 deletions
diff --git a/Source/CTest/cmProcess.cxx b/Source/CTest/cmProcess.cxx
index 76ffb20..2742fd7 100644
--- a/Source/CTest/cmProcess.cxx
+++ b/Source/CTest/cmProcess.cxx
@@ -249,7 +249,7 @@ void cmProcess::OnRead(ssize_t nread, const uv_buf_t* buf)
this->PipeReader.reset();
if (this->ProcessHandleClosed) {
uv_timer_stop(this->Timer);
- this->Runner->FinalizeTest();
+ this->Finish();
}
}
@@ -291,7 +291,7 @@ void cmProcess::OnTimeout()
// Our on-exit handler already ran but did not finish the test
// because we were still reading output. We've just dropped
// our read handler, so we need to finish the test now.
- this->Runner->FinalizeTest();
+ this->Finish();
}
}
@@ -321,6 +321,16 @@ void cmProcess::OnExit(int64_t exit_status, int term_signal)
// Record exit information.
this->ExitValue = exit_status;
this->Signal = term_signal;
+
+ this->ProcessHandleClosed = true;
+ if (this->ReadHandleClosed) {
+ uv_timer_stop(this->Timer);
+ this->Finish();
+ }
+}
+
+void cmProcess::Finish()
+{
this->TotalTime = std::chrono::steady_clock::now() - this->StartTime;
// Because of a processor clock scew the runtime may become slightly
// negative. If someone changed the system clock while the process was
@@ -329,12 +339,7 @@ void cmProcess::OnExit(int64_t exit_status, int term_signal)
if (this->TotalTime <= cmDuration::zero()) {
this->TotalTime = cmDuration::zero();
}
-
- this->ProcessHandleClosed = true;
- if (this->ReadHandleClosed) {
- uv_timer_stop(this->Timer);
- this->Runner->FinalizeTest();
- }
+ this->Runner->FinalizeTest();
}
cmProcess::State cmProcess::GetProcessStatus()
diff --git a/Source/CTest/cmProcess.h b/Source/CTest/cmProcess.h
index 0f69f68..526c920 100644
--- a/Source/CTest/cmProcess.h
+++ b/Source/CTest/cmProcess.h
@@ -108,6 +108,7 @@ private:
void OnAllocate(size_t suggested_size, uv_buf_t* buf);
void StartTimer();
+ void Finish();
class Buffer : public std::vector<char>
{