[Foundation] Make BuildContext's cancellation handlers testable
Maintainer thường phản hồi trong vòng 2 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 68/100
- Loại issue
- Tái cấu trúc
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- csharp
- Lĩnh vực
- build-system, testing
Hướng nghiên cứu
Bắt đầu với BuildContext.RegisterCancellationHandler và UnregisterCancellationHandler, sau đó lần theo subscription của Console.CancelKeyPress và facade BuildManager.CancellationHandler. Thêm hoặc cập nhật các specs để kiểm thử việc đăng ký, hủy đăng ký và cô lập context mà không cần Ctrl+C thực; hoàn tất khi seam vẫn là nội bộ và cả bốn tiêu chí nghiệm thu đều đạt.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Follow-up from #451 (FT-2, #307).
Problem
BuildContext.RegisterCancellationHandler / UnregisterCancellationHandler — the two methods BuildManager.CancellationHandler exists to delegate to — have no positive coverage. The only spec on the facade (Cancellation_handler_facade_is_a_no_op_without_an_active_context) exercises the null-context path.
They can't be tested as written: registered handlers only run from the Console.CancelKeyPress subscription, and ConsoleCancelEventArgs has no public constructor, so the event can't be raised from a spec.
Outcome
A registered handler can be shown to run, and an unregistered one shown not to, without depending on a real Ctrl+C.
Needs a seam — e.g. an internal void InvokeCancellationHandlers() on BuildContext that the CancelKeyPress subscription calls, so specs can drive the same path. Worth settling before FT-4/5/6 move more per-run services onto the context.
Acceptance criteria
- Registering through
BuildManager.CancellationHandlerwith an active context runs the handler when cancellation is signalled. - Unregistering stops it running.
- Handlers registered against one context don't run for another.
- The seam stays
internal— noInternalsVisibleToto non-test assemblies.
- Ngôn ngữ chính
- C#
- Star
- 172
- Fork
- 21
- Merge trung bình
- 4 ngày 38 phút
- Pull request đã merge (30 ngày)
- 14
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 Fallout-build/Fallout
-
bug needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Fallout-build/Fallout#729 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Fallout-build/Fallout#708 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
.\build.ps1 in its current state isn't capable for :add-package commandCó thể đã có người làm @ITaluone đã nhận 45 ngày trước. Đang mởbug needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Fallout-build/Fallout#670 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
CD enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Fallout-build/Fallout#649 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Fallout-build/Fallout#630 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của Fallout-build/Fallout
Issue tương tự
-
fix(testing): HeadlessTerminal disposes services synchronouslyCó thể đã có người làm @zidad đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 69/100
RazorConsole/RazorConsole#388 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
A practical example of rulerĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
starlinghq/starling#209 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
affected/v17 area/frontend type/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 63/100
umbraco/Umbraco-CMS#24323 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
dotnet/roslynator#1859 ·
Maintainer thường phản hồi trong vòng 1 ngày