Beta 0.7.3 post-tag focused coverage gaps
Summary¶
Add or identify focused regression probes for post-1.0 fixes that currently have only indirect replay evidence. This item is release-blocking because the fixes are patch-release hardening commits and should not rely only on broad build/native replay.
Required Coverage¶
- [x] BUG-102: prove DirectDownload cancellation cannot register a new WinInet handle after owner cancellation has already consumed the cancellation state.
- [x] BUG-105: prove the WebSocket listener continues draining pending accepted sockets after rejecting a disallowed remote-access IP.
- [x] BUG-108: prove autocomplete enumeration returns
E_OUTOFMEMORYwithout copying through a nullCoTaskMemAllocresult. - [x] BUG-109: prove the GDI ownership seams used by meter-icon creation release brushes, bitmaps, and scratch DCs on success and early-return paths.
- [x] BUG-110: prove selected GDI bitmaps are restored before callers consume
them, matching the meter-icon deselection requirement before
CreateIconIndirect.
Acceptance Criteria¶
- [x] Each required coverage target has a focused native test, Python smoke, live smoke, or documented existing evidence that directly exercises the patched behavior.
- [x] New tests run through supported
python -m emule_workspacecommands. - [x] The Release x64 replay remains green after the new probes.
- [x] Any confirmed product defect found while adding coverage becomes a
BUG-111+item. - [x] CI-023 and Beta 0.7.3 post-tag replay are updated with final evidence.
Validation¶
python -m emule_workspace build tests --config Release --platform x64python -m emule_workspace test all --config Release --platform x64- Additional focused commands added by the implementation slice.
Progress Evidence¶
- App commit
dc412b4routes DirectDownload WinInet handle ownership through the cancellation registry policy seam. - Test commit
f377146addsDirectDownload seam rejects handle registration after owner cancellation. - App commit
220c0cbexposes the WebSocket rejected remote-access IP accept-drain policy throughWebSocketHttpSeams. - Test commit
46eab04addsWebSocket HTTP seams keep draining accepts after remote IP rejection, which asserts rejected disallowed IPs keep the listener draining pending accepts. - App commits
e336f26and083478aexpose the autocomplete enum-string copy path throughCustomAutoCompleteSeamsand use the bounded CRT copy helper. - Test commit
6273fdbadds focused autocomplete coverage: Custom autocomplete enum string seam copies values into COM task memoryCustom autocomplete enum string seam returns out-of-memory before copying through a null allocation- Test commit
237e6d2adds focused native coverage for theResourceOwnershipSeamsGDI helpers used byMeterIcon.cpp: ScopedGdiObject deletes owned bitmaps on scope exitScopedGdiObject release leaves ownership with the callerScopedDc deletes scratch DCs on scope exitScopedSelectObject restores the previous bitmap before callers consume the selected object- Test commit
237e6d2links the native harness withgdi32.libso the GDI ownership seam tests run in the standard harness. - Validation:
python -m emule_workspace build app --config Release --platform x64python -m emule_workspace build tests --config Release --platform x64python -m emule_workspace test all --config Release --platform x64python -m emule_workspace validate- Latest native coverage artifact:
EMULE_WORKSPACE_ROOT\repos\emulebb-build-tests\reports\native-coverage\20260509-142259-eMulebb-workspace-v0.72a-eMule-main-x64-Release. - The Release x64 parity suite now reports
501passing parity cases and72passing web API cases. - No new
BUG-111+item was opened because the focused coverage work did not confirm a new product defect.