Skip to content

Commit 9e09218

Browse files
committed
Temp
1 parent fddd791 commit 9e09218

File tree

6 files changed

+25
-63
lines changed

6 files changed

+25
-63
lines changed

crates/apollo-smith/src/next/ast/document.rs

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,15 @@
1-
use std::collections::HashSet;
2-
3-
use arbitrary::Result;
4-
51
use paste::paste;
62

73
use apollo_compiler::ast::{
8-
Definition, DirectiveDefinition, DirectiveLocation, Document, EnumTypeDefinition,
9-
EnumTypeExtension, EnumValueDefinition, FieldDefinition, FragmentDefinition,
10-
InputObjectTypeDefinition, InputObjectTypeExtension, InputValueDefinition,
11-
InterfaceTypeDefinition, InterfaceTypeExtension, Name, ObjectTypeDefinition,
12-
ObjectTypeExtension, OperationDefinition, OperationType, ScalarTypeDefinition,
13-
ScalarTypeExtension, SchemaDefinition, SchemaExtension, Type, UnionTypeDefinition,
14-
UnionTypeExtension, Value,
4+
Definition, DirectiveDefinition, Document, EnumTypeDefinition, EnumTypeExtension,
5+
FragmentDefinition, InputObjectTypeDefinition, InputObjectTypeExtension,
6+
InterfaceTypeDefinition, InterfaceTypeExtension, ObjectTypeDefinition, ObjectTypeExtension,
7+
OperationDefinition, ScalarTypeDefinition, ScalarTypeExtension, SchemaDefinition,
8+
SchemaExtension, UnionTypeDefinition, UnionTypeExtension,
159
};
16-
use apollo_compiler::executable::DirectiveList;
17-
use apollo_compiler::schema::ExtendedType;
18-
use apollo_compiler::{Node, NodeStr, Schema};
19-
20-
use crate::next::ast::definition::{DefinitionExt, DefinitionKind};
21-
use crate::next::schema::extended_type::{ExtendedTypeExt, ExtendedTypeKind};
22-
use crate::next::unstructured::{Unstructured, UnstructuredExt, UnstructuredOption};
10+
use apollo_compiler::Node;
2311

24-
use super::super::schema::schema::SchemaExt;
25-
use super::directive_definition::DirectiveDefinitionIterExt;
12+
use crate::next::unstructured::Unstructured;
2613

2714
/// Macro to create accessors for definitions
2815
macro_rules! access {

crates/apollo-smith/src/next/mod.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,15 @@ pub enum Error {
7373

7474
pub fn generate_schema_document(input: &[u8]) -> Result<Document, Error> {
7575
let mut u = Unstructured::new(input);
76-
println!("starting");
7776
let mut doc = Document::parse(
7877
"type Query { me: String }".to_string(),
7978
PathBuf::from("synthetic"),
8079
)
8180
.map_err(Error::Parse)?; // Start with a minimal schema
82-
println!("parsed initial");
8381
let mutations = mutations::all_mutations();
82+
for mutation in &mutations {
83+
println!("mutation {}", mutation.type_name());
84+
}
8485
let mut schema = doc.to_schema().expect("initial schema must be valid");
8586
for n in 0..1000 {
8687
println!("iteration: {}", n);
@@ -93,8 +94,6 @@ pub fn generate_schema_document(input: &[u8]) -> Result<Document, Error> {
9394
Document::parse(doc.to_string(), PathBuf::from("synthetic")).map_err(Error::Parse)?;
9495
// Now let's validate that the schema says it's OK
9596

96-
println!("{}", doc.to_string());
97-
9897
match (mutation.is_valid(), doc.to_schema_validate()) {
9998
(true, Ok(new_schema)) => {
10099
schema = new_schema.into_inner();
@@ -107,7 +106,7 @@ pub fn generate_schema_document(input: &[u8]) -> Result<Document, Error> {
107106
return Err(Error::ExpectedValidationFail(doc));
108107
}
109108
(false, Err(_)) => {
110-
// Validation was expected to fail, we can't continue
109+
// Validation was expected to fail, we can't continue as we mutated the doc
111110
return Ok(doc);
112111
}
113112
}
@@ -130,7 +129,7 @@ mod test {
130129

131130
#[test]
132131
fn test() {
133-
let input = b"293ur928jff029jf0293f";
132+
let input = b"293ur928jff029jf0293ff20983nr0v243ucm8unr4pv938uavtnpb98aun34vtr98aun23vr892auna98r3unv298ua43arp9vu32a3p538umq2v4098cutrnfavwynr9ha28pbz9vuwrA29P38AU[R09UMA2[0893U5NC9A8P3NRV";
134133
match generate_schema_document(input) {
135134
Ok(_) => {}
136135
Err(e) => {

crates/apollo-smith/src/next/test.graphql

Lines changed: 0 additions & 7 deletions
This file was deleted.

crates/apollo-smith/src/next/unstructured.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ impl Unstructured<'_> {
160160
.into_iter()
161161
.with_location(DirectiveLocation::Object)
162162
.try_collect(self, schema)?,
163-
fields: self.arbitrary_vec(0, 5, |u| {
163+
fields: self.arbitrary_vec(1, 5, |u| {
164164
Ok(Node::new(u.arbitrary_field_definition(
165165
schema,
166166
DirectiveLocation::FieldDefinition,

fuzz/fuzz_targets/parser_next.rs

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![no_main]
22
use apollo_parser::Parser;
3-
use apollo_rs_fuzz::{fuzz_document, generate_valid_document, log_gql_doc};
3+
use apollo_rs_fuzz::{generate_valid_document, log_gql_doc};
44
use libfuzzer_sys::arbitrary::Unstructured;
55
use libfuzzer_sys::fuzz_target;
66
use log::debug;
@@ -9,33 +9,7 @@ use std::panic;
99
fuzz_target!(|data: &[u8]| {
1010
let _ = env_logger::try_init();
1111

12-
let parser = panic::catch_unwind(|| Parser::new(&doc_generated));
13-
14-
let parser = match parser {
15-
Err(err) => {
16-
panic!("error {err:?}");
17-
}
18-
Ok(p) => p,
19-
};
20-
debug!("======= DOCUMENT =======");
21-
debug!("{}", doc_generated);
22-
debug!("========================");
23-
24-
let tree = parser.parse();
25-
// early return if the parser detected an error
26-
let mut should_panic = false;
27-
if tree.errors().len() > 0 {
28-
should_panic = true;
29-
let errors = tree
30-
.errors()
31-
.map(|err| err.message())
32-
.collect::<Vec<&str>>()
33-
.join("\n");
34-
debug!("Parser errors ========== \n{:?}", errors);
35-
debug!("========================");
36-
log_gql_doc(&doc_generated, &errors);
37-
}
38-
if should_panic {
39-
panic!("error detected");
12+
if let Err(e) = apollo_rs_fuzz::generate_schema_document(data) {
13+
log::info!("error: {:?}", e);
4014
}
4115
});

fuzz/src/lib.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@ pub fn generate_valid_document(input: &[u8]) -> Result<String> {
1313
Ok(document.into())
1414
}
1515

16+
pub fn generate_schema_document(
17+
input: &[u8],
18+
) -> std::result::Result<(), apollo_smith::next::Error> {
19+
drop(env_logger::try_init());
20+
21+
apollo_smith::next::generate_schema_document(input)?;
22+
Ok(())
23+
}
24+
1625
/// Log the error and the document generated for these errors
1726
/// Save it into files
1827
pub fn log_gql_doc(gql_doc: &str, errors: &str) {

0 commit comments

Comments
 (0)