Mercurial > hg
view contrib/fuzz/README.rst @ 45047:40120de810ba stable
demandimport: ignore `lzma` module for demandimport
This makes importing the module fail if the `_lzma` module is not present.
This makes e.g. tarfile correctly recognize if LZMA support is not present. It
changes the exception
File "/usr/lib/python3.6/tarfile.py", line 1694, in xzopen
fileobj = lzma.LZMAFile(fileobj or name, mode, preset=preset)
AttributeError: module 'lzma' has no attribute 'LZMAFile'
to the more correct exception
File "/usr/lib/python3.6/tarfile.py", line 1692, in xzopen
raise CompressionError("lzma module is not available")
tarfile.CompressionError: lzma module is not available
Also, it prevents that the error "abort: No module named '_lzma'!" is shown when
a development warning is to be shown. The reason why that happened is that for
showing the warning, we get information about the stack frames from the inspect
module, which accesses the `__file__` attribute of all modules in `sys.modules`
to build some cache, causing all modules (including `lzma`) to be imported.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Wed, 08 Jul 2020 08:25:30 +0200 |
parents | e437de3881c1 |
children |
line wrap: on
line source
How to add fuzzers (partially cribbed from oss-fuzz[0]): 1) git clone https://github.com/google/oss-fuzz 2) cd oss-fuzz 3) python infra/helper.py build_image mercurial 4) docker run --cap-add=SYS_PTRACE -it -v $HG_REPO_PATH:/hg-new \ gcr.io/oss-fuzz/mercurial bash 5) cd /src 6) rm -r mercurial 7) ln -s /hg-new mercurial 8) cd mercurial 9) compile 10) ls $OUT Step 9 is literally running the command "compile", which is part of the docker container. Once you have that working, you can build the fuzzers like this (in the oss-fuzz repo): python infra/helper.py build_fuzzers --sanitizer address mercurial $HG_REPO_PATH (you can also say "memory", "undefined" or "coverage" for sanitizer). Then run the built fuzzers like this: python infra/helper.py run_fuzzer mercurial -- $FUZZER 0: https://github.com/google/oss-fuzz/blob/master/docs/new_project_guide.md