Extracted Error and Output redirection.
Making reuse possible.
This commit is contained in:
parent
ff7a99ad37
commit
77089293c6
|
@ -0,0 +1,43 @@
|
|||
#ifndef REDIRECT_H
|
||||
#define REDIRECT_H
|
||||
|
||||
#include <iostream>
|
||||
|
||||
extern std::ostringstream errout;
|
||||
extern std::ostringstream output;
|
||||
|
||||
class RedirectInputOutput
|
||||
{
|
||||
public:
|
||||
RedirectInputOutput()
|
||||
{
|
||||
// flush all old output
|
||||
std::cout.flush();
|
||||
std::cerr.flush();
|
||||
|
||||
_oldCout = std::cout.rdbuf(); // back up cout's streambuf
|
||||
_oldCerr = std::cerr.rdbuf(); // back up cerr's streambuf
|
||||
|
||||
std::cout.rdbuf(_out.rdbuf()); // assign streambuf to cout
|
||||
std::cerr.rdbuf(_err.rdbuf()); // assign streambuf to cerr
|
||||
}
|
||||
|
||||
~RedirectInputOutput()
|
||||
{
|
||||
std::cout.rdbuf(_oldCout); // restore cout's original streambuf
|
||||
std::cerr.rdbuf(_oldCerr); // restore cerrs's original streambuf
|
||||
|
||||
errout << _err.str();
|
||||
output << _out.str();
|
||||
}
|
||||
|
||||
private:
|
||||
std::stringstream _out;
|
||||
std::stringstream _err;
|
||||
std::streambuf* _oldCout;
|
||||
std::streambuf *_oldCerr;
|
||||
};
|
||||
|
||||
#define REDIRECT RedirectInputOutput redir;
|
||||
|
||||
#endif
|
|
@ -16,47 +16,10 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include "testsuite.h"
|
||||
#include "cmdlineparser.h"
|
||||
#include "settings.h"
|
||||
|
||||
extern std::ostringstream errout;
|
||||
extern std::ostringstream output;
|
||||
|
||||
class RedirectInputOutput
|
||||
{
|
||||
public:
|
||||
RedirectInputOutput()
|
||||
{
|
||||
// flush all old output
|
||||
std::cout.flush();
|
||||
std::cerr.flush();
|
||||
|
||||
_oldCout = std::cout.rdbuf(); // back up cout's streambuf
|
||||
_oldCerr = std::cerr.rdbuf(); // back up cerr's streambuf
|
||||
|
||||
std::cout.rdbuf(_out.rdbuf()); // assign streambuf to cout
|
||||
std::cerr.rdbuf(_err.rdbuf()); // assign streambuf to cerr
|
||||
}
|
||||
|
||||
~RedirectInputOutput()
|
||||
{
|
||||
std::cout.rdbuf(_oldCout); // restore cout's original streambuf
|
||||
std::cerr.rdbuf(_oldCerr); // restore cerrs's original streambuf
|
||||
|
||||
errout << _err.str();
|
||||
output << _out.str();
|
||||
}
|
||||
|
||||
private:
|
||||
std::stringstream _out;
|
||||
std::stringstream _err;
|
||||
std::streambuf* _oldCout;
|
||||
std::streambuf *_oldCerr;
|
||||
};
|
||||
|
||||
#define REDIRECT RedirectInputOutput redir;
|
||||
#include "redirect.h"
|
||||
|
||||
class TestCmdlineParser : public TestFixture
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue