15 #ifndef INCG_IRIS_IUTEST_STREAM_CAPTURE_HPP_B2DEE478_BEA9_435D_A11A_86888DAE8740_
16 #define INCG_IRIS_IUTEST_STREAM_CAPTURE_HPP_B2DEE478_BEA9_435D_A11A_86888DAE8740_
24 #if IUTEST_HAS_STREAM_CAPTURE
37 explicit IUStreamCapture(
int fd)
38 : m_fd(fd), m_prev_fd(internal::posix::Dup(fd)), m_new_fd(-1)
42 IUTEST_LOG_(WARNING) <<
"file descriptor dup failed";
46 if( !m_tempfile.Create(
"iutest_stream_capture") )
50 m_new_fd = m_tempfile.GetDescriptor();
51 if( internal::posix::Dup2(m_new_fd, fd) == -1 )
53 IUTEST_LOG_(WARNING) <<
"file descriptor dup2 failed";
65 ::std::string GetStreamString()
69 IUTEST_LOG_(WARNING) <<
"temp file open failed: " << m_tempfile.GetFileName();
72 return m_tempfile.ReadAll();
80 internal::posix::Dup2(m_prev_fd, m_fd);
81 internal::posix::FdClose(m_prev_fd);
101 #if IUTEST_HAS_STREAM_BUFFER && defined(IUTEST_OS_WINDOWS_MINGW)
102 class IUStreamCaputreWithBuffer :
public IUStreamCapture
105 IUStreamCaputreWithBuffer(
int fd, FILE* fp)
106 : IUStreamCapture(fd)
110 ::std::string GetStreamString()
112 ::std::string str = IUStreamCapture::GetStreamString();
115 return m_buffering.GetStreamString();
120 IUStreamBuffer<> m_buffering;
123 class IUStreamCaputreWithBuffer :
public IUStreamCapture
126 IUStreamCaputreWithBuffer(
int fd, FILE*) : IUStreamCapture(fd) {}
130 class IUStreamCaptureStdout :
public IUStreamCaputreWithBuffer
133 IUStreamCaptureStdout()
134 #if defined(STDOUT_FILENO)
135 : IUStreamCaputreWithBuffer(STDOUT_FILENO, stdout)
137 : IUStreamCaputreWithBuffer(1, stdout)
143 class IUStreamCaptureStderr :
public IUStreamCaputreWithBuffer
146 IUStreamCaptureStderr()
147 #if defined(STDERR_FILENO)
148 : IUStreamCaputreWithBuffer(STDERR_FILENO, stderr)
150 : IUStreamCaputreWithBuffer(2, stderr)
@ OpenRead
読み込み
Definition: iutest_file.hpp:46
iris unit test ファイルクラス ファイル
#define IUTEST_LOG_(level)
ログメッセージストリーム
Definition: iutest_port.hpp:56
#define IUTEST_PP_DISALLOW_COPY_AND_ASSIGN(TypeName)
コピー禁止定義
Definition: iutest_pp.hpp:31
iutest root namespace
Definition: iutest_charcode.hpp:33