Closed DaveLak closed 5 months ago
CC @EliahKagan
and FWIW, if removing fuzz_tree
is not desired for any reason, I did test out tempfile.TemporaryDirectory()
there and it works well enough to address the primary concerns raised. My fork has the commit with it: https://github.com/DaveLak/GitPython/commit/3a049599924d081fbeb1a8662ee6d2a2af4af80c
As discussed in the initial fuzzing integration PR^1,
fuzz_tree.py
's implementation was not ideal in terms of coverage and its reading/writing to hard-coded paths inside/tmp
was problematic as (among other concerns), it causes intermittent crashes on ClusterFuzz^2 when multiple workers execute the test at the same time on the same machine.The changes here replace
fuzz_tree.py
completely with a completely newfuzz_repo.py
fuzz target which:tempfile.TemporaryDirectory()
to safely manage tmpdir creation and tear down, including during multi-worker execution runs.fuzz_tree.py
, but it also adds considerably more from much smaller data inputs and with less memory consumed (and it doesn't even have a seed corpus or target specific dictionary yet.)Repo
to the harness.Here are some very rough stats to give a very rough idea of the difference:
fuzz_repo.py
(my local testing)fuzz_tree.py
(most recent successful CF run)Note on License
Because
fuzz_tree.py
was removed andfuzz_repo.py
was not derived from it, the Apache License call outs in the docs were also updated as they only apply to the singefuzz_config.py
file now.