Allow/Default use of ANSI color codes on Windows
I maintainer di solito rispondono entro 3 giorni
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- cpp
- Ambito
- testing-qa
Direzione di ricerca
Inizia individuando CATCH_INTERNAL_HAS_ISATTY e il percorso di gestione dei colori di Windows, quindi esamina come vengono inizializzati stdout e le modalità della console. Verifica il comportamento esistente di Windows e dell'output ANSI, incluso stdout con buffering, e considera completato il lavoro quando i terminali Windows usano i colori ANSI in modo affidabile senza la legacy attribute API.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- C++
- Stelle
- 21.5k
- Fork
- 3.5k
- Merge medio
- 2g 21h
- PR unite (30g)
- 5
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di catchorg/Catch2
-
Benchmark analysis crashes: out-of-bounds index in Detail::bootstrapForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 3 giorni
-
Floating point printing should print shortest round-trip valueForse già presa @sb123sb123 l’ha presa 11 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
catchorg/Catch2#3197 · 2 commenti · 2 reazioni ·
I maintainer di solito rispondono entro 3 giorni
-
3rd party bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
catchorg/Catch2#3195 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Feature Request
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
catchorg/Catch2#3185 · 2 commenti ·
I maintainer di solito rispondono entro 3 giorni
-
Clock resolution estimation iterations limitForse già presa @Tyagiquamar l’ha presa 8 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
catchorg/Catch2#3180 · 1 reazione ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di catchorg/Catch2
Issue simili
-
[request] vsg/1.1.16Apertaupstream update
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
conan-io/conan-center-index#31142 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
NVIDIA/DeepStream#78 ·