All notable changes to apollo-smith
will be documented in this file.
This project adheres to Semantic Versioning.
0.14.0 - 2024-09-24
- Update apollo-compiler dependency to
=1.0.0-beta.24
0.13.0 - 2024-09-17
- Update apollo-compiler dependency to
=1.0.0-beta.23
0.12.0 - 2024-09-09
- Update apollo-compiler dependency to
=1.0.0-beta.22
0.11.0 - 2024-09-03
- Update apollo-compiler dependency to
=1.0.0-beta.21
0.10.0 - 2024-07-31
- Update apollo-parser dependency to
0.8.0
- Update apollo-compiler dependency to
=1.0.0-beta.20
0.9.0 - 2024-07-19
- Update apollo-compiler dependency to
=1.0.0-beta.19
0.8.0 - 2024-06-27
- Update apollo-compiler dependency to
=1.0.0-beta.18
0.7.0 - 2024-06-20
- Improve field variability in Selection Set generation - geal, pull/866. This changes the field generation algorithm in apollo-smith to allow more variety, because the previous implementation was the previous implementation was too biased towards the first field specified in a type. This also adds an example to generate a random query from a schema.
0.6.0-beta.1 - 2023-11-30
- Remove the
parser-impl
feature flag - SimonSapin, pull/754. This functionality is now always enabled. - Use apollo-compiler instead of apollo-encoder for serialization - SimonSapin, pull/754. The exact string output may change.
- Make serialization ordering deterministic - SimonSapin, pull/754.
Internally use
IndexMap
andIndexSet
instead ofIndexMap
andIndexSet
0.5.0 - 2023-10-19
-
[email protected] - SimonSapin, pull/694
This updates the version of
apollo-parser
required by theTryFrom
implementations in this crate. -
removes
tryfrom
from apollo-compiler - SimonSapin[email protected]
can be directly serialised to sdl without requiring apollo-encoder. thetryfrom
implementation is therefore no longer necessary.
0.4.0 - 2023-08-21
-
[email protected] - goto-bus-stop, pull/621
This updates the version of
apollo-parser
required by theTryFrom
implementations in this crate. -
[email protected] - goto-bus-stop, pull/623
This updates the version of
apollo-encoder
required by theFrom
implementations in this crate.
0.3.2 - 2023-01-18
- Derive
Clone
onapollo-smith
types, SimonSapin in 429 - Add
DocumentBuilder::input_exhausted
, SimonSapin in 430
- TryFrom for enums to use std::Result, continuation of [390], bnjjj in 428
- Break infinite loop in input string generation, SimonSapin in 427
0.3.1 - 2022-11-29
This is a re-publish of 0.3.0 with fixed dependency versions.
0.3.0 - 2022-11-29 (YANKED)
-
make conversions from apollo-parser types fallible - goto-bus-stop, pull/371
The
parser-impl
feature flag contains conversion code from apollo-parser AST node types to apollo-smith types. With this change, those conversions now use theTryFrom
trait instead of theFrom
trait, and return errors instead of panicking.You now have to use the
try_from()
andtry_into()
methods instead offrom()
andinto()
.
0.2.0 - 2022-11-08
-
update [email protected] - lrlna, pull/340, pull/348
This change was first released in the [email protected] patch release. It should have been a breaking change, as the update to the new version requires users to also update apollo-parser to 0.3.0 at the same time.
This version is identical to 0.1.5 except for the version number. apollo-smith versions 0.1.4 and 0.1.5 have been yanked.
0.1.5 - 2022-11-04 (YANKED)
-
update [email protected] - lrlna, pull/348
-
update [email protected] - lrlna, pull/349
0.1.4 - 2022-11-04 (YANKED)
- update [email protected] - lrlna, pull/340
0.1.3 - 2022-05-12
-
add interface definition to internal stack - bnjjj, pull/213
Added support of interface definition in the stack to fill an operation with correct fields.
0.1.2 - 2022-04-28
- Update apollo-encoder to 0.3.0 - lrlna, pull/207 pull/208
apollo-encoder
's 0.3.0 changesdesciption
anddefault-value
setters to accept String as a parameter. This changes the internals of apollo-smith accordingly.
0.1.1 - 2022-04-01
-
Add
parser-impl
feature flag - bnjjj, pull/197parser-impl
feature inapollo-smith
is used to convertapollo-parser
types toapollo-smith
types. This is useful when you require the test-case generator to generate documents based on a given schema.## Cargo.toml [dependencies] apollo-smith = { version = "0.1.1", features = ["parser-impl"] }
use std::fs; use apollo_parser::Parser; use apollo_smith::{Document, DocumentBuilder}; use libfuzzer_sys::arbitrary::{Result, Unstructured}; /// This generate an arbitrary valid GraphQL operation pub fn generate_valid_operation(input: &[u8]) { let parser = Parser::new(&fs::read_to_string("supergraph.graphql").expect("cannot read file")); let tree = parser.parse(); if !tree.errors().is_empty() { panic!("cannot parse the graphql file"); } let mut u = Unstructured::new(input); // Convert `apollo_parser::Document` into `apollo_smith::Document`. let apollo_smith_doc = Document::from(tree.document()); // Create a `DocumentBuilder` given an existing document to match a schema. let mut gql_doc = DocumentBuilder::with_document(&mut u, apollo_smith_doc)?; let operation_def = gql_doc.operation_definition()?.unwrap(); Ok(operation_def.into()) }
-
Introduces semantic validations to the test-case generation - bnjjj, pull/197
Semantic validations currently include:
- Directives used in the document must already be defined
- Directives must be unique in a given Directive Location
- Default values must be of correct type
- Input values must be of correct type
- All type extensions are applied to an existing type
- Field arguments in fragments and operation definitions must be defined on original type and must be of correct type
0.1.0 - 2021-02-18
Introducing apollo-smith
!
The goal of apollo-smith
is to generate valid GraphQL documents by sampling
from all available possibilities of GraphQL grammar.
We've written apollo-smith
to use in fuzzing, but you may wish to use it for
anything that requires GraphQL document generation.
apollo-smith
is inspired by bytecodealliance's wasm-smith
crate, and the
article written by Nick Fitzgerald on writing test case generators in Rust.
This is still a work in progress, for outstanding issues, checkout out the apollo-smith label in our issue tracker.