From 4dad893bd2da8a2129ba276c742811516a6db611 Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Wed, 7 Sep 2022 13:41:56 +1000 Subject: [PATCH] Stable port of Fix printing directives when they contain something like a formatting specifier (#2919) (#2920) --- .../graphql/schema/idl/SchemaPrinter.java | 2 +- .../schema/idl/SchemaPrinterTest.groovy | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/schema/idl/SchemaPrinter.java b/src/main/java/graphql/schema/idl/SchemaPrinter.java index ea0df6b2e4..3683a0ddab 100644 --- a/src/main/java/graphql/schema/idl/SchemaPrinter.java +++ b/src/main/java/graphql/schema/idl/SchemaPrinter.java @@ -672,7 +672,7 @@ private SchemaElementPrinter inputObjectPrinter() { String astValue = printAst(defaultValue, fd.getType()); out.format(" = %s", astValue); } - out.format(directivesString(GraphQLInputObjectField.class, fd.isDeprecated(), fd)); + out.print(directivesString(GraphQLInputObjectField.class, fd.isDeprecated(), fd)); out.format("\n"); }); out.format("}"); diff --git a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy index 5f7f6ce409..e763932de6 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy @@ -2012,6 +2012,28 @@ type Query { ''' } + def "directive containing formatting specifiers"() { + def constraintDirective = GraphQLDirective.newDirective().name("constraint") + .argument({ + it.name("regex").type(GraphQLString).valueProgrammatic("%") + }) + .build() + GraphQLInputObjectType type = GraphQLInputObjectType.newInputObject().name("Person") + .field({ it.name("thisMustBeAPercentageSign").type(GraphQLString).withDirective(constraintDirective) }) + .build() + + when: + + def result = new SchemaPrinter().print(type) + + + then: + result == '''input Person { + thisMustBeAPercentageSign: String @constraint(regex : "%") +} +''' + } + def "can specify a new ordering for the schema printer"() { def sdl = """