ctest: Allow colored output on Windows if CLICOLOR_FORCE is set to 1

Windows 10 supports ANSI colors since v1511. For earlier versions of Windows
installing ANSICON will enable ANSI colors in cmd.exe.

For those setups where the environment is set up with CLICOLOR_FORCE set
to 1 ctest should honor the setting and emit colored ANSI output.
This commit is contained in:
Cristian Adam
2023-10-31 19:06:49 +01:00
committed by Brad King
parent e416b3122e
commit 2553a78aa7

View File

@@ -2257,11 +2257,6 @@ bool cmCTest::ProgressOutputSupportedByConsole()
bool cmCTest::ColoredOutputSupportedByConsole()
{
#if defined(_WIN32)
// Not supported on Windows
return false;
#else
// On UNIX we need a non-dumb tty.
std::string clicolor_force;
if (cmSystemTools::GetEnv("CLICOLOR_FORCE", clicolor_force) &&
!clicolor_force.empty() && clicolor_force != "0") {
@@ -2271,6 +2266,11 @@ bool cmCTest::ColoredOutputSupportedByConsole()
if (cmSystemTools::GetEnv("CLICOLOR", clicolor) && clicolor == "0") {
return false;
}
#if defined(_WIN32)
// Not supported on Windows
return false;
#else
// On UNIX we need a non-dumb tty.
return ConsoleIsNotDumb();
#endif
}
@@ -3736,12 +3736,7 @@ void cmCTest::Log(int logType, const char* file, int line, const char* msg,
std::string cmCTest::GetColorCode(Color color) const
{
if (this->Impl->OutputColorCode) {
#if defined(_WIN32)
// Not supported on Windows
static_cast<void>(color);
#else
return "\033[0;" + std::to_string(static_cast<int>(color)) + "m";
#endif
}
return "";