The only difference is the signal and the message, and we can probably live without the message differentiation (since it throws an exception anyways).
Signed-off-by: Peter Hutterer <[email protected]> --- We could also just reduce this into one Kill(signal) function and just ask the caller to provide SIGTERM/SIGKILL as argument. include/xorg/gtest/xorg-gtest-process.h | 1 + src/process.cpp | 27 ++++++++++----------------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/include/xorg/gtest/xorg-gtest-process.h b/include/xorg/gtest/xorg-gtest-process.h index 0b721ce..e8c8d14 100644 --- a/include/xorg/gtest/xorg-gtest-process.h +++ b/include/xorg/gtest/xorg-gtest-process.h @@ -174,6 +174,7 @@ class Process { /* Disable copy constructor, assignment operator */ Process(const Process&); Process& operator=(const Process&); + bool KillSelf(int signal); }; } // testing diff --git a/src/process.cpp b/src/process.cpp index 7b60afc..be3bbda 100644 --- a/src/process.cpp +++ b/src/process.cpp @@ -93,30 +93,15 @@ void xorg::testing::Process::Start(const std::string& program, ...) { va_end(list); /* Shouldn't get here */ } -bool xorg::testing::Process::Terminate() { - if (d_->pid == -1) { - return false; - } else if (d_->pid == 0) { - /* Child */ - throw std::runtime_error("Child process tried to terminate itself"); - } else { /* Parent */ - if (kill(d_->pid, SIGTERM) < 0) { - d_->pid = -1; - return false; - } - d_->pid = -1; - } - return true; -} -bool xorg::testing::Process::Kill() { +bool xorg::testing::Process::KillSelf(int signal) { if (d_->pid == -1) { return false; } else if (d_->pid == 0) { /* Child */ throw std::runtime_error("Child process tried to kill itself"); } else { /* Parent */ - if (kill(d_->pid, SIGKILL) < 0) { + if (kill(d_->pid, signal) < 0) { d_->pid = -1; return false; } @@ -125,6 +110,14 @@ bool xorg::testing::Process::Kill() { return true; } +bool xorg::testing::Process::Terminate(void) { + return KillSelf(SIGTERM); +} + +bool xorg::testing::Process::Kill(void) { + return KillSelf(SIGKILL); +} + void xorg::testing::Process::SetEnv(const std::string& name, const std::string& value, bool overwrite) { if (setenv(name.c_str(), value.c_str(), overwrite) != 0) -- 1.7.10.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
