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) +}