From 6a9f0aab51c368764eb36f9f0375697a09289742 Mon Sep 17 00:00:00 2001 From: arunmu Date: Thu, 17 Mar 2016 21:19:36 +0530 Subject: [PATCH] added more tests --- main | Bin 128724 -> 128768 bytes s.py | 7 ------- subprocess.hpp | 29 +++++++++++++++++++++++------ test/test_err_redirection.cc | 16 ++++++++++++++++ test/write_err.sh | 2 ++ 5 files changed, 41 insertions(+), 13 deletions(-) delete mode 100755 s.py create mode 100644 test/test_err_redirection.cc create mode 100755 test/write_err.sh diff --git a/main b/main index 9e05a8927bc28165da6a9b8684e66bfa4d3aee39..69f273e96555394885795bf5de035619318c3799 100755 GIT binary patch delta 16511 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 H*zdmq=BV}% delta 16183 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 communicate() + { + return communicate(nullptr, 0); + } + private: template void init_args(F&& farg, Args&&... args); @@ -756,6 +766,12 @@ namespace detail { } void ArgumentDeducer::set_option(error&& err) { + if (err.deferred_ && popen_->stream_.write_to_parent_) { + popen_->stream_.err_write_ = popen_->stream_.write_to_parent_; + return; + } else { + throw "Set output before redirecting error to output"; + } if (err.wr_ch_ != -1) popen_->stream_.err_write_ = err.wr_ch_; if (err.rd_ch_ != -1) popen_->stream_.err_read_ = err.rd_ch_; } @@ -844,6 +860,7 @@ namespace detail { std::string err_msg(exp.what()); //ATTN: Can we do something on error here ? util::write_n(err_wr_pipe_, err_msg.c_str(), err_msg.length()); + throw exp; } // Calling application would not get this diff --git a/test/test_err_redirection.cc b/test/test_err_redirection.cc new file mode 100644 index 0000000..ae1dc1a --- /dev/null +++ b/test/test_err_redirection.cc @@ -0,0 +1,16 @@ +#include +#include "../subprocess.hpp" + +using namespace subprocess; + +void test_redirect() +{ + auto p = Popen("./write_err.sh", output{"write_err.txt"}, error{STDOUT}); + assert (p.poll() == 0); + +} + +int main() { + test_redirect(); + return 0; +} diff --git a/test/write_err.sh b/test/write_err.sh new file mode 100755 index 0000000..9290ba1 --- /dev/null +++ b/test/write_err.sh @@ -0,0 +1,2 @@ +#!/bin/bash +>&2 echo "writing error to stderr"