Add some more tests for config validation, and fix some gaps (#274)

I set these tests up in #270, but I realized there's a lot more we could
test unrelated to that PR. In this commit I add some more tests. They're
not really exhaustive yet, but they did catch a few bugs, which I fixed:
- we weren't validating the package-name if you do set it (only if we
guess it)
- If you omitted `generated`, you would try to write generated code to
the directory containing `genqlient.yaml`, which makes no sense; now we
default to `generated.go`. In the real world it's probably good to set
explicitly, but it's actually very convenient in tests that we don't
have to, and maybe in small projects too.
This commit is contained in:
Ben Kraft
2023-05-07 17:52:08 -07:00
committed by GitHub
parent ff790e1c06
commit 65d934a705
18 changed files with 141 additions and 30 deletions
+1
View File
@@ -1,3 +1,4 @@
package: invalidConfig
casing:
enums:
MyType: bogus
+2
View File
@@ -0,0 +1,2 @@
package: invalidConfig
optional: bogus
+1
View File
@@ -0,0 +1 @@
package: bogus-package-name
@@ -1,6 +1,6 @@
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
package testdata
package queries
import (
"context"
@@ -0,0 +1,3 @@
invalid config file testdata/invalid-config/CantGuessPackage.yaml: unable to guess package-name: 'invalid-config' is not a valid identifier
Set package name in genqlient.yaml
Example: https://github.com/Khan/genqlient/blob/main/example/genqlient.yaml#L6
@@ -0,0 +1 @@
invalid config file testdata/invalid-config/InvalidOptional.yaml: optional must be one of: 'value' (default), 'pointer', or 'generic'
@@ -0,0 +1 @@
invalid config file testdata/invalid-config/InvalidPackage.yaml: invalid package in genqlient.yaml: 'bogus-package-name' is not a valid identifier
+27
View File
@@ -0,0 +1,27 @@
(*generate.Config)({
Schema: (generate.StringList) (len=2) {
(string) (len=42) "testdata/valid-config/first_schema.graphql",
(string) (len=43) "testdata/valid-config/second_schema.graphql"
},
Operations: (generate.StringList) (len=2) {
(string) (len=46) "testdata/valid-config/first_operations.graphql",
(string) (len=47) "testdata/valid-config/second_operations.graphql"
},
Generated: (string) (len=34) "testdata/valid-config/generated.go",
Package: (string) (len=11) "validConfig",
ExportOperations: (string) "",
ContextType: (string) (len=15) "context.Context",
ClientGetter: (string) "",
Bindings: (map[string]*generate.TypeBinding) <nil>,
PackageBindings: ([]*generate.PackageBinding) <nil>,
Casing: (generate.Casing) {
AllEnums: (generate.CasingAlgorithm) "",
Enums: (map[string]generate.CasingAlgorithm) <nil>
},
Optional: (string) "",
OptionalGenericType: (string) "",
StructReferences: (bool) false,
Extensions: (bool) false,
AllowBrokenFeatures: (bool) false,
baseDir: (string) (len=21) "testdata/valid-config"
})
@@ -0,0 +1,21 @@
(*generate.Config)({
Schema: (generate.StringList) <nil>,
Operations: (generate.StringList) <nil>,
Generated: (string) (len=34) "testdata/valid-config/generated.go",
Package: (string) (len=11) "validConfig",
ExportOperations: (string) "",
ContextType: (string) (len=15) "context.Context",
ClientGetter: (string) "",
Bindings: (map[string]*generate.TypeBinding) <nil>,
PackageBindings: ([]*generate.PackageBinding) <nil>,
Casing: (generate.Casing) {
AllEnums: (generate.CasingAlgorithm) "",
Enums: (map[string]generate.CasingAlgorithm) <nil>
},
Optional: (string) "",
OptionalGenericType: (string) "",
StructReferences: (bool) false,
Extensions: (bool) false,
AllowBrokenFeatures: (bool) false,
baseDir: (string) (len=21) "testdata/valid-config"
})
@@ -0,0 +1,25 @@
(*generate.Config)({
Schema: (generate.StringList) (len=1) {
(string) (len=36) "testdata/valid-config/schema.graphql"
},
Operations: (generate.StringList) (len=1) {
(string) (len=40) "testdata/valid-config/operations.graphql"
},
Generated: (string) (len=34) "testdata/valid-config/generated.go",
Package: (string) (len=11) "validConfig",
ExportOperations: (string) "",
ContextType: (string) (len=15) "context.Context",
ClientGetter: (string) "",
Bindings: (map[string]*generate.TypeBinding) <nil>,
PackageBindings: ([]*generate.PackageBinding) <nil>,
Casing: (generate.Casing) {
AllEnums: (generate.CasingAlgorithm) "",
Enums: (map[string]generate.CasingAlgorithm) <nil>
},
Optional: (string) "",
OptionalGenericType: (string) "",
StructReferences: (bool) false,
Extensions: (bool) false,
AllowBrokenFeatures: (bool) false,
baseDir: (string) (len=21) "testdata/valid-config"
})
+9
View File
@@ -0,0 +1,9 @@
schema:
- first_schema.graphql
- second_schema.graphql
operations:
- first_operations.graphql
- second_operations.graphql
package: validConfig
+1
View File
@@ -0,0 +1 @@
package: validConfig
+3
View File
@@ -0,0 +1,3 @@
schema: schema.graphql
operations: operations.graphql
package: validConfig