[package]
name = "ruff-fuzz"
version = "0.0.0"
authors = [
    "Charlie Marsh <charlie.r.marsh@gmail.com>",
    "Addison Crump <research@addisoncrump.info>",
]
publish = false
edition = "2021"

[features]
default = ["libfuzzer"]
full-idempotency = []
libfuzzer = ["libfuzzer-sys/link_libfuzzer"]

[package.metadata]
cargo-fuzz = true

[dependencies]
red_knot_python_semantic = { path = "../crates/red_knot_python_semantic" }
red_knot_vendored = { path = "../crates/red_knot_vendored" }
ruff_db = { path = "../crates/ruff_db" }
ruff_linter = { path = "../crates/ruff_linter" }
ruff_python_ast = { path = "../crates/ruff_python_ast" }
ruff_python_codegen = { path = "../crates/ruff_python_codegen" }
ruff_python_parser = { path = "../crates/ruff_python_parser" }
ruff_source_file = { path = "../crates/ruff_source_file" }
ruff_python_formatter = { path = "../crates/ruff_python_formatter" }
ruff_text_size = { path = "../crates/ruff_text_size" }

libfuzzer-sys = { git = "https://github.com/rust-fuzz/libfuzzer", default-features = false }
salsa = { git = "https://github.com/salsa-rs/salsa.git", rev = "87bf6b6c2d5f6479741271da73bd9d30c2580c26" }
similar = { version = "2.5.0" }
tracing = { version = "0.1.40" }

# Prevent this from interfering with workspaces
[workspace]
members = ["."]

[[bin]]
name = "red_knot_check_invalid_syntax"
path = "fuzz_targets/red_knot_check_invalid_syntax.rs"

[[bin]]
name = "ruff_parse_simple"
path = "fuzz_targets/ruff_parse_simple.rs"

[[bin]]
name = "ruff_fix_validity"
path = "fuzz_targets/ruff_fix_validity.rs"

[[bin]]
name = "ruff_formatter_validity"
path = "fuzz_targets/ruff_formatter_validity.rs"

[[bin]]
name = "ruff_parse_idempotency"
path = "fuzz_targets/ruff_parse_idempotency.rs"

[[bin]]
name = "ruff_formatter_idempotency"
path = "fuzz_targets/ruff_formatter_idempotency.rs"

[profile.release]
opt-level = 3
debug = true

[profile.dev]
opt-level = 3
debug = true

[profile.test]
opt-level = 3
debug = true
