Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Istanbul | 8,577 | 132,065 | 43,441 | 4 months ago | 95 | August 21, 2016 | 400 | other | JavaScript | |
Yet another JS code coverage tool that computes statement, line, function and branch coverage with module loader hooks to transparently add coverage when running tests. Supports all JS coverage use cases including unit tests, server side functional tests and browser tests. Built for scale. | ||||||||||
Keystone | 7,751 | 1,329 | 42 | 3 days ago | 171 | July 15, 2019 | 102 | mit | TypeScript | |
The most powerful headless CMS for Node.js — built with GraphQL and React | ||||||||||
Syzkaller | 4,634 | 19 hours ago | 95 | April 25, 2021 | 281 | apache-2.0 | Go | |||
syzkaller is an unsupervised coverage-guided kernel fuzzer | ||||||||||
Cypress Realworld App | 4,447 | 3 days ago | 16 | mit | TypeScript | |||||
A payment application to demonstrate real-world usage of Cypress testing methods, patterns, and workflows. | ||||||||||
Intern | 4,362 | 1,292 | 362 | 2 months ago | 112 | November 29, 2021 | 139 | other | TypeScript | |
A next-generation code testing stack for JavaScript. | ||||||||||
Joint | 3,849 | 271 | 44 | 2 days ago | 46 | April 08, 2022 | 58 | mpl-2.0 | JavaScript | |
A proven SVG-based JavaScript diagramming library powering exceptional UIs | ||||||||||
Aflplusplus | 3,552 | 2 days ago | 22 | apache-2.0 | C | |||||
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more! | ||||||||||
Coverlet | 2,674 | 918 | 37 | 9 days ago | 13 | February 06, 2022 | 144 | mit | C# | |
Cross platform code coverage for .NET | ||||||||||
Reportgenerator | 2,085 | 759 | 24 | 12 days ago | 267 | May 18, 2022 | 2 | apache-2.0 | C# | |
ReportGenerator converts coverage reports generated by coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov or lcov into human readable reports in various formats. | ||||||||||
Tarpaulin | 1,916 | 1 | 6 | 2 days ago | 96 | August 30, 2022 | 43 | apache-2.0 | Rust | |
A code coverage tool for Rust projects |
fuzzit.dev was acquired by GitLab and the new home for this repo is here
PythonFuzz is coverage-guided fuzzer for testing python packages.
Fuzzing for safe languages like python is a powerful strategy for finding bugs like unhandled exceptions, logic bugs, security bugs that arise from both logic bugs and Denial-of-Service caused by hangs and excessive memory usage.
Fuzzing can be seen as a powerful and efficient strategy in real-world software in addition to classic unit-tests.
The first step is to implement the following function (also called a fuzz
target). Here is an example of a simple fuzz function for the built-in html
module
from html.parser import HTMLParser
from pythonfuzz.main import PythonFuzz
@PythonFuzz
def fuzz(buf):
try:
string = buf.decode("ascii")
parser = HTMLParser()
parser.feed(string)
except UnicodeDecodeError:
pass
if __name__ == '__main__':
fuzz()
Features of the fuzz target:
buf
( in a separate process).The next step is to download pythonfuzz and then run your fuzzer
pip install pythonfuzz
python examples/htmlparser/fuzz.py
#394378 NEW cov: 608 corp: 24 exec/s: 1119 rss: 10.73828125 MB
subclasses of ParserBase must override error()
Traceback (most recent call last):
File "/Users/yevgenyp/fuzzitdev/pythonfuzz/pythonfuzz/fuzzer.py", line 21, in worker
target(buf)
File "examples/htmlparser/fuzz.py", line 12, in fuzz
pass
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/html/parser.py", line 111, in feed
self.goahead(0)
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/html/parser.py", line 179, in goahead
k = self.parse_html_declaration(i)
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/html/parser.py", line 264, in parse_html_declaration
return self.parse_marked_section(i)
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/_markupbase.py", line 159, in parse_marked_section
self.error('unknown status keyword %r in marked section' % rawdata[i+3:j])
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/_markupbase.py", line 34, in error
"subclasses of ParserBase must override error()")
NotImplementedError: subclasses of ParserBase must override error()
crash was written to crash-dbfa437e5956643645681fe6a3ac76997be0b29a7c7af82d88c8c390f379502d
crash = 3c215b63612121
This example quickly finds an an unhandled exception/flow in a few minutes.
PythonFuzz will generate and test various inputs in an infinite loop. corpus
is optional directory and will be used to
save the generated testcases so later runs can be started from the same point and provided as seed corpus.
PythonFuzz can also start with an empty directory (i.e no seed corpus) though some valid test-cases in the seed corpus may speed up the fuzzing substantially.
PythonFuzz tries to mimic some of the arguments and output style from libFuzzer.
More fuzz targets examples (for real and popular libraries) are located under the examples directory and bugs that were found using those targets are listed in the trophies section.
PythonFuzz is a port of fuzzitdev/jsfuzz
which is in turn heavily based on go-fuzz originally developed by Dmitry Vyukov's. Which is in turn heavily based on Michal Zalewski AFL.
Contributions are welcome!:) There are still a lot of things to improve, and tests and features to add. We will slowly post those in the issues section. Before doing any major contribution please open an issue so we can discuss and help guide the process before any unnecessary work is done.
Feel free to add bugs that you found with pythonfuzz to this list via pull-request