Allow/Default use of ANSI color codes on Windows
Maintainer thường phản hồi trong vòng 3 ngày
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- cpp
- Lĩnh vực
- testing-qa
Hướng nghiên cứu
Bắt đầu bằng cách xác định CATCH_INTERNAL_HAS_ISATTY và đường dẫn xử lý màu của Windows, sau đó xem xét cách stdout và các chế độ console được khởi tạo. Kiểm tra hành vi hiện có của Windows và đầu ra ANSI, bao gồm cả stdout được đệm, và xác định là hoàn tất khi các terminal Windows sử dụng màu ANSI một cách đáng tin cậy mà không cần legacy attribute API.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- C++
- Star
- 21.5k
- Fork
- 3.5k
- Merge trung bình
- 3 ngày 5 giờ
- Pull request đã merge (30 ngày)
- 4
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của catchorg/Catch2
-
Wrong macro use under MSVCCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởBug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
catchorg/Catch2#3211 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Floating point printing should print shortest round-trip valueCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
catchorg/Catch2#3197 · 2 bình luận · 2 reaction ·
Maintainer thường phản hồi trong vòng 3 ngày
-
3rd party bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
catchorg/Catch2#3195 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Feature Request
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
catchorg/Catch2#3185 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Clock resolution estimation iterations limitCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
catchorg/Catch2#3180 · 1 reaction ·
Maintainer thường phản hồi trong vòng 3 ngày
Tất cả issue của catchorg/Catch2
Issue tương tự
-
ws_bridge: stripping format=evr for matchmaker connections can concatenate the path and queryĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
EchoTools/nevr-runtime#116 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
code-quality libc++
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
llvm/llvm-project#229284 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
test-issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
llvm/offload-test-suite#1557 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
iOS: hidden scale bar invalidates its intrinsic content size on every layout pass of MLNMapViewĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
maplibre/maplibre-native#4723 ·
Maintainer thường phản hồi trong vòng 1 ngày