-
Notifications
You must be signed in to change notification settings - Fork 114
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add an option to handle enums with ugly casing #270
Conversation
There are a bunch of places in genqlient where we just kind of hope you don't have ridiculous casing conflicts in your schema. Apparently with enum values there are actual schemas that have this problem! Now we have an option to disable. I ended up putting it all under `casing` instead of in `bindings` so we can clearly document the list of algorithms we support, and so we can have an `all_enums` value if you're working with a schema with a lot of this; in the future we may want to add similar behavior for types/fields, add more possible algorithms (e.g. to make things unexported), etc. I added tests for the new feature, although the way the tests are set up it wasn't convenient to do so for a schema where this is actually required. I also added a check for case conflicts that points you to this option. (I don't want to do it automatically for reasons described in the issue; mainly it just seemed a bit too magical.) Fixes #265.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Whew! A lot of machinery (and testing!) for a fairly contained change. But it all looks right to me.
I take it you're reserving the option to control casing for other things besides enums in the future, but don't feel the need to implement that yet.
generate/convert.go
Outdated
@@ -516,8 +516,23 @@ func (g *generator) convertDefinition( | |||
Description: def.Description, | |||
Values: make([]goEnumValue, len(def.EnumValues)), | |||
} | |||
goNames := map[string]*goEnumValue{} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm sure it doesn't matter, but maybe make(map[string]*goEnumValue, len(def.EnumValues))
?
@@ -143,8 +144,7 @@ func (typ *goEnumType) WriteDefinition(w io.Writer, g *generator) error { | |||
for _, val := range typ.Values { | |||
writeDescription(w, val.Description) | |||
fmt.Fprintf(w, "%s %s = \"%s\"\n", | |||
typ.GoName+goConstName(val.Name), | |||
typ.GoName, val.Name) | |||
val.GoName, typ.GoName, val.GraphQLName) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here's where all that machinery pays off!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
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.
By chance will this feature be released soon? Oh I guess I can use |
Yep, we usually let new features bake a bit before we cut a release in case folks run into bugs in the real world that aren't covered in our tests, but if you want them right away then you can just use the main branch! |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [github.com/Khan/genqlient](https://togithub.com/Khan/genqlient) | `v0.6.0` -> `v0.7.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>Khan/genqlient (github.com/Khan/genqlient)</summary> ### [`v0.7.0`](https://togithub.com/Khan/genqlient/releases/tag/v0.7.0) [Compare Source](https://togithub.com/Khan/genqlient/compare/v0.6.0...v0.7.0) In addition to several new features and bugfixes, along with this release comes reorganized [documentation](https://togithub.com/Khan/genqlient/blob/main/docs) for genqlient. Note that genqlient now requires Go 1.20 or higher, and is tested through Go 1.22. #### What's Changed - Add "generic" option to the "optional" configuration for handling nullable types by [@​DylanRJohnston](https://togithub.com/DylanRJohnston) in [https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252) - Documentation tweaks relating to releases by [@​benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/271](https://togithub.com/Khan/genqlient/pull/271) - Add some better tests for use_struct_references by [@​benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/273](https://togithub.com/Khan/genqlient/pull/273) - Add an option to handle enums with ugly casing by [@​benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/270](https://togithub.com/Khan/genqlient/pull/270) - Add some more tests for config validation, and fix some gaps by [@​benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/274](https://togithub.com/Khan/genqlient/pull/274) - Add consideration for pointer false directive when optional: pointer configuration option is used by [@​spencermurray](https://togithub.com/spencermurray) in [https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280) - Update gqlparser and gqlgen dependencies by [@​StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/282](https://togithub.com/Khan/genqlient/pull/282) - Update gqlparser to omit comments by [@​StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/284](https://togithub.com/Khan/genqlient/pull/284) - bugfix: local variable 'data' colliding with argument name by [@​zholti](https://togithub.com/zholti) in [https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291) - Pin lint workflow's Go version by [@​benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/311](https://togithub.com/Khan/genqlient/pull/311) - Upgrade golangci-lint and which go we run it with by [@​benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/314](https://togithub.com/Khan/genqlient/pull/314) - fix implementation type generation for fragment on a union by [@​zzh8829](https://togithub.com/zzh8829) in [https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310) - Support more valid graphql file extensions by [@​zzh8829](https://togithub.com/zzh8829) in [https://github.com/Khan/genqlient/pull/309](https://togithub.com/Khan/genqlient/pull/309) - Add tests on Go 1.22, and upgrade x/tools to make them work by [@​benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/315](https://togithub.com/Khan/genqlient/pull/315) - Update gqlgen to latest by [@​StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/317](https://togithub.com/Khan/genqlient/pull/317) - move genqlient Go module to 1.20 by [@​StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/318](https://togithub.com/Khan/genqlient/pull/318) - Improve package-sniffing and bind correctly to types in the same package by [@​benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/316](https://togithub.com/Khan/genqlient/pull/316) - Reorganize and improve documentation by [@​benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/322](https://togithub.com/Khan/genqlient/pull/322) - Fix non-deterministic generated code involving interfaces and fragments. by [@​csilvers](https://togithub.com/csilvers) in [https://github.com/Khan/genqlient/pull/323](https://togithub.com/Khan/genqlient/pull/323) - Release v0.7.0 by [@​benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/324](https://togithub.com/Khan/genqlient/pull/324) #### New Contributors - [@​DylanRJohnston](https://togithub.com/DylanRJohnston) made their first contribution in [https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252) - [@​spencermurray](https://togithub.com/spencermurray) made their first contribution in [https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280) - [@​zholti](https://togithub.com/zholti) made their first contribution in [https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291) - [@​zzh8829](https://togithub.com/zzh8829) made their first contribution in [https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310) **Full Changelog**: Khan/genqlient@v0.6.0...v0.7.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: opentelemetrybot <[email protected]> Co-authored-by: Andrzej Stencel <[email protected]>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [github.com/Khan/genqlient](https://togithub.com/Khan/genqlient) | `v0.6.0` -> `v0.7.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>Khan/genqlient (github.com/Khan/genqlient)</summary> ### [`v0.7.0`](https://togithub.com/Khan/genqlient/releases/tag/v0.7.0) [Compare Source](https://togithub.com/Khan/genqlient/compare/v0.6.0...v0.7.0) In addition to several new features and bugfixes, along with this release comes reorganized [documentation](https://togithub.com/Khan/genqlient/blob/main/docs) for genqlient. Note that genqlient now requires Go 1.20 or higher, and is tested through Go 1.22. #### What's Changed - Add "generic" option to the "optional" configuration for handling nullable types by [@&open-telemetry#8203;DylanRJohnston](https://togithub.com/DylanRJohnston) in [https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252) - Documentation tweaks relating to releases by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/271](https://togithub.com/Khan/genqlient/pull/271) - Add some better tests for use_struct_references by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/273](https://togithub.com/Khan/genqlient/pull/273) - Add an option to handle enums with ugly casing by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/270](https://togithub.com/Khan/genqlient/pull/270) - Add some more tests for config validation, and fix some gaps by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/274](https://togithub.com/Khan/genqlient/pull/274) - Add consideration for pointer false directive when optional: pointer configuration option is used by [@&open-telemetry#8203;spencermurray](https://togithub.com/spencermurray) in [https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280) - Update gqlparser and gqlgen dependencies by [@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/282](https://togithub.com/Khan/genqlient/pull/282) - Update gqlparser to omit comments by [@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/284](https://togithub.com/Khan/genqlient/pull/284) - bugfix: local variable 'data' colliding with argument name by [@&open-telemetry#8203;zholti](https://togithub.com/zholti) in [https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291) - Pin lint workflow's Go version by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/311](https://togithub.com/Khan/genqlient/pull/311) - Upgrade golangci-lint and which go we run it with by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/314](https://togithub.com/Khan/genqlient/pull/314) - fix implementation type generation for fragment on a union by [@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) in [https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310) - Support more valid graphql file extensions by [@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) in [https://github.com/Khan/genqlient/pull/309](https://togithub.com/Khan/genqlient/pull/309) - Add tests on Go 1.22, and upgrade x/tools to make them work by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/315](https://togithub.com/Khan/genqlient/pull/315) - Update gqlgen to latest by [@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/317](https://togithub.com/Khan/genqlient/pull/317) - move genqlient Go module to 1.20 by [@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/318](https://togithub.com/Khan/genqlient/pull/318) - Improve package-sniffing and bind correctly to types in the same package by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/316](https://togithub.com/Khan/genqlient/pull/316) - Reorganize and improve documentation by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/322](https://togithub.com/Khan/genqlient/pull/322) - Fix non-deterministic generated code involving interfaces and fragments. by [@&open-telemetry#8203;csilvers](https://togithub.com/csilvers) in [https://github.com/Khan/genqlient/pull/323](https://togithub.com/Khan/genqlient/pull/323) - Release v0.7.0 by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/324](https://togithub.com/Khan/genqlient/pull/324) #### New Contributors - [@&open-telemetry#8203;DylanRJohnston](https://togithub.com/DylanRJohnston) made their first contribution in [https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252) - [@&open-telemetry#8203;spencermurray](https://togithub.com/spencermurray) made their first contribution in [https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280) - [@&open-telemetry#8203;zholti](https://togithub.com/zholti) made their first contribution in [https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291) - [@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) made their first contribution in [https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310) **Full Changelog**: Khan/genqlient@v0.6.0...v0.7.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: opentelemetrybot <[email protected]> Co-authored-by: Andrzej Stencel <[email protected]>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [github.com/Khan/genqlient](https://togithub.com/Khan/genqlient) | `v0.6.0` -> `v0.7.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fKhan%2fgenqlient/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fKhan%2fgenqlient/v0.6.0/v0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>Khan/genqlient (github.com/Khan/genqlient)</summary> ### [`v0.7.0`](https://togithub.com/Khan/genqlient/releases/tag/v0.7.0) [Compare Source](https://togithub.com/Khan/genqlient/compare/v0.6.0...v0.7.0) In addition to several new features and bugfixes, along with this release comes reorganized [documentation](https://togithub.com/Khan/genqlient/blob/main/docs) for genqlient. Note that genqlient now requires Go 1.20 or higher, and is tested through Go 1.22. #### What's Changed - Add "generic" option to the "optional" configuration for handling nullable types by [@&open-telemetry#8203;DylanRJohnston](https://togithub.com/DylanRJohnston) in [https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252) - Documentation tweaks relating to releases by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/271](https://togithub.com/Khan/genqlient/pull/271) - Add some better tests for use_struct_references by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/273](https://togithub.com/Khan/genqlient/pull/273) - Add an option to handle enums with ugly casing by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/270](https://togithub.com/Khan/genqlient/pull/270) - Add some more tests for config validation, and fix some gaps by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/274](https://togithub.com/Khan/genqlient/pull/274) - Add consideration for pointer false directive when optional: pointer configuration option is used by [@&open-telemetry#8203;spencermurray](https://togithub.com/spencermurray) in [https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280) - Update gqlparser and gqlgen dependencies by [@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/282](https://togithub.com/Khan/genqlient/pull/282) - Update gqlparser to omit comments by [@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/284](https://togithub.com/Khan/genqlient/pull/284) - bugfix: local variable 'data' colliding with argument name by [@&open-telemetry#8203;zholti](https://togithub.com/zholti) in [https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291) - Pin lint workflow's Go version by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/311](https://togithub.com/Khan/genqlient/pull/311) - Upgrade golangci-lint and which go we run it with by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/314](https://togithub.com/Khan/genqlient/pull/314) - fix implementation type generation for fragment on a union by [@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) in [https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310) - Support more valid graphql file extensions by [@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) in [https://github.com/Khan/genqlient/pull/309](https://togithub.com/Khan/genqlient/pull/309) - Add tests on Go 1.22, and upgrade x/tools to make them work by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/315](https://togithub.com/Khan/genqlient/pull/315) - Update gqlgen to latest by [@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/317](https://togithub.com/Khan/genqlient/pull/317) - move genqlient Go module to 1.20 by [@&open-telemetry#8203;StevenACoffman](https://togithub.com/StevenACoffman) in [https://github.com/Khan/genqlient/pull/318](https://togithub.com/Khan/genqlient/pull/318) - Improve package-sniffing and bind correctly to types in the same package by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/316](https://togithub.com/Khan/genqlient/pull/316) - Reorganize and improve documentation by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/322](https://togithub.com/Khan/genqlient/pull/322) - Fix non-deterministic generated code involving interfaces and fragments. by [@&open-telemetry#8203;csilvers](https://togithub.com/csilvers) in [https://github.com/Khan/genqlient/pull/323](https://togithub.com/Khan/genqlient/pull/323) - Release v0.7.0 by [@&open-telemetry#8203;benjaminjkraft](https://togithub.com/benjaminjkraft) in [https://github.com/Khan/genqlient/pull/324](https://togithub.com/Khan/genqlient/pull/324) #### New Contributors - [@&open-telemetry#8203;DylanRJohnston](https://togithub.com/DylanRJohnston) made their first contribution in [https://github.com/Khan/genqlient/pull/252](https://togithub.com/Khan/genqlient/pull/252) - [@&open-telemetry#8203;spencermurray](https://togithub.com/spencermurray) made their first contribution in [https://github.com/Khan/genqlient/pull/280](https://togithub.com/Khan/genqlient/pull/280) - [@&open-telemetry#8203;zholti](https://togithub.com/zholti) made their first contribution in [https://github.com/Khan/genqlient/pull/291](https://togithub.com/Khan/genqlient/pull/291) - [@&open-telemetry#8203;zzh8829](https://togithub.com/zzh8829) made their first contribution in [https://github.com/Khan/genqlient/pull/310](https://togithub.com/Khan/genqlient/pull/310) **Full Changelog**: Khan/genqlient@v0.6.0...v0.7.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: opentelemetrybot <[email protected]> Co-authored-by: Andrzej Stencel <[email protected]>
There are a bunch of places in genqlient where we just kind of hope you don't have ridiculous casing conflicts in your schema. Apparently with enum values there are actual schemas that have this problem! Now we have an option to disable. I ended up putting it all under
casing
instead of inbindings
so we can clearly document the list of algorithms we support, and so we can have anall_enums
value if you're working with a schema with a lot of this; in the future we may want to add similar behavior for types/fields, add more possible algorithms (e.g. to make things unexported), etc.I added tests for the new feature, although the way the tests are set up it wasn't convenient to do so for a schema where this is actually required. I also added a check for case conflicts that points you to this option. (I don't want to do it automatically for reasons described in the issue; mainly it just seemed a bit too magical.)
Fixes #265.
I have: