From 42f9331e693f5058fcfcd7aef5a92cabc04c20ee Mon Sep 17 00:00:00 2001 From: cirakg Date: Tue, 20 Oct 2026 01:51:05 +0200 Subject: test(import): cover parsers, importer and a seeded fuzz corpus; import 100 entries in the UI flow Co-Authored-By: Claude Opus 5.5 --- tools/tests/test_gen_fuzz_corpus.py | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 tools/tests/test_gen_fuzz_corpus.py (limited to 'tools/tests') diff --git a/tools/tests/test_gen_fuzz_corpus.py b/tools/tests/test_gen_fuzz_corpus.py new file mode 100644 index 0000000..5ce8c99 --- /dev/null +++ b/tools/tests/test_gen_fuzz_corpus.py @@ -0,0 +1,41 @@ +# Author: cirakg & claude ai +# Summary: Tests for the fuzz corpus generator: determinism, mutation, valid Monkey C output, and the committed corpus. +from __future__ import annotations + +import random +from pathlib import Path + +import gen_fuzz_corpus + +ROOT = Path(__file__).resolve().parents[2] + + +def test_same_seed_gives_the_same_corpus() -> None: + assert gen_fuzz_corpus.corpus(7, 10, 10) == gen_fuzz_corpus.corpus(7, 10, 10) + assert gen_fuzz_corpus.corpus(7, 10, 10) != gen_fuzz_corpus.corpus(8, 10, 10) + + +def test_corpus_starts_with_the_valid_seeds() -> None: + jsons, uris = gen_fuzz_corpus.corpus(1, 5, 5) + assert jsons[0] == gen_fuzz_corpus.AEGIS_SEED.encode() + assert uris[: len(gen_fuzz_corpus.URI_SEEDS)] == [u.encode() for u in gen_fuzz_corpus.URI_SEEDS] + assert len(jsons) == 5 and len(uris) == 5 + + +def test_mutate_changes_the_input() -> None: + rng = random.Random(3) + base = gen_fuzz_corpus.AEGIS_SEED.encode() + assert sum(gen_fuzz_corpus.mutate(base, rng) != base for _ in range(20)) >= 19 + + +def test_render_puts_commas_outside_the_comments() -> None: + text = gen_fuzz_corpus.render([b"{}", b"[]"], [b"x"], 1) + assert '"7b7d", // lint: allow-literal' in text + assert '"5b5d" // lint: allow-literal' in text + assert text.startswith("// Author: cirakg & claude ai\n// Summary:") + + +def test_committed_corpus_matches_the_generator() -> None: + jsons, uris = gen_fuzz_corpus.corpus(4242, 50, 50) + committed = (ROOT / "test" / "data" / "FuzzCorpus.mc").read_text(encoding="utf-8") + assert committed == gen_fuzz_corpus.render(jsons, uris, 4242) -- cgit v1.2.3