Test-only deterministic fault injection for the crash/hang supervisor tests. * Gated entirely behind env vars that are never set in production; a matching * rel_path either aborts (a fault signal the supervisor classifies as a crash) * or spins forever (an external-scanner infinite loop the quiet-timeout kills). * This gives an honest guard — green iff the supervisor actually contains a real
| 682 | * unlucky in-flight file is never quarantined alone. The env var is set |
| 683 | * solely by the supervisor during recovery — a no-op on normal runs. */ |
| 684 | static void cbm_index_mark(const char *rel_path, char event) { |
| 685 | const char *mf = getenv("CBM_INDEX_MARKER_FILE"); |
| 686 | if (!mf || !mf[0] || !rel_path || !rel_path[0]) { |
| 687 | return; |
| 688 | } |
| 689 | FILE *f = cbm_fopen(mf, "ab"); |
| 690 | if (f) { |
| 691 | (void)fprintf(f, "%c %s\n", event, rel_path); |
| 692 | (void)fclose(f); |
| 693 | } |
| 694 | } |
| 695 | |
| 696 | void cbm_index_mark_start(const char *rel_path) { |
| 697 | cbm_index_mark(rel_path, 'S'); |
no test coverage detected