From 9074926cea2d5288cf6051bc26f22e5870395dc3 Mon Sep 17 00:00:00 2001 From: Ben Kraft Date: Fri, 27 Mar 2020 15:57:22 -0700 Subject: [PATCH] Set up a test --- example/README.md | 2 +- example/generated.go | 3 ++- generate/example_test.go | 39 ++++++++++++++++++++++++++++++++++++++ generate/generate.go | 13 +++++++++++-- generate/main.go | 16 +++------------- generate/operation.go.tmpl | 3 ++- 6 files changed, 58 insertions(+), 18 deletions(-) create mode 100644 generate/example_test.go diff --git a/example/README.md b/example/README.md index 3de5a22..00b99d3 100644 --- a/example/README.md +++ b/example/README.md @@ -8,7 +8,7 @@ Get a token from [GitHub](https://github.com/settings/tokens/new) (no scopes nee To run the example: ```sh -$ KEY= go run ./cmd/example/main.go +$ GITHUB_TOKEN= go run ./cmd/example/main.go you are Ben Kraft csilvers is Craig Silverstein ``` diff --git a/example/generated.go b/example/generated.go index 9655469..3bbd2e9 100644 --- a/example/generated.go +++ b/example/generated.go @@ -1,6 +1,7 @@ -// Code generated by github.com/Khan/genql, DO NOT EDIT. package example +// Code generated by github.com/Khan/genql, DO NOT EDIT. + import ( "context" diff --git a/generate/example_test.go b/generate/example_test.go new file mode 100644 index 0000000..1976a31 --- /dev/null +++ b/generate/example_test.go @@ -0,0 +1,39 @@ +package generate + +import ( + "bytes" + "io/ioutil" + "path/filepath" + "runtime" + "testing" +) + +func TestGenerateExample(t *testing.T) { + _, thisFile, _, ok := runtime.Caller(0) + if !ok { + t.Fatal("runtime.Caller non-ok") + } + + repoRoot := filepath.Dir(filepath.Dir(thisFile)) + configFilename := filepath.Join(repoRoot, "example/genql.yaml") + config, err := ReadAndValidateConfig(configFilename) + if err != nil { + t.Fatal(err) + } + + code, err := Generate(config) + if err != nil { + t.Fatal(err) + } + + expectedCode, err := ioutil.ReadFile(config.Generated) + if err != nil { + t.Fatal(err) + } + + if !bytes.Equal(code, expectedCode) { + t.Errorf( + "diffs to generated code:\n---actual---\n%v\n---expected---\n%v", + string(code), string(expectedCode)) + } +} diff --git a/generate/generate.go b/generate/generate.go index ffe88c5..407818f 100644 --- a/generate/generate.go +++ b/generate/generate.go @@ -99,8 +99,17 @@ func fromASTOperation(op *ast.OperationDefinition, schema *ast.Schema) (operatio }, nil } -func Generate(schema *ast.Schema, document *ast.QueryDocument) ([]byte, error) { - var err error +func Generate(config *Config) ([]byte, error) { + schema, err := getSchema(config.Schema) + if err != nil { + return nil, err + } + + document, err := getAndValidateQueries(config.Queries, schema) + if err != nil { + return nil, err + } + operations := make([]operation, len(document.Operations)) for i, op := range document.Operations { operations[i], err = fromASTOperation(op, schema) diff --git a/generate/main.go b/generate/main.go index 554a788..67f2566 100644 --- a/generate/main.go +++ b/generate/main.go @@ -5,7 +5,7 @@ import ( "os" ) -func parseGenerateAndWrite(configFilename string) error { +func readConfigGenerateAndWrite(configFilename string) error { config, err := ReadAndValidateConfig(configFilename) if err != nil { return err @@ -17,17 +17,7 @@ func parseGenerateAndWrite(configFilename string) error { config.Generated, err) } - schema, err := getSchema(config.Schema) - if err != nil { - return err - } - - document, err := getAndValidateQueries(config.Queries, schema) - if err != nil { - return err - } - - code, err := Generate(schema, document) + code, err := Generate(config) if err != nil { return err } @@ -51,5 +41,5 @@ func Main() { return } - err = parseGenerateAndWrite(os.Args[1]) + err = readConfigGenerateAndWrite(os.Args[1]) } diff --git a/generate/operation.go.tmpl b/generate/operation.go.tmpl index 6552140..1a46a13 100644 --- a/generate/operation.go.tmpl +++ b/generate/operation.go.tmpl @@ -1,6 +1,7 @@ -// Code generated by github.com/Khan/genql, DO NOT EDIT. package {{.PackageName}} +// Code generated by github.com/Khan/genql, DO NOT EDIT. + import ( "context"