From 6404ba0e588b130aaef3634584fd700912b3c668 Mon Sep 17 00:00:00 2001 From: Ben Kraft Date: Mon, 5 Apr 2021 17:40:04 -0700 Subject: [PATCH] fix error message when a go string-query fails to parse --- generate/parse.go | 2 +- generate/parse_test.go | 23 ++++++++++++++++++- generate/testdata/parsing-errors/fragments.go | 7 ++++++ .../testdata/parsing-errors/fragments.graphql | 3 +++ 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 generate/testdata/parsing-errors/fragments.go create mode 100644 generate/testdata/parsing-errors/fragments.graphql diff --git a/generate/parse.go b/generate/parse.go index 4afe284..09a6774 100644 --- a/generate/parse.go +++ b/generate/parse.go @@ -138,7 +138,7 @@ func getQueriesFromGo(text string, basedir, filename string) ([]*ast.QueryDocume } var value string - value, err := strconv.Unquote(basicLit.Value) + value, err = strconv.Unquote(basicLit.Value) if err != nil { return false } diff --git a/generate/parse_test.go b/generate/parse_test.go index 62387d3..eb040bd 100644 --- a/generate/parse_test.go +++ b/generate/parse_test.go @@ -8,7 +8,10 @@ import ( "github.com/vektah/gqlparser/v2/ast" ) -var parseDataDir = "testdata/parsing" +var ( + parseDataDir = "testdata/parsing" + parseErrorsDir = "testdata/parsing-errors" +) func sortQueries(queryDoc *ast.QueryDocument) { sort.Slice(queryDoc.Operations, func(i, j int) bool { @@ -61,3 +64,21 @@ func TestParse(t *testing.T) { }) } } + +// TestParseErrors tests that query-extraction from different language source files +// produces appropriate errors if your query is invalid. +func TestParseErrors(t *testing.T) { + extensions := []string{"graphql", "go"} + + for _, ext := range extensions { + t.Run(ext, func(t *testing.T) { + g, err := getQueries( + parseErrorsDir, + []string{filepath.Join(parseErrorsDir, "*."+ext)}) + if err == nil { + t.Errorf("expected error from getQueries(*.%v)", ext) + t.Logf("%#v", g) + } + }) + } +} diff --git a/generate/testdata/parsing-errors/fragments.go b/generate/testdata/parsing-errors/fragments.go new file mode 100644 index 0000000..2b42e45 --- /dev/null +++ b/generate/testdata/parsing-errors/fragments.go @@ -0,0 +1,7 @@ +package parsing_errors + +var _ = `# @genqlient + query myBadQuery(varMissingDollar: String) { + field(arg: $varMissingDollar) + } +` diff --git a/generate/testdata/parsing-errors/fragments.graphql b/generate/testdata/parsing-errors/fragments.graphql new file mode 100644 index 0000000..88f3df9 --- /dev/null +++ b/generate/testdata/parsing-errors/fragments.graphql @@ -0,0 +1,3 @@ +query myBadQuery(varMissingDollar: String) { + field(arg: $varMissingDollar) +}