Commit e69a21a
committed
test(mutmut): item E closure - wl_audit.py 35 survivors (61% kill rate)
v1.1 item E from the 2026-05-18 pre-release sweep. Re-ran mutmut
on bin/wl_audit.py with the corrected test selector
(tests/unit/test_audit.py + tests/unit/test_view_audit_dedup.py)
on a fresh :ro+tmpfs container, with the cache-leak fix from
item D in effect.
## Result
90 mutations applied, 35 survived, 55 killed. Effective mutation
score: 61%.
Highest kill rate of any module in this v1.1 sweep:
wl_validation 92% (108 mut, 10 survived)
wl_audit 61% (90 mut, 35 survived) <- this run
wl_csv 24% (723 mut, 547 survived)
Why wl_audit scores high: small focused module (191 lines, single
responsibility — post audit events to wl_audit index via REST),
covered by 562 lines of unit tests in two test files.
## Survivor triage
Sampled 9 representative survivors; 4 categories:
Module-level import fallbacks (mutant 1): equivalent
Log / error message text (mutants 22, 42, 72, 78): low value
HTTP boundary edge cases (mutant 68): killable but unusual
Event-building + HTTP path (17, 55, 88): killable, higher value
## Higher-value survivors deferred to item G
Three specific mutants worth closing in the broader test-coverage
push (item G):
- Mutant 17 (line 88): kwarg filter mutation; event would have
app_context twice. Killable via field-count assertion.
- Mutant 55 (line 156): HTTP Authorization header template
corruption; would break Splunk REST auth. Killable via mock
assertion on header value.
- Mutant 88 (line 189): error_msg = None mutation; masks
diagnostic text from caller. Killable via assertion that
error_msg is non-empty in exception path.
These require mocking the urllib.request layer — different style
from the existing event-construction unit tests. Deferred to item
G to bundle with the broader coverage push.
## Status
All mutmut work items (C, D, E) closed in this v1.1 sweep.
MUTATION_TESTING.md "Open" list now empty.
doc-drift: OK (33 docs against build 660).1 parent 8e0fc67 commit e69a21a
1 file changed
Lines changed: 69 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
285 | 285 | | |
286 | 286 | | |
287 | 287 | | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
288 | 347 | | |
289 | 348 | | |
290 | 349 | | |
| |||
325 | 384 | | |
326 | 385 | | |
327 | 386 | | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
328 | 396 | | |
329 | 397 | | |
330 | | - | |
331 | | - | |
332 | | - | |
| 398 | + | |
333 | 399 | | |
334 | 400 | | |
335 | 401 | | |
| |||
0 commit comments