diff --git a/example/generated.go b/example/generated.go index 85c4e024..1c32aa6e 100644 --- a/example/generated.go +++ b/example/generated.go @@ -47,8 +47,10 @@ func getViewer( ctx context.Context, client graphql.Client, ) (*getViewerResponse, error) { + var err error + var retval getViewerResponse - err := client.MakeRequest( + err = client.MakeRequest( ctx, "getViewer", ` @@ -75,8 +77,10 @@ func getUser( "Login": login, } + var err error + var retval getUserResponse - err := client.MakeRequest( + err = client.MakeRequest( ctx, "getUser", ` diff --git a/generate/config.go b/generate/config.go index 08c2a0c1..ab4f70ae 100644 --- a/generate/config.go +++ b/generate/config.go @@ -53,16 +53,29 @@ type Config struct { // Generated Package string `yaml:"package"` - // Set to the fully-qualified name of a type which generated helpers should - // accept and use as the context.Context for HTTP requests. Defaults to - // context.Context; set to the empty string to omit context entirely. + // Set to the fully-qualified name of a Go type which generated helpers + // should accept and use as the context.Context for HTTP requests. + // + // Defaults to context.Context; set to the empty string to omit context + // entirely (i.e. use context.Background()). Must be a type which + // implements context.Context. ContextType string `yaml:"context_type"` - // If set, a snippet of Go code to get a *graphql.Client from the context - // (which will be named ctx). For example, this might do - // ctx.Value(myKey).(*graphql.Client). If omitted, client must be - // passed to each method explicitly. - // TODO(#5): This is a bit broken, fix it. + // If set, a function to get a graphql.Client, perhaps from the context. + // By default, the client must be passed explicitly to each genqlient + // generated query-helper. + // + // This is useful if you have a shared client, either a global, or + // available from context, and don't want to pass it explicitly. In this + // case the signature of the genqlient-generated helpers will omit the + // `graphql.Context` and they will call this function instead. + // + // Must be the fully-qualified name of a function which accepts a context + // (of the type configured as ContextType (above), which defaults to + // `context.Context`, or a function of no arguments if ContextType is set + // to the empty string) and returns (graphql.Client, error). If the + // client-getter returns an error, the helper will return the error + // without making a query. ClientGetter string `yaml:"client_getter"` // A map from GraphQL type name to Go fully-qualified type name to override diff --git a/generate/generate.go b/generate/generate.go index befd9511..c54f29ce 100644 --- a/generate/generate.go +++ b/generate/generate.go @@ -7,6 +7,7 @@ package generate import ( "bytes" "encoding/json" + "fmt" "go/format" "sort" "strings" @@ -66,7 +67,7 @@ type argument struct { Options *GenqlientDirective } -func newGenerator(config *Config, schema *ast.Schema) *generator { +func newGenerator(config *Config, schema *ast.Schema) (*generator, error) { g := generator{ Config: config, typeMap: map[string]goType{}, @@ -76,20 +77,26 @@ func newGenerator(config *Config, schema *ast.Schema) *generator { schema: schema, } - if g.Config.ClientGetter == "" { - _, err := g.addRef("github.com/Khan/genqlient/graphql.Client") + _, err := g.addRef("github.com/Khan/genqlient/graphql.Client") + if err != nil { + return nil, err + } + + if g.Config.ClientGetter != "" { + _, err := g.addRef(g.Config.ClientGetter) if err != nil { - panic(err) + return nil, fmt.Errorf("invalid client_getter: %w", err) } } + if g.Config.ContextType != "" { _, err := g.addRef(g.Config.ContextType) if err != nil { - panic(err) + return nil, fmt.Errorf("invalid context_type: %w", err) } } - return &g + return &g, nil } func (g *generator) Types() (string, error) { @@ -305,7 +312,11 @@ func Generate(config *Config) (map[string][]byte, error) { // Step 2: For each operation, convert it into data structures representing // Go types (defined in types.go). The bulk of this logic is in // convert.go. - g := newGenerator(config, schema) + g, err := newGenerator(config, schema) + if err != nil { + return nil, err + } + for _, op := range document.Operations { if err = g.addOperation(op); err != nil { return nil, err diff --git a/generate/generate_test.go b/generate/generate_test.go index 9c219153..624540e4 100644 --- a/generate/generate_test.go +++ b/generate/generate_test.go @@ -18,6 +18,36 @@ const ( errorsDir = "testdata/errors" ) +// buildGoFile returns an error if the given Go code is not valid. +// +// namePrefix is used for the temp-file, and is just for debugging. +func buildGoFile(namePrefix string, content []byte) error { + // We need to put this within the current module, rather than in + // /tmp, so that it can access internal/testutil. + f, err := ioutil.TempFile("./testdata/tmp", namePrefix+"_*.go") + if err != nil { + return err + } + defer func() { + f.Close() + os.Remove(f.Name()) + }() + + _, err = f.Write(content) + if err != nil { + return err + } + + cmd := exec.Command("go", "build", f.Name()) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + err = cmd.Run() + if err != nil { + return fmt.Errorf("generated code does not compile: %w", err) + } + return nil +} + // TestGenerate is a snapshot-based test of code-generation. // // This file just has the test runner; the actual data is all in @@ -91,29 +121,102 @@ func TestGenerate(t *testing.T) { "https://github.com/Khan/genqlient/issues/43") } - goContent := generated[goFilename] - // We need to put this within the current module, rather than in - // /tmp, so that it can access internal/testutil. - f, err := ioutil.TempFile("./testdata/tmp", sourceFilename+"_*.go") + err := buildGoFile(sourceFilename, generated[goFilename]) if err != nil { - t.Fatal(err) + t.Error(err) } - defer func() { - f.Close() - os.Remove(f.Name()) - }() + }) + }) + } +} - _, err = f.Write(goContent) - if err != nil { - t.Fatal(err) +// TestGenerateWithConfig tests several configuration options that affect +// generated code but don't require particular query structures to test. +// +// It runs a simple query from TestGenerate with several different genqlient +// configurations. It uses snapshots, just like TestGenerate. +func TestGenerateWithConfig(t *testing.T) { + tests := []struct { + name string + fakeConfigFilename string + config *Config // omits Schema and Operations, set below. + }{ + {"DefaultConfig", "genqlient.yaml", defaultConfig}, + {"Subpackage", "genqlient.yaml", &Config{ + Generated: "mypkg/myfile.go", + ContextType: "context.Context", // (from defaultConfig) + }}, + {"SubpackageConfig", "mypkg/genqlient.yaml", &Config{ + Generated: "myfile.go", // (relative to genqlient.yaml) + ContextType: "context.Context", + }}, + {"PackageName", "genqlient.yaml", &Config{ + Generated: "myfile.go", + Package: "mypkg", + ContextType: "context.Context", + }}, + {"ExportOperations", "genqlient.yaml", &Config{ + Generated: "generated.go", + ExportOperations: "operations.json", + ContextType: "context.Context", + }}, + {"CustomContext", "genqlient.yaml", &Config{ + Generated: "generated.go", + ContextType: "github.com/Khan/genqlient/internal/testutil.MyContext", + }}, + {"NoContext", "genqlient.yaml", &Config{ + Generated: "generated.go", + ContextType: "", + }}, + {"ClientGetter", "genqlient.yaml", &Config{ + Generated: "generated.go", + ClientGetter: "github.com/Khan/genqlient/internal/testutil.GetClientFromContext", + ContextType: "context.Context", + }}, + {"ClientGetterCustomContext", "genqlient.yaml", &Config{ + Generated: "generated.go", + ClientGetter: "github.com/Khan/genqlient/internal/testutil.GetClientFromMyContext", + ContextType: "github.com/Khan/genqlient/internal/testutil.MyContext", + }}, + {"ClientGetterNoContext", "genqlient.yaml", &Config{ + Generated: "generated.go", + ClientGetter: "github.com/Khan/genqlient/internal/testutil.GetClientFromNowhere", + ContextType: "", + }}, + } + + sourceFilename := "SimpleQuery.graphql" + + for _, test := range tests { + config := test.config + t.Run(test.name, func(t *testing.T) { + err := config.ValidateAndFillDefaults( + filepath.Join(dataDir, test.fakeConfigFilename)) + config.Schema = filepath.Join(dataDir, "schema.graphql") + config.Operations = []string{filepath.Join(dataDir, sourceFilename)} + if err != nil { + t.Fatal(err) + } + generated, err := Generate(config) + if err != nil { + t.Fatal(err) + } + + for filename, content := range generated { + t.Run(filename, func(t *testing.T) { + testutil.Cupaloy.SnapshotT(t, string(content)) + }) + } + + t.Run("Build", func(t *testing.T) { + if testing.Short() { + t.Skip("skipping build due to -short") } - cmd := exec.Command("go", "build", f.Name()) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err = cmd.Run() + err := buildGoFile(sourceFilename, + generated[config.Generated]) if err != nil { - t.Fatal(fmt.Errorf("generated code does not compile: %w", err)) + t.Error(err) } }) }) diff --git a/generate/operation.go.tmpl b/generate/operation.go.tmpl index 301e59ad..74f309bc 100644 --- a/generate/operation.go.tmpl +++ b/generate/operation.go.tmpl @@ -43,9 +43,18 @@ func {{.Name}}( } {{end}} {{end}} + {{end -}} + + var err error + {{if $.Config.ClientGetter -}} + client, err := {{ref $.Config.ClientGetter}}({{if $.Config.ContextType}}ctx{{else}}{{end}}) + if err != nil { + return nil, err + } {{end}} + var retval {{.ResponseName}} - err := {{if $.Config.ClientGetter}}{{$.Config.ClientGetter}}{{else}}client{{end}}.MakeRequest( + err = client.MakeRequest( {{if $.Config.ContextType}}ctx{{else}}nil{{end}}, "{{.Name}}", `{{.Body}}`, diff --git a/generate/testdata/snapshots/TestGenerate-ComplexInlineFragments.graphql-ComplexInlineFragments.graphql.go b/generate/testdata/snapshots/TestGenerate-ComplexInlineFragments.graphql-ComplexInlineFragments.graphql.go index 6aa166bd..7ba71379 100644 --- a/generate/testdata/snapshots/TestGenerate-ComplexInlineFragments.graphql-ComplexInlineFragments.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-ComplexInlineFragments.graphql-ComplexInlineFragments.graphql.go @@ -872,8 +872,10 @@ type ComplexInlineFragmentsRootTopic struct { func ComplexInlineFragments( client graphql.Client, ) (*ComplexInlineFragmentsResponse, error) { + var err error + var retval ComplexInlineFragmentsResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "ComplexInlineFragments", ` diff --git a/generate/testdata/snapshots/TestGenerate-DateTime.graphql-DateTime.graphql.go b/generate/testdata/snapshots/TestGenerate-DateTime.graphql-DateTime.graphql.go index b59a0030..66731735 100644 --- a/generate/testdata/snapshots/TestGenerate-DateTime.graphql-DateTime.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-DateTime.graphql-DateTime.graphql.go @@ -23,8 +23,10 @@ func convertTimezone( "tz": tz, } + var err error + var retval convertTimezoneResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "convertTimezone", ` diff --git a/generate/testdata/snapshots/TestGenerate-EmptyInterface.graphql-EmptyInterface.graphql.go b/generate/testdata/snapshots/TestGenerate-EmptyInterface.graphql-EmptyInterface.graphql.go index 0e89acd0..71711859 100644 --- a/generate/testdata/snapshots/TestGenerate-EmptyInterface.graphql-EmptyInterface.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-EmptyInterface.graphql-EmptyInterface.graphql.go @@ -15,8 +15,10 @@ type EmptyInterfaceResponse struct { func EmptyInterface( client graphql.Client, ) (*EmptyInterfaceResponse, error) { + var err error + var retval EmptyInterfaceResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "EmptyInterface", ` diff --git a/generate/testdata/snapshots/TestGenerate-InputEnum.graphql-InputEnum.graphql.go b/generate/testdata/snapshots/TestGenerate-InputEnum.graphql-InputEnum.graphql.go index fc03d808..ba190bcb 100644 --- a/generate/testdata/snapshots/TestGenerate-InputEnum.graphql-InputEnum.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-InputEnum.graphql-InputEnum.graphql.go @@ -46,8 +46,10 @@ func InputEnumQuery( "role": role, } + var err error + var retval InputEnumQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "InputEnumQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-InputObject.graphql-InputObject.graphql.go b/generate/testdata/snapshots/TestGenerate-InputObject.graphql-InputObject.graphql.go index 288650cb..c64eed52 100644 --- a/generate/testdata/snapshots/TestGenerate-InputObject.graphql-InputObject.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-InputObject.graphql-InputObject.graphql.go @@ -64,8 +64,10 @@ func InputObjectQuery( "query": query, } + var err error + var retval InputObjectQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "InputObjectQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-InterfaceListField.graphql-InterfaceListField.graphql.go b/generate/testdata/snapshots/TestGenerate-InterfaceListField.graphql-InterfaceListField.graphql.go index c5619bd8..f42f68ef 100644 --- a/generate/testdata/snapshots/TestGenerate-InterfaceListField.graphql-InterfaceListField.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-InterfaceListField.graphql-InterfaceListField.graphql.go @@ -333,8 +333,10 @@ type InterfaceListFieldWithPointerTopicChildrenVideo struct { func InterfaceListField( client graphql.Client, ) (*InterfaceListFieldResponse, error) { + var err error + var retval InterfaceListFieldResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "InterfaceListField", ` diff --git a/generate/testdata/snapshots/TestGenerate-InterfaceListOfListsOfListsField.graphql-InterfaceListOfListsOfListsField.graphql.go b/generate/testdata/snapshots/TestGenerate-InterfaceListOfListsOfListsField.graphql-InterfaceListOfListsOfListsField.graphql.go index ffcc2371..db660825 100644 --- a/generate/testdata/snapshots/TestGenerate-InterfaceListOfListsOfListsField.graphql-InterfaceListOfListsOfListsField.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-InterfaceListOfListsOfListsField.graphql-InterfaceListOfListsOfListsField.graphql.go @@ -343,8 +343,10 @@ type InterfaceListOfListOfListsFieldWithPointerVideo struct { func InterfaceListOfListOfListsField( client graphql.Client, ) (*InterfaceListOfListOfListsFieldResponse, error) { + var err error + var retval InterfaceListOfListOfListsFieldResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "InterfaceListOfListOfListsField", ` diff --git a/generate/testdata/snapshots/TestGenerate-InterfaceNesting.graphql-InterfaceNesting.graphql.go b/generate/testdata/snapshots/TestGenerate-InterfaceNesting.graphql-InterfaceNesting.graphql.go index e615f03e..e38e2b0b 100644 --- a/generate/testdata/snapshots/TestGenerate-InterfaceNesting.graphql-InterfaceNesting.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-InterfaceNesting.graphql-InterfaceNesting.graphql.go @@ -334,8 +334,10 @@ type InterfaceNestingRootTopicChildrenVideo struct { func InterfaceNesting( client graphql.Client, ) (*InterfaceNestingResponse, error) { + var err error + var retval InterfaceNestingResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "InterfaceNesting", ` diff --git a/generate/testdata/snapshots/TestGenerate-InterfaceNoFragments.graphql-InterfaceNoFragments.graphql.go b/generate/testdata/snapshots/TestGenerate-InterfaceNoFragments.graphql-InterfaceNoFragments.graphql.go index 10b0aa16..aeff4caf 100644 --- a/generate/testdata/snapshots/TestGenerate-InterfaceNoFragments.graphql-InterfaceNoFragments.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-InterfaceNoFragments.graphql-InterfaceNoFragments.graphql.go @@ -430,8 +430,10 @@ type InterfaceNoFragmentsQueryWithPointerVideo struct { func InterfaceNoFragmentsQuery( client graphql.Client, ) (*InterfaceNoFragmentsQueryResponse, error) { + var err error + var retval InterfaceNoFragmentsQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "InterfaceNoFragmentsQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-ListInput.graphql-ListInput.graphql.go b/generate/testdata/snapshots/TestGenerate-ListInput.graphql-ListInput.graphql.go index 917e7fdb..359293e7 100644 --- a/generate/testdata/snapshots/TestGenerate-ListInput.graphql-ListInput.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-ListInput.graphql-ListInput.graphql.go @@ -35,8 +35,10 @@ func ListInputQuery( "names": names, } + var err error + var retval ListInputQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "ListInputQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-ListOfListsOfLists.graphql-ListOfListsOfLists.graphql.go b/generate/testdata/snapshots/TestGenerate-ListOfListsOfLists.graphql-ListOfListsOfLists.graphql.go index f27943e2..bc11f7c0 100644 --- a/generate/testdata/snapshots/TestGenerate-ListOfListsOfLists.graphql-ListOfListsOfLists.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-ListOfListsOfLists.graphql-ListOfListsOfLists.graphql.go @@ -14,8 +14,10 @@ type ListOfListsOfListsResponse struct { func ListOfListsOfLists( client graphql.Client, ) (*ListOfListsOfListsResponse, error) { + var err error + var retval ListOfListsOfListsResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "ListOfListsOfLists", ` diff --git a/generate/testdata/snapshots/TestGenerate-Omitempty.graphql-Omitempty.graphql.go b/generate/testdata/snapshots/TestGenerate-Omitempty.graphql-Omitempty.graphql.go index 4d750cda..cb81b5ed 100644 --- a/generate/testdata/snapshots/TestGenerate-Omitempty.graphql-Omitempty.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-Omitempty.graphql-Omitempty.graphql.go @@ -103,8 +103,10 @@ func OmitEmptyQuery( variables["tz"] = tz } + var err error + var retval OmitEmptyQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "OmitEmptyQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-Pointers.graphql-Pointers.graphql.go b/generate/testdata/snapshots/TestGenerate-Pointers.graphql-Pointers.graphql.go index 0a178846..b6bbe8a5 100644 --- a/generate/testdata/snapshots/TestGenerate-Pointers.graphql-Pointers.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-Pointers.graphql-Pointers.graphql.go @@ -91,8 +91,10 @@ func PointersQuery( "tz": tz, } + var err error + var retval PointersQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "PointersQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-PointersInline.graphql-PointersInline.graphql.go b/generate/testdata/snapshots/TestGenerate-PointersInline.graphql-PointersInline.graphql.go index d3ada1ee..67497e4a 100644 --- a/generate/testdata/snapshots/TestGenerate-PointersInline.graphql-PointersInline.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-PointersInline.graphql-PointersInline.graphql.go @@ -91,8 +91,10 @@ func PointersQuery( "tz": tz, } + var err error + var retval PointersQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "PointersQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-Pokemon.graphql-Pokemon.graphql.go b/generate/testdata/snapshots/TestGenerate-Pokemon.graphql-Pokemon.graphql.go index 4a4796b6..cc7e676e 100644 --- a/generate/testdata/snapshots/TestGenerate-Pokemon.graphql-Pokemon.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-Pokemon.graphql-Pokemon.graphql.go @@ -45,8 +45,10 @@ func GetPokemonSiblings( "input": input, } + var err error + var retval GetPokemonSiblingsResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "GetPokemonSiblings", ` diff --git a/generate/testdata/snapshots/TestGenerate-QueryWithAlias.graphql-QueryWithAlias.graphql.go b/generate/testdata/snapshots/TestGenerate-QueryWithAlias.graphql-QueryWithAlias.graphql.go index 4b3e54f3..4ab9b5cd 100644 --- a/generate/testdata/snapshots/TestGenerate-QueryWithAlias.graphql-QueryWithAlias.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-QueryWithAlias.graphql-QueryWithAlias.graphql.go @@ -34,8 +34,10 @@ type QueryWithAliasUser struct { func QueryWithAlias( client graphql.Client, ) (*QueryWithAliasResponse, error) { + var err error + var retval QueryWithAliasResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "QueryWithAlias", ` diff --git a/generate/testdata/snapshots/TestGenerate-QueryWithDoubleAlias.graphql-QueryWithDoubleAlias.graphql.go b/generate/testdata/snapshots/TestGenerate-QueryWithDoubleAlias.graphql-QueryWithDoubleAlias.graphql.go index 1697b34d..635f5c3a 100644 --- a/generate/testdata/snapshots/TestGenerate-QueryWithDoubleAlias.graphql-QueryWithDoubleAlias.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-QueryWithDoubleAlias.graphql-QueryWithDoubleAlias.graphql.go @@ -34,8 +34,10 @@ type QueryWithDoubleAliasUser struct { func QueryWithDoubleAlias( client graphql.Client, ) (*QueryWithDoubleAliasResponse, error) { + var err error + var retval QueryWithDoubleAliasResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "QueryWithDoubleAlias", ` diff --git a/generate/testdata/snapshots/TestGenerate-QueryWithEnums.graphql-QueryWithEnums.graphql.go b/generate/testdata/snapshots/TestGenerate-QueryWithEnums.graphql-QueryWithEnums.graphql.go index a62b3a9d..d39051e0 100644 --- a/generate/testdata/snapshots/TestGenerate-QueryWithEnums.graphql-QueryWithEnums.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-QueryWithEnums.graphql-QueryWithEnums.graphql.go @@ -53,8 +53,10 @@ const ( func QueryWithEnums( client graphql.Client, ) (*QueryWithEnumsResponse, error) { + var err error + var retval QueryWithEnumsResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "QueryWithEnums", ` diff --git a/generate/testdata/snapshots/TestGenerate-QueryWithSlices.graphql-QueryWithSlices.graphql.go b/generate/testdata/snapshots/TestGenerate-QueryWithSlices.graphql-QueryWithSlices.graphql.go index 9ba2f53b..2eb26e76 100644 --- a/generate/testdata/snapshots/TestGenerate-QueryWithSlices.graphql-QueryWithSlices.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-QueryWithSlices.graphql-QueryWithSlices.graphql.go @@ -29,8 +29,10 @@ type QueryWithSlicesUser struct { func QueryWithSlices( client graphql.Client, ) (*QueryWithSlicesResponse, error) { + var err error + var retval QueryWithSlicesResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "QueryWithSlices", ` diff --git a/generate/testdata/snapshots/TestGenerate-QueryWithStructs.graphql-QueryWithStructs.graphql.go b/generate/testdata/snapshots/TestGenerate-QueryWithStructs.graphql-QueryWithStructs.graphql.go index 0cc5f8d0..54ec5081 100644 --- a/generate/testdata/snapshots/TestGenerate-QueryWithStructs.graphql-QueryWithStructs.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-QueryWithStructs.graphql-QueryWithStructs.graphql.go @@ -32,8 +32,10 @@ type QueryWithStructsUserAuthMethodsAuthMethod struct { func QueryWithStructs( client graphql.Client, ) (*QueryWithStructsResponse, error) { + var err error + var retval QueryWithStructsResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "QueryWithStructs", ` diff --git a/generate/testdata/snapshots/TestGenerate-SimpleInlineFragment.graphql-SimpleInlineFragment.graphql.go b/generate/testdata/snapshots/TestGenerate-SimpleInlineFragment.graphql-SimpleInlineFragment.graphql.go index f9a93995..3afb18fd 100644 --- a/generate/testdata/snapshots/TestGenerate-SimpleInlineFragment.graphql-SimpleInlineFragment.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-SimpleInlineFragment.graphql-SimpleInlineFragment.graphql.go @@ -163,8 +163,10 @@ func (v *SimpleInlineFragmentResponse) UnmarshalJSON(b []byte) error { func SimpleInlineFragment( client graphql.Client, ) (*SimpleInlineFragmentResponse, error) { + var err error + var retval SimpleInlineFragmentResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "SimpleInlineFragment", ` diff --git a/generate/testdata/snapshots/TestGenerate-SimpleInput.graphql-SimpleInput.graphql.go b/generate/testdata/snapshots/TestGenerate-SimpleInput.graphql-SimpleInput.graphql.go index a6e85c2c..d9f3235c 100644 --- a/generate/testdata/snapshots/TestGenerate-SimpleInput.graphql-SimpleInput.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-SimpleInput.graphql-SimpleInput.graphql.go @@ -35,8 +35,10 @@ func SimpleInputQuery( "name": name, } + var err error + var retval SimpleInputQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "SimpleInputQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-SimpleMutation.graphql-SimpleMutation.graphql.go b/generate/testdata/snapshots/TestGenerate-SimpleMutation.graphql-SimpleMutation.graphql.go index 5095d8ca..b6cfc893 100644 --- a/generate/testdata/snapshots/TestGenerate-SimpleMutation.graphql-SimpleMutation.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-SimpleMutation.graphql-SimpleMutation.graphql.go @@ -36,8 +36,10 @@ func SimpleMutation( "name": name, } + var err error + var retval SimpleMutationResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "SimpleMutation", ` diff --git a/generate/testdata/snapshots/TestGenerate-SimpleQuery.graphql-SimpleQuery.graphql.go b/generate/testdata/snapshots/TestGenerate-SimpleQuery.graphql-SimpleQuery.graphql.go index e43cdc7b..8752ed95 100644 --- a/generate/testdata/snapshots/TestGenerate-SimpleQuery.graphql-SimpleQuery.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-SimpleQuery.graphql-SimpleQuery.graphql.go @@ -30,8 +30,10 @@ type SimpleQueryUser struct { func SimpleQuery( client graphql.Client, ) (*SimpleQueryResponse, error) { + var err error + var retval SimpleQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "SimpleQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-TypeName.graphql-TypeName.graphql.go b/generate/testdata/snapshots/TestGenerate-TypeName.graphql-TypeName.graphql.go index 3f9c8639..fcd8ed1c 100644 --- a/generate/testdata/snapshots/TestGenerate-TypeName.graphql-TypeName.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-TypeName.graphql-TypeName.graphql.go @@ -31,8 +31,10 @@ type TypeNameQueryUser struct { func TypeNameQuery( client graphql.Client, ) (*TypeNameQueryResponse, error) { + var err error + var retval TypeNameQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "TypeNameQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-UnionNoFragments.graphql-UnionNoFragments.graphql.go b/generate/testdata/snapshots/TestGenerate-UnionNoFragments.graphql-UnionNoFragments.graphql.go index da7013d4..a31e28ca 100644 --- a/generate/testdata/snapshots/TestGenerate-UnionNoFragments.graphql-UnionNoFragments.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-UnionNoFragments.graphql-UnionNoFragments.graphql.go @@ -111,8 +111,10 @@ func (v *UnionNoFragmentsQueryResponse) UnmarshalJSON(b []byte) error { func UnionNoFragmentsQuery( client graphql.Client, ) (*UnionNoFragmentsQueryResponse, error) { + var err error + var retval UnionNoFragmentsQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "UnionNoFragmentsQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-UsesEnumTwice.graphql-UsesEnumTwice.graphql.go b/generate/testdata/snapshots/TestGenerate-UsesEnumTwice.graphql-UsesEnumTwice.graphql.go index a16c444c..a1784358 100644 --- a/generate/testdata/snapshots/TestGenerate-UsesEnumTwice.graphql-UsesEnumTwice.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-UsesEnumTwice.graphql-UsesEnumTwice.graphql.go @@ -53,8 +53,10 @@ type UsesEnumTwiceQueryResponse struct { func UsesEnumTwiceQuery( client graphql.Client, ) (*UsesEnumTwiceQueryResponse, error) { + var err error + var retval UsesEnumTwiceQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "UsesEnumTwiceQuery", ` diff --git a/generate/testdata/snapshots/TestGenerate-unexported.graphql-unexported.graphql.go b/generate/testdata/snapshots/TestGenerate-unexported.graphql-unexported.graphql.go index dd94a60e..47c0e43d 100644 --- a/generate/testdata/snapshots/TestGenerate-unexported.graphql-unexported.graphql.go +++ b/generate/testdata/snapshots/TestGenerate-unexported.graphql-unexported.graphql.go @@ -64,8 +64,10 @@ func unexported( "query": query, } + var err error + var retval unexportedResponse - err := client.MakeRequest( + err = client.MakeRequest( nil, "unexported", ` diff --git a/generate/testdata/snapshots/TestGenerateWithConfig-ClientGetter-testdata-queries-generated.go b/generate/testdata/snapshots/TestGenerateWithConfig-ClientGetter-testdata-queries-generated.go new file mode 100644 index 00000000..3318a97e --- /dev/null +++ b/generate/testdata/snapshots/TestGenerateWithConfig-ClientGetter-testdata-queries-generated.go @@ -0,0 +1,56 @@ +package queries + +// Code generated by github.com/Khan/genqlient, DO NOT EDIT. + +import ( + "context" + + "github.com/Khan/genqlient/internal/testutil" +) + +// SimpleQueryResponse is returned by SimpleQuery on success. +type SimpleQueryResponse struct { + // user looks up a user by some stuff. + // + // See UserQueryInput for what stuff is supported. + // If query is null, returns the current user. + User SimpleQueryUser `json:"user"` +} + +// SimpleQueryUser includes the requested fields of the GraphQL type User. +// The GraphQL type's documentation follows. +// +// A User is a user! +type SimpleQueryUser struct { + // id is the user's ID. + // + // It is stable, unique, and opaque, like all good IDs. + Id string `json:"id"` +} + +func SimpleQuery( + ctx context.Context, +) (*SimpleQueryResponse, error) { + var err error + client, err := testutil.GetClientFromContext(ctx) + if err != nil { + return nil, err + } + + var retval SimpleQueryResponse + err = client.MakeRequest( + ctx, + "SimpleQuery", + ` +query SimpleQuery { + user { + id + } +} +`, + &retval, + nil, + ) + return &retval, err +} + diff --git a/generate/testdata/snapshots/TestGenerateWithConfig-ClientGetterCustomContext-testdata-queries-generated.go b/generate/testdata/snapshots/TestGenerateWithConfig-ClientGetterCustomContext-testdata-queries-generated.go new file mode 100644 index 00000000..107279c1 --- /dev/null +++ b/generate/testdata/snapshots/TestGenerateWithConfig-ClientGetterCustomContext-testdata-queries-generated.go @@ -0,0 +1,54 @@ +package queries + +// Code generated by github.com/Khan/genqlient, DO NOT EDIT. + +import ( + "github.com/Khan/genqlient/internal/testutil" +) + +// SimpleQueryResponse is returned by SimpleQuery on success. +type SimpleQueryResponse struct { + // user looks up a user by some stuff. + // + // See UserQueryInput for what stuff is supported. + // If query is null, returns the current user. + User SimpleQueryUser `json:"user"` +} + +// SimpleQueryUser includes the requested fields of the GraphQL type User. +// The GraphQL type's documentation follows. +// +// A User is a user! +type SimpleQueryUser struct { + // id is the user's ID. + // + // It is stable, unique, and opaque, like all good IDs. + Id string `json:"id"` +} + +func SimpleQuery( + ctx testutil.MyContext, +) (*SimpleQueryResponse, error) { + var err error + client, err := testutil.GetClientFromMyContext(ctx) + if err != nil { + return nil, err + } + + var retval SimpleQueryResponse + err = client.MakeRequest( + ctx, + "SimpleQuery", + ` +query SimpleQuery { + user { + id + } +} +`, + &retval, + nil, + ) + return &retval, err +} + diff --git a/generate/testdata/snapshots/TestGenerateWithConfig-ClientGetterNoContext-testdata-queries-generated.go b/generate/testdata/snapshots/TestGenerateWithConfig-ClientGetterNoContext-testdata-queries-generated.go new file mode 100644 index 00000000..7f1537d4 --- /dev/null +++ b/generate/testdata/snapshots/TestGenerateWithConfig-ClientGetterNoContext-testdata-queries-generated.go @@ -0,0 +1,52 @@ +package queries + +// Code generated by github.com/Khan/genqlient, DO NOT EDIT. + +import ( + "github.com/Khan/genqlient/internal/testutil" +) + +// SimpleQueryResponse is returned by SimpleQuery on success. +type SimpleQueryResponse struct { + // user looks up a user by some stuff. + // + // See UserQueryInput for what stuff is supported. + // If query is null, returns the current user. + User SimpleQueryUser `json:"user"` +} + +// SimpleQueryUser includes the requested fields of the GraphQL type User. +// The GraphQL type's documentation follows. +// +// A User is a user! +type SimpleQueryUser struct { + // id is the user's ID. + // + // It is stable, unique, and opaque, like all good IDs. + Id string `json:"id"` +} + +func SimpleQuery() (*SimpleQueryResponse, error) { + var err error + client, err := testutil.GetClientFromNowhere() + if err != nil { + return nil, err + } + + var retval SimpleQueryResponse + err = client.MakeRequest( + nil, + "SimpleQuery", + ` +query SimpleQuery { + user { + id + } +} +`, + &retval, + nil, + ) + return &retval, err +} + diff --git a/generate/testdata/snapshots/TestGenerateWithConfig-CustomContext-testdata-queries-generated.go b/generate/testdata/snapshots/TestGenerateWithConfig-CustomContext-testdata-queries-generated.go new file mode 100644 index 00000000..ff9aa398 --- /dev/null +++ b/generate/testdata/snapshots/TestGenerateWithConfig-CustomContext-testdata-queries-generated.go @@ -0,0 +1,52 @@ +package queries + +// Code generated by github.com/Khan/genqlient, DO NOT EDIT. + +import ( + "github.com/Khan/genqlient/graphql" + "github.com/Khan/genqlient/internal/testutil" +) + +// SimpleQueryResponse is returned by SimpleQuery on success. +type SimpleQueryResponse struct { + // user looks up a user by some stuff. + // + // See UserQueryInput for what stuff is supported. + // If query is null, returns the current user. + User SimpleQueryUser `json:"user"` +} + +// SimpleQueryUser includes the requested fields of the GraphQL type User. +// The GraphQL type's documentation follows. +// +// A User is a user! +type SimpleQueryUser struct { + // id is the user's ID. + // + // It is stable, unique, and opaque, like all good IDs. + Id string `json:"id"` +} + +func SimpleQuery( + ctx testutil.MyContext, + client graphql.Client, +) (*SimpleQueryResponse, error) { + var err error + + var retval SimpleQueryResponse + err = client.MakeRequest( + ctx, + "SimpleQuery", + ` +query SimpleQuery { + user { + id + } +} +`, + &retval, + nil, + ) + return &retval, err +} + diff --git a/generate/testdata/snapshots/TestGenerateWithConfig-DefaultConfig-testdata-queries-generated.go b/generate/testdata/snapshots/TestGenerateWithConfig-DefaultConfig-testdata-queries-generated.go new file mode 100644 index 00000000..134780e1 --- /dev/null +++ b/generate/testdata/snapshots/TestGenerateWithConfig-DefaultConfig-testdata-queries-generated.go @@ -0,0 +1,53 @@ +package queries + +// Code generated by github.com/Khan/genqlient, DO NOT EDIT. + +import ( + "context" + + "github.com/Khan/genqlient/graphql" +) + +// SimpleQueryResponse is returned by SimpleQuery on success. +type SimpleQueryResponse struct { + // user looks up a user by some stuff. + // + // See UserQueryInput for what stuff is supported. + // If query is null, returns the current user. + User SimpleQueryUser `json:"user"` +} + +// SimpleQueryUser includes the requested fields of the GraphQL type User. +// The GraphQL type's documentation follows. +// +// A User is a user! +type SimpleQueryUser struct { + // id is the user's ID. + // + // It is stable, unique, and opaque, like all good IDs. + Id string `json:"id"` +} + +func SimpleQuery( + ctx context.Context, + client graphql.Client, +) (*SimpleQueryResponse, error) { + var err error + + var retval SimpleQueryResponse + err = client.MakeRequest( + ctx, + "SimpleQuery", + ` +query SimpleQuery { + user { + id + } +} +`, + &retval, + nil, + ) + return &retval, err +} + diff --git a/generate/testdata/snapshots/TestGenerateWithConfig-ExportOperations-testdata-queries-generated.go b/generate/testdata/snapshots/TestGenerateWithConfig-ExportOperations-testdata-queries-generated.go new file mode 100644 index 00000000..134780e1 --- /dev/null +++ b/generate/testdata/snapshots/TestGenerateWithConfig-ExportOperations-testdata-queries-generated.go @@ -0,0 +1,53 @@ +package queries + +// Code generated by github.com/Khan/genqlient, DO NOT EDIT. + +import ( + "context" + + "github.com/Khan/genqlient/graphql" +) + +// SimpleQueryResponse is returned by SimpleQuery on success. +type SimpleQueryResponse struct { + // user looks up a user by some stuff. + // + // See UserQueryInput for what stuff is supported. + // If query is null, returns the current user. + User SimpleQueryUser `json:"user"` +} + +// SimpleQueryUser includes the requested fields of the GraphQL type User. +// The GraphQL type's documentation follows. +// +// A User is a user! +type SimpleQueryUser struct { + // id is the user's ID. + // + // It is stable, unique, and opaque, like all good IDs. + Id string `json:"id"` +} + +func SimpleQuery( + ctx context.Context, + client graphql.Client, +) (*SimpleQueryResponse, error) { + var err error + + var retval SimpleQueryResponse + err = client.MakeRequest( + ctx, + "SimpleQuery", + ` +query SimpleQuery { + user { + id + } +} +`, + &retval, + nil, + ) + return &retval, err +} + diff --git a/generate/testdata/snapshots/TestGenerateWithConfig-ExportOperations-testdata-queries-operations.json b/generate/testdata/snapshots/TestGenerateWithConfig-ExportOperations-testdata-queries-operations.json new file mode 100644 index 00000000..36622f08 --- /dev/null +++ b/generate/testdata/snapshots/TestGenerateWithConfig-ExportOperations-testdata-queries-operations.json @@ -0,0 +1,9 @@ +{ + "operations": [ + { + "operationName": "SimpleQuery", + "query": "\nquery SimpleQuery {\n\tuser {\n\t\tid\n\t}\n}\n", + "sourceLocation": "SimpleQuery.graphql" + } + ] +} diff --git a/generate/testdata/snapshots/TestGenerateWithConfig-NoContext-testdata-queries-generated.go b/generate/testdata/snapshots/TestGenerateWithConfig-NoContext-testdata-queries-generated.go new file mode 100644 index 00000000..48e31811 --- /dev/null +++ b/generate/testdata/snapshots/TestGenerateWithConfig-NoContext-testdata-queries-generated.go @@ -0,0 +1,50 @@ +package queries + +// Code generated by github.com/Khan/genqlient, DO NOT EDIT. + +import ( + "github.com/Khan/genqlient/graphql" +) + +// SimpleQueryResponse is returned by SimpleQuery on success. +type SimpleQueryResponse struct { + // user looks up a user by some stuff. + // + // See UserQueryInput for what stuff is supported. + // If query is null, returns the current user. + User SimpleQueryUser `json:"user"` +} + +// SimpleQueryUser includes the requested fields of the GraphQL type User. +// The GraphQL type's documentation follows. +// +// A User is a user! +type SimpleQueryUser struct { + // id is the user's ID. + // + // It is stable, unique, and opaque, like all good IDs. + Id string `json:"id"` +} + +func SimpleQuery( + client graphql.Client, +) (*SimpleQueryResponse, error) { + var err error + + var retval SimpleQueryResponse + err = client.MakeRequest( + nil, + "SimpleQuery", + ` +query SimpleQuery { + user { + id + } +} +`, + &retval, + nil, + ) + return &retval, err +} + diff --git a/generate/testdata/snapshots/TestGenerateWithConfig-PackageName-testdata-queries-myfile.go b/generate/testdata/snapshots/TestGenerateWithConfig-PackageName-testdata-queries-myfile.go new file mode 100644 index 00000000..945f1398 --- /dev/null +++ b/generate/testdata/snapshots/TestGenerateWithConfig-PackageName-testdata-queries-myfile.go @@ -0,0 +1,53 @@ +package mypkg + +// Code generated by github.com/Khan/genqlient, DO NOT EDIT. + +import ( + "context" + + "github.com/Khan/genqlient/graphql" +) + +// SimpleQueryResponse is returned by SimpleQuery on success. +type SimpleQueryResponse struct { + // user looks up a user by some stuff. + // + // See UserQueryInput for what stuff is supported. + // If query is null, returns the current user. + User SimpleQueryUser `json:"user"` +} + +// SimpleQueryUser includes the requested fields of the GraphQL type User. +// The GraphQL type's documentation follows. +// +// A User is a user! +type SimpleQueryUser struct { + // id is the user's ID. + // + // It is stable, unique, and opaque, like all good IDs. + Id string `json:"id"` +} + +func SimpleQuery( + ctx context.Context, + client graphql.Client, +) (*SimpleQueryResponse, error) { + var err error + + var retval SimpleQueryResponse + err = client.MakeRequest( + ctx, + "SimpleQuery", + ` +query SimpleQuery { + user { + id + } +} +`, + &retval, + nil, + ) + return &retval, err +} + diff --git a/generate/testdata/snapshots/TestGenerateWithConfig-Subpackage-testdata-queries-mypkg-myfile.go b/generate/testdata/snapshots/TestGenerateWithConfig-Subpackage-testdata-queries-mypkg-myfile.go new file mode 100644 index 00000000..945f1398 --- /dev/null +++ b/generate/testdata/snapshots/TestGenerateWithConfig-Subpackage-testdata-queries-mypkg-myfile.go @@ -0,0 +1,53 @@ +package mypkg + +// Code generated by github.com/Khan/genqlient, DO NOT EDIT. + +import ( + "context" + + "github.com/Khan/genqlient/graphql" +) + +// SimpleQueryResponse is returned by SimpleQuery on success. +type SimpleQueryResponse struct { + // user looks up a user by some stuff. + // + // See UserQueryInput for what stuff is supported. + // If query is null, returns the current user. + User SimpleQueryUser `json:"user"` +} + +// SimpleQueryUser includes the requested fields of the GraphQL type User. +// The GraphQL type's documentation follows. +// +// A User is a user! +type SimpleQueryUser struct { + // id is the user's ID. + // + // It is stable, unique, and opaque, like all good IDs. + Id string `json:"id"` +} + +func SimpleQuery( + ctx context.Context, + client graphql.Client, +) (*SimpleQueryResponse, error) { + var err error + + var retval SimpleQueryResponse + err = client.MakeRequest( + ctx, + "SimpleQuery", + ` +query SimpleQuery { + user { + id + } +} +`, + &retval, + nil, + ) + return &retval, err +} + diff --git a/generate/testdata/snapshots/TestGenerateWithConfig-SubpackageConfig-testdata-queries-mypkg-myfile.go b/generate/testdata/snapshots/TestGenerateWithConfig-SubpackageConfig-testdata-queries-mypkg-myfile.go new file mode 100644 index 00000000..945f1398 --- /dev/null +++ b/generate/testdata/snapshots/TestGenerateWithConfig-SubpackageConfig-testdata-queries-mypkg-myfile.go @@ -0,0 +1,53 @@ +package mypkg + +// Code generated by github.com/Khan/genqlient, DO NOT EDIT. + +import ( + "context" + + "github.com/Khan/genqlient/graphql" +) + +// SimpleQueryResponse is returned by SimpleQuery on success. +type SimpleQueryResponse struct { + // user looks up a user by some stuff. + // + // See UserQueryInput for what stuff is supported. + // If query is null, returns the current user. + User SimpleQueryUser `json:"user"` +} + +// SimpleQueryUser includes the requested fields of the GraphQL type User. +// The GraphQL type's documentation follows. +// +// A User is a user! +type SimpleQueryUser struct { + // id is the user's ID. + // + // It is stable, unique, and opaque, like all good IDs. + Id string `json:"id"` +} + +func SimpleQuery( + ctx context.Context, + client graphql.Client, +) (*SimpleQueryResponse, error) { + var err error + + var retval SimpleQueryResponse + err = client.MakeRequest( + ctx, + "SimpleQuery", + ` +query SimpleQuery { + user { + id + } +} +`, + &retval, + nil, + ) + return &retval, err +} + diff --git a/internal/integration/generated.go b/internal/integration/generated.go index a80fe006..bbc3b731 100644 --- a/internal/integration/generated.go +++ b/internal/integration/generated.go @@ -675,8 +675,10 @@ func simpleQuery( ctx context.Context, client graphql.Client, ) (*simpleQueryResponse, error) { + var err error + var retval simpleQueryResponse - err := client.MakeRequest( + err = client.MakeRequest( ctx, "simpleQuery", ` @@ -703,8 +705,10 @@ func queryWithVariables( "id": id, } + var err error + var retval queryWithVariablesResponse - err := client.MakeRequest( + err = client.MakeRequest( ctx, "queryWithVariables", ` @@ -731,8 +735,10 @@ func queryWithInterfaceNoFragments( "id": id, } + var err error + var retval queryWithInterfaceNoFragmentsResponse - err := client.MakeRequest( + err = client.MakeRequest( ctx, "queryWithInterfaceNoFragments", ` @@ -763,8 +769,10 @@ func queryWithInterfaceListField( "ids": ids, } + var err error + var retval queryWithInterfaceListFieldResponse - err := client.MakeRequest( + err = client.MakeRequest( ctx, "queryWithInterfaceListField", ` @@ -791,8 +799,10 @@ func queryWithInterfaceListPointerField( "ids": ids, } + var err error + var retval queryWithInterfaceListPointerFieldResponse - err := client.MakeRequest( + err = client.MakeRequest( ctx, "queryWithInterfaceListPointerField", ` @@ -819,8 +829,10 @@ func queryWithFragments( "ids": ids, } + var err error + var retval queryWithFragmentsResponse - err := client.MakeRequest( + err = client.MakeRequest( ctx, "queryWithFragments", ` diff --git a/internal/testutil/types.go b/internal/testutil/types.go index d5d54465..a4b44d31 100644 --- a/internal/testutil/types.go +++ b/internal/testutil/types.go @@ -1,5 +1,11 @@ package testutil +import ( + "context" + + "github.com/Khan/genqlient/graphql" +) + type ID string type Pokemon struct { @@ -10,3 +16,13 @@ type Pokemon struct { func (p Pokemon) Battle(q Pokemon) bool { return p.Level > q.Level } + +type MyContext interface { + context.Context + + MyMethod() +} + +func GetClientFromNowhere() (graphql.Client, error) { return nil, nil } +func GetClientFromContext(ctx context.Context) (graphql.Client, error) { return nil, nil } +func GetClientFromMyContext(ctx MyContext) (graphql.Client, error) { return nil, nil }