#testing #quickcheck #property #fuzz #fuzzing

app cargo-bolero

cargo command for running bolero fuzz tests

16 releases (9 breaking)

0.10.0 Sep 28, 2023
0.9.0 Mar 21, 2023
0.8.0 Oct 27, 2022
0.7.0 May 24, 2022
0.2.0 Oct 16, 2019

#41 in Cargo plugins

Download history 83/week @ 2023-08-14 81/week @ 2023-08-21 113/week @ 2023-08-28 103/week @ 2023-09-04 89/week @ 2023-09-11 130/week @ 2023-09-18 136/week @ 2023-09-25 112/week @ 2023-10-02 95/week @ 2023-10-09 98/week @ 2023-10-16 94/week @ 2023-10-23 103/week @ 2023-10-30 120/week @ 2023-11-06 137/week @ 2023-11-13 143/week @ 2023-11-20 193/week @ 2023-11-27

609 downloads per month

MIT license

290KB
6.5K SLoC

C 5.5K SLoC // 0.1% comments Rust 1K SLoC // 0.0% comments Shell 82 SLoC // 0.2% comments

cargo-bolero

cargo-bolero can be installed globally with cargo:

$ cargo install -f cargo-bolero

Linux Installation

cargo-bolero needs a couple of libraries installed to compile. If these libraries aren't available the requirement can be relaxed by executing cargo install cargo-bolero --no-default-features -f

Debian/Ubuntu

$ sudo apt install binutils-dev libunwind-dev

fuzz

Run an engine for a target

USAGE:
    cargo bolero test [FLAGS] [OPTIONS] <test>

FLAGS:
        --all-features           Activate all available features
    -h, --help                   Prints help information
        --no-default-features    Do not activate the `default` feature
        --release                Build artifacts in release mode, with optimizations
    -V, --version                Prints version information

OPTIONS:
        --features <features>                    Space-separated list of features to activate
    -e, --engine <engine>                        Run the test with a specific engine [default: libfuzzer]
    -j, --jobs <jobs>                            Number of parallel jobs
        --manifest-path <manifest-path>          Path to Cargo.toml
    -l, --max-input-length <max-input-length>    Limit the size of inputs to a specific length
    -p, --package <package>                      Package to run tests for
    -r, --runs <runs>                            Run the engine for a specified number of runs
    -s, --sanitizer <sanitizer>...               Build with the sanitizer enabled
    -S, --seed <seed>                            Run the engine with an initial seed
        --target <target>                        Build for the target triple
        --target_dir <target-dir>                Directory for all generated artifacts
    -T, --time <time>                            Run the engine for a specified number of seconds
        --toolchain <toolchain>                  Use a rustup toolchain to execute cargo build

ARGS:
    <test>    Name of the test target

reduce

Reduce the corpus of a test target with an engine

USAGE:
    cargo bolero reduce [FLAGS] [OPTIONS] <test>

FLAGS:
        --all-features           Activate all available features
    -h, --help                   Prints help information
        --no-default-features    Do not activate the `default` feature
        --release                Build artifacts in release mode, with optimizations
    -V, --version                Prints version information

OPTIONS:
        --features <features>              Space-separated list of features to activate
    -e, --engine <engine>                  Run the test with a specific engine [default: libfuzzer]
        --manifest-path <manifest-path>    Path to Cargo.toml
    -p, --package <package>                Package to run tests for
    -s, --sanitizer <sanitizer>...         Build with the sanitizer enabled
        --target <target>                  Build for the target triple
        --target_dir <target-dir>          Directory for all generated artifacts
        --toolchain <toolchain>            Use a rustup toolchain to execute cargo build

ARGS:
    <test>    Name of the test target

Dependencies

~2–12MB
~143K SLoC