Struct DocumentBuilder

Source
pub struct DocumentBuilder<'a> { /* private fields */ }
Expand description

DocumentBuilder is a struct to build an arbitrary valid GraphQL document

// fuzz/fuzz_targets/my_apollo_smith_fuzz_target.rs
#![no_main]

use libfuzzer_sys::fuzz_target;
use arbitrary::Unstructured;
use apollo_smith::DocumentBuilder;

fuzz_target!(|input: &[u8]| {
    let mut u = Unstructured::new(input);
    let gql_doc = DocumentBuilder::new(&mut u)?;
    let document = gql_doc.finish();
    let document_str = String::from(document);

    // Your code here...
});

Implementations§

Source§

impl DocumentBuilder<'_>

Source

pub fn arguments( &mut self, constness: Constness, ) -> ArbitraryResult<Vec<Argument>>

Create an arbitrary vector of Argument

Source

pub fn arguments_with_def( &mut self, args_def: &ArgumentsDef, ) -> ArbitraryResult<Vec<Argument>>

Create an arbitrary vector of Argument given ArgumentsDef

Source

pub fn argument(&mut self, constness: Constness) -> ArbitraryResult<Argument>

Create an arbitrary Argument

Source

pub fn argument_with_def( &mut self, input_val_def: &InputValueDef, ) -> ArbitraryResult<Argument>

Create an arbitrary Argument

Source

pub fn arguments_definition(&mut self) -> ArbitraryResult<ArgumentsDef>

Create an arbitrary ArgumentsDef

Source§

impl DocumentBuilder<'_>

Source

pub fn description(&mut self) -> ArbitraryResult<Description>

Create an arbitrary Description

Source§

impl DocumentBuilder<'_>

Source

pub fn directives( &mut self, directive_location: DirectiveLocation, ) -> ArbitraryResult<IndexMap<Name, Directive>>

Create an arbitrary vector of Directive

Source

pub fn directive( &mut self, directive_location: DirectiveLocation, ) -> ArbitraryResult<Option<Directive>>

Create an arbitrary Directive given a directive location

Source

pub fn directive_def(&mut self) -> ArbitraryResult<DirectiveDef>

Create an arbitrary DirectiveDef

Source

pub fn directive_locations( &mut self, ) -> ArbitraryResult<IndexSet<DirectiveLocation>>

Create an arbitrary IndexSet of DirectiveLocation

Source§

impl DocumentBuilder<'_>

Source

pub fn enum_type_definition(&mut self) -> Result<EnumTypeDef>

Create an arbitrary EnumTypeDef

Source

pub fn choose_enum(&mut self) -> Result<&EnumTypeDef>

Choose an arbitrary EnumTypeDef in existings (already created) enum definitions

Source

pub fn arbitrary_variant<'b>( &mut self, enum_: &'b EnumTypeDef, ) -> Result<&'b Name>

Create an arbitrary variant Name given an enum

Source

pub fn enum_values_definition( &mut self, ) -> Result<IndexSet<EnumValueDefinition>>

Create an arbitrary EnumValueDefinition

Source§

impl DocumentBuilder<'_>

Source

pub fn fields_definition( &mut self, exclude: &[&Name], ) -> ArbitraryResult<Vec<FieldDef>>

Create an arbitrary list of FieldDef

Source

pub fn field(&mut self, index: usize) -> ArbitraryResult<Field>

Create an arbitrary Field given an object type

Source§

impl DocumentBuilder<'_>

Source

pub fn fragment_definition(&mut self) -> ArbitraryResult<FragmentDef>

Create an arbitrary FragmentDef

Source

pub fn fragment_spread( &mut self, excludes: &mut Vec<Name>, ) -> ArbitraryResult<Option<FragmentSpread>>

Create an arbitrary FragmentSpread, returns None if no fragment definition was previously created

Source

pub fn inline_fragment(&mut self) -> ArbitraryResult<InlineFragment>

Create an arbitrary InlineFragment

Source

pub fn type_condition(&mut self) -> ArbitraryResult<TypeCondition>

Create an arbitrary TypeCondition

Source§

impl DocumentBuilder<'_>

Source

pub fn input_object_type_definition( &mut self, ) -> ArbitraryResult<InputObjectTypeDef>

Create an arbitrary InputObjectTypeDef

Source§

impl DocumentBuilder<'_>

Source

pub fn input_value( &mut self, constness: Constness, ) -> ArbitraryResult<InputValue>

Create an arbitrary InputValue

Source

pub fn input_value_for_type(&mut self, ty: &Ty) -> ArbitraryResult<InputValue>

Source

pub fn input_values_def(&mut self) -> ArbitraryResult<Vec<InputValueDef>>

Create an arbitrary list of InputValueDef

Source

pub fn input_value_def(&mut self) -> ArbitraryResult<InputValueDef>

Create an arbitrary InputValueDef

Source§

impl DocumentBuilder<'_>

Source

pub fn interface_type_definition(&mut self) -> ArbitraryResult<InterfaceTypeDef>

Create an arbitrary InterfaceTypeDef

Source

pub fn implements_interfaces(&mut self) -> ArbitraryResult<IndexSet<Name>>

Create an arbitrary IndexSet of implemented interfaces

Source§

impl DocumentBuilder<'_>

Source

pub fn name(&mut self) -> ArbitraryResult<Name>

Create an arbitrary Name

Source

pub fn type_name(&mut self) -> ArbitraryResult<Name>

Create an arbitrary type Name

Source

pub fn name_with_index(&mut self, index: usize) -> ArbitraryResult<Name>

Create an arbitrary Name with an index included in the name (to avoid name conflict)

Source§

impl DocumentBuilder<'_>

Source

pub fn object_type_definition(&mut self) -> ArbitraryResult<ObjectTypeDef>

Create an arbitrary ObjectTypeDef

Source§

impl DocumentBuilder<'_>

Source

pub fn operation_definition(&mut self) -> ArbitraryResult<Option<OperationDef>>

Create an arbitrary OperationDef taking the last SchemaDef

Source§

impl DocumentBuilder<'_>

Source

pub fn scalar_type_definition(&mut self) -> ArbitraryResult<ScalarTypeDef>

Create an arbitrary ScalarTypeDef

Source§

impl DocumentBuilder<'_>

Source

pub fn schema_definition(&mut self) -> ArbitraryResult<SchemaDef>

Create an arbitrary SchemaDef

Source§

impl DocumentBuilder<'_>

Source

pub fn selection_set(&mut self) -> ArbitraryResult<SelectionSet>

Create an arbitrary SelectionSet

Source

pub fn selection( &mut self, index: usize, excludes: &mut Vec<Name>, ) -> ArbitraryResult<Selection>

Create an arbitrary Selection

Source§

impl DocumentBuilder<'_>

Source

pub fn ty(&mut self) -> ArbitraryResult<Ty>

Create an arbitrary Ty

Source

pub fn choose_ty(&mut self, existing_types: &[Ty]) -> ArbitraryResult<Ty>

Choose an arbitrary existing Ty given a slice of existing types

Source

pub fn choose_named_ty(&mut self, existing_types: &[Ty]) -> ArbitraryResult<Ty>

Choose an arbitrary existing named Ty given a slice of existing types

Source§

impl DocumentBuilder<'_>

Source

pub fn union_type_definition(&mut self) -> ArbitraryResult<UnionTypeDef>

Create an arbitrary UnionTypeDef

Source§

impl DocumentBuilder<'_>

Source

pub fn variable_definitions(&mut self) -> ArbitraryResult<Vec<VariableDef>>

Create an arbitrary list of VariableDef

Source

pub fn variable_definition(&mut self) -> ArbitraryResult<VariableDef>

Create an arbitrary VariableDef

Source§

impl<'a> DocumentBuilder<'a>

Source

pub fn new(u: &'a mut Unstructured<'a>) -> Result<Self>

Create an instance of DocumentBuilder

Source

pub fn with_document( u: &'a mut Unstructured<'a>, document: Document, ) -> Result<Self>

Create an instance of DocumentBuilder given a Document to be able to call methods on DocumentBuilder and generate valid entities like for example an operation

Source

pub fn input_exhausted(&self) -> bool

Returns whether the provided Unstructured is now empty

Source

pub fn finish(self) -> Document

Convert a DocumentBuilder into a GraphQL Document

Trait Implementations§

Source§

impl Debug for DocumentBuilder<'_>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for DocumentBuilder<'a>

§

impl<'a> !RefUnwindSafe for DocumentBuilder<'a>

§

impl<'a> !Send for DocumentBuilder<'a>

§

impl<'a> !Sync for DocumentBuilder<'a>

§

impl<'a> Unpin for DocumentBuilder<'a>

§

impl<'a> !UnwindSafe for DocumentBuilder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Paint for T
where T: ?Sized,

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.