Skip to content

camshaft/bolero

Folders and files

NameName
Last commit message
Last commit date

Latest commit

boquan-fangBoquan Fang
and
Boquan Fang
Feb 27, 2025
f0325c9 · Feb 27, 2025
Feb 26, 2025
Feb 27, 2025
Sep 28, 2024
Feb 26, 2025
Feb 27, 2025
Nov 26, 2024
Jun 1, 2024
May 24, 2022
Nov 17, 2020
Sep 10, 2023
Sep 9, 2019
Nov 18, 2022
May 30, 2024

Repository files navigation

bolero

Build Status Latest version Documentation License

fuzz and property testing front-end for Rust

Book

A copy of the Bolero Book can be found here: http://camshaft.github.io/bolero

Quick Start

  1. Install subcommand and add a dependency

    $ cargo add --dev bolero
    $ cargo install -f cargo-bolero
  2. Write a test using bolero::check! macro:

    pub fn buggy_add(x: u32, y: u32) -> u32 {
        if x == 12976 && y == 14867 {
            return x.wrapping_sub(y);
        }
        return x.wrapping_add(y);
    }
    
    #[test]
    fn fuzz_add() {
        bolero::check!()
            .with_type()
            .cloned()
            .for_each(|(a, b)| buggy_add(a, b) == a.wrapping_add(b));
    }
  3. Run the test with cargo bolero

    $ cargo bolero test fuzz_add
    
    # ... some moments later ...
    
    ======================== Test Failure ========================
    
    Input:
    (
        12976,
        14867,
    )
    
    Error:
    test returned `false`
    
    ==============================================================

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