blob: d3cfe17071344a3e7e7a1325e71241299daf2aa5 [file] [log] [blame] [view] [edit]
# Property tests for `bindgen` with `quickchecking`
`quickchecking` generates random C headers to test `bindgen`
using the [`quickcheck`][quickcheck] property testing crate. When testing
`bindgen` with `quickchecking`, the generated header files are passed to
`bindgen`'s `csmith-fuzzing/predicate.py` script. If that script fails,
`quickchecking` panics, and you can report an issue containing the test case!
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [Prerequisites](#prerequisites)
- [Running](#running)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
## Prerequisites
Requires `python3` to be in `$PATH`.
Many systems have `python3` by default but if your OS doesn't, its package
manager may make it available:
```
$ sudo apt install python3
$ brew install python3
$ # Etc...
```
## Running
Run `quickchecking` binary to generate and test fuzzed C headers with
`cargo run`. Additional configuration is exposed through the binary's CLI.
```
$ cargo run --bin=quickchecking -- -h
```
[quickcheck]: https://github.com/BurntSushi/quickcheck