parent
0ccdea2ff1
commit
b7059d07e8
@ -0,0 +1,26 @@ |
||||
#![no_main] |
||||
use lazy_static::lazy_static; |
||||
use libfuzzer_sys::fuzz_target; |
||||
use oxigraph::io::DatasetFormat; |
||||
use oxigraph::sparql::Query; |
||||
use oxigraph::store::Store; |
||||
|
||||
lazy_static! { |
||||
static ref STORE: Store = { |
||||
let store = Store::new().unwrap(); |
||||
store |
||||
.load_dataset( |
||||
sparql_smith::DATA_TRIG.as_bytes(), |
||||
DatasetFormat::TriG, |
||||
None, |
||||
) |
||||
.unwrap(); |
||||
store |
||||
}; |
||||
} |
||||
|
||||
fuzz_target!(|data: sparql_smith::Query| { |
||||
if let Ok(q) = Query::parse(&data.to_string(), None) { |
||||
STORE.query(q).unwrap(); |
||||
} |
||||
}); |
@ -1,10 +1,7 @@ |
||||
#![no_main] |
||||
use libfuzzer_sys::fuzz_target; |
||||
use spargebra::Query; |
||||
use std::str; |
||||
|
||||
fuzz_target!(|data: &[u8]| { |
||||
if let Ok(data) = str::from_utf8(data) { |
||||
Query::parse(data, None); |
||||
} |
||||
fuzz_target!(|data: &str| { |
||||
Query::parse(data, None); |
||||
}); |
||||
|
@ -0,0 +1,16 @@ |
||||
[package] |
||||
name = "sparql-smith" |
||||
version = "0.1.0-alpha.1" |
||||
authors = ["Tpt <thomas@pellissier-tanon.fr>"] |
||||
license = "MIT OR Apache-2.0" |
||||
readme = "README.md" |
||||
keywords = ["SPARQL"] |
||||
repository = "https://github.com/oxigraph/oxigraph/tree/main/lib/sparql-smith" |
||||
homepage = "https://oxigraph.org/" |
||||
description = """ |
||||
A SPARQL test cases generator |
||||
""" |
||||
edition = "2021" |
||||
|
||||
[dependencies] |
||||
arbitrary = { version = "1", features = ["derive"] } |
@ -0,0 +1,44 @@ |
||||
SPARQL smith |
||||
============ |
||||
|
||||
[![Latest Version](https://img.shields.io/crates/v/sparql-smith.svg)](https://crates.io/crates/sparql-smith) |
||||
[![Released API docs](https://docs.rs/sparql-smith/badge.svg)](https://docs.rs/sparql-smith) |
||||
[![Crates.io downloads](https://img.shields.io/crates/d/sparql-smith)](https://crates.io/crates/sparql-smith) |
||||
[![actions status](https://github.com/oxigraph/oxigraph/workflows/build/badge.svg)](https://github.com/oxigraph/oxigraph/actions) |
||||
[![Gitter](https://badges.gitter.im/oxigraph/community.svg)](https://gitter.im/oxigraph/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) |
||||
|
||||
sparql-smith is a test case generator for the [SPARQL](https://www.w3.org/TR/sparql11-overview/) language. |
||||
|
||||
It provides a single struct, `Query` that could be serialized to a SPARQL query using `to_string()`. |
||||
|
||||
The queries generated are sadly not always valid. Variables scopes are not properly handled yet. |
||||
All SPARQL features are not supported yet. |
||||
|
||||
The `DATA_TRIG` constant is provided as an example dataset on which queries could be evaluated. |
||||
|
||||
Usage example with [libfuzzer-sys](https://docs.rs/libfuzzer-sys) and [spargebra](https://docs.rs/spargebra): |
||||
|
||||
```rust |
||||
#![no_main] |
||||
use libfuzzer_sys::fuzz_target; |
||||
|
||||
fuzz_target!(|data: sparql_smith::Query| { |
||||
spargebra::Query::parse(&data.to_string(), None).unwrap() |
||||
}); |
||||
``` |
||||
|
||||
## License |
||||
|
||||
This project is licensed under either of |
||||
|
||||
* Apache License, Version 2.0, ([LICENSE-APACHE](../LICENSE-APACHE) or |
||||
`<http://www.apache.org/licenses/LICENSE-2.0>`) |
||||
* MIT license ([LICENSE-MIT](../LICENSE-MIT) or |
||||
`<http://opensource.org/licenses/MIT>`) |
||||
|
||||
at your option. |
||||
|
||||
|
||||
### Contribution |
||||
|
||||
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Oxigraph by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. |
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue