Allow/Default use of ANSI color codes on Windows
Los mantenedores suelen responder en 3 días
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- cpp
- Área
- testing-qa
Línea de trabajo
Comienza localizando CATCH_INTERNAL_HAS_ISATTY y la ruta de gestión de colores de Windows; después, revisa cómo se inicializan stdout y los modos de la consola. Comprueba el comportamiento existente de Windows y de la salida ANSI, incluido stdout con búfer, y define como completado que los terminales de Windows usen colores ANSI de forma fiable sin la API de atributos heredada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
With a little snippet during initialization, Windows 10 and newer support ANSI color codes out of the box:
#ifdef _WIN32
HANDLE outputHandle = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD mode = 0;
if (GetConsoleMode(outputHandle, &mode))
{
mode |= ENABLE_PROCESSED_OUTPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING;
SetConsoleMode(outputHandle, mode);
}
#endif // _WIN32
The CATCH_INTERNAL_HAS_ISATTY is somewhat malformed - Windows has isatty too (in header #include <io.h> instead of #include <unistd.h>) - but what it doesn't have is STDOUT_FILENO so the portable solution for that is isatty(fileno(stdout)).
On Windows 10 or newer (or in case that covers ALL support Windows platforms: For every Windows-platform in general), the ANSI color code support should be preferred unconditionally over the legacy text attribute API.
Additional context
This avoids a lot of issues you'd otherwise have with the Windows terminal handling - among others that setting colors via SetConsoleTextAttribute on Windows breaks horribly when the application under test is enabling output buffering for stdout as the legacy API for color codes only every works as long as stdout is byte-buffered only.
- Lenguaje dominante
- C++
- Estrellas
- 21.5k
- Forks
- 3.5k
- Merge medio
- 3 d 5 h
- PR fusionados (30 d)
- 4
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de catchorg/Catch2
-
Wrong macro use under MSVCPosiblemente ocupada @amedlin la tomó hace 1 día. AbiertoBug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
catchorg/Catch2#3211 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
Floating point printing should print shortest round-trip valuePosiblemente ocupada @sb123sb123 la tomó hace 8 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
catchorg/Catch2#3197 · 2 comentarios · 2 reacciones ·
Los mantenedores suelen responder en 3 días
-
3rd party bug
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
catchorg/Catch2#3195 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
Feature Request
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
catchorg/Catch2#3185 · 2 comentarios ·
Los mantenedores suelen responder en 3 días
-
Clock resolution estimation iterations limitPosiblemente ocupada @Tyagiquamar la tomó hace 5 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
catchorg/Catch2#3180 · 1 reacción ·
Los mantenedores suelen responder en 3 días
Todos los issues de catchorg/Catch2
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
lldb
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
llvm/llvm-project#229592 · 11 comentarios ·
Los mantenedores suelen responder en 1 día
-
Bump libCEED to v1 in superbuildAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 3 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 94/100
llvm/offload-test-suite#1560 ·
Los mantenedores suelen responder en 1 día
-
agent:Windows bug MEDIUM performance tooling
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día