grok-build-upstream-mirror/crates/codegen/xai-grok-markdown/fuzz/README.md
grokkybara[bot] c68e39f604 Publish harness and TUI open-source
initial sync from the monorepo
2026-07-16 06:46:02 +01:00

47 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Fuzzing xai-grok-markdown
Coverage-guided fuzzing for the markdown renderer using [cargo-fuzz](https://rust-fuzz.github.io/book/cargo-fuzz.html) (libFuzzer).
## Prerequisites
```bash
cargo install cargo-fuzz # if not already installed
rustup toolchain install nightly
```
## Targets
| Target | What it fuzzes |
|---|---|
| `render_all` | All 8 combos: `pretty × syntect × {full, streaming}` for every input |
Each iteration runs:
- `render_markdown_ratatui_full()` — 4 combos (pretty/non-pretty × syntect/no-syntect)
- `StreamingMarkdownRenderer` char-by-char — same 4 combos
## Running
From `crates/codegen/xai-grok-markdown`:
```bash
# Run indefinitely (Ctrl-C to stop):
cargo +nightly fuzz run render_all fuzz/corpus/render_all fuzz/seeds/render_all -- -max_len=16384
# Run for 5 minutes:
cargo +nightly fuzz run render_all fuzz/corpus/render_all fuzz/seeds/render_all -- -max_len=16384 -max_total_time=300
```
- `corpus/` — auto-generated inputs (gitignored)
- `seeds/` — hand-written seed inputs (checked in)
## Reproducing a crash
When a crash is found, the input is saved to `artifacts/render_all/crash-<hash>`. Reproduce it with:
```bash
cargo +nightly fuzz run render_all fuzz/artifacts/render_all/crash-<hash>
```
## Adding seed inputs
Drop `.txt` or `.md` files into `seeds/render_all/`. Good seeds cover distinct markdown features (tables, code blocks, emoji, nested lists, etc.) and help the fuzzer reach new code paths faster.