diff options
author | Brad King <brad.king@kitware.com> | 2020-03-27 11:45:58 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2020-03-27 11:46:14 (GMT) |
commit | b835c5d5c9a02add46d6fd3c0ec20587d27bb3be (patch) | |
tree | 737fe45819bc345e51c31953ca8c68837e8f932e /Source | |
parent | efb2a9f0938ea518177ad33d04186bdcfb87d7a9 (diff) | |
parent | 7fda917fa4897ec71c9a086f1f0fccae1c3d03d9 (diff) | |
download | CMake-b835c5d5c9a02add46d6fd3c0ec20587d27bb3be.zip CMake-b835c5d5c9a02add46d6fd3c0ec20587d27bb3be.tar.gz CMake-b835c5d5c9a02add46d6fd3c0ec20587d27bb3be.tar.bz2 |
Merge topic 'ctest-timeout-report' into release-3.17
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.cxx | 21 | ||||
-rw-r--r-- | Source/CTest/cmProcess.h | 1 |
2 files changed, 14 insertions, 8 deletions
diff --git a/Source/CTest/cmProcess.cxx b/Source/CTest/cmProcess.cxx index cdf899c..6097aa5 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 2c24f2d..ea72a26 100644 --- a/Source/CTest/cmProcess.h +++ b/Source/CTest/cmProcess.h @@ -101,6 +101,7 @@ private: void OnAllocate(size_t suggested_size, uv_buf_t* buf); void StartTimer(); + void Finish(); class Buffer : public std::vector<char> { |