Rename isStdout => isConsole and add doccomment

This commit is contained in:
Martin Hořeňovský
2022-03-21 00:22:54 +01:00
parent cf6dd937ab
commit 4d8acafecb
12 changed files with 52 additions and 43 deletions

View File

@@ -97,7 +97,7 @@ namespace {
// Win32 text colour APIs can only be used on console streams
// We cannot check that the output hasn't been redirected,
// so we just check that the original stream is console stream.
return stream.isStdout();
return stream.isConsole();
}
private:
@@ -164,7 +164,7 @@ namespace {
// only want to use the colours if we are writing to console.
// However, console might be redirected, so we make an attempt at
// checking for that on platforms where we know how to do that.
bool useColour = stream.isStdout();
bool useColour = stream.isConsole();
#if defined( CATCH_INTERNAL_HAS_ISATTY ) && \
!( defined( __DJGPP__ ) && defined( __STRICT_ANSI__ ) )
ErrnoGuard _; // for isatty

View File

@@ -99,7 +99,7 @@ namespace Detail {
public: // IStream
std::ostream& stream() const override { return m_os; }
bool isStdout() const override { return true; }
bool isConsole() const override { return true; }
};
class CerrStream : public IStream {
@@ -113,7 +113,7 @@ namespace Detail {
public: // IStream
std::ostream& stream() const override { return m_os; }
bool isStdout() const override { return true; }
bool isConsole() const override { return true; }
};
///////////////////////////////////////////////////////////////////////////

View File

@@ -26,9 +26,18 @@ namespace Catch {
public:
virtual ~IStream(); // = default
virtual std::ostream& stream() const = 0;
// Win32 colour supports requires us to identify whether a stream
// is backed by stdout (so we can colour it) or not (and we can't).
virtual bool isStdout() const { return false; }
/**
* Best guess on whether the instance is writing to a console (e.g. via stdout/stderr)
*
* This is useful for e.g. Win32 colour support, because the Win32
* API manipulates console directly, unlike POSIX escape codes,
* that can be written anywhere.
*
* Due to variety of ways to change where the stdout/stderr is
* _actually_ being written, users should always assume that
* the answer might be wrong.
*/
virtual bool isConsole() const { return false; }
};
auto makeStream( std::string const& filename ) -> Detail::unique_ptr<IStream const>;