Sync examples for the Goa v3.31.0 generation upgrade - #219
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The examples now use the generation changes being promoted in goadesign/goa#3971. All 19 Go modules pin the reviewed Goa candidate, and generated packages and handwritten callers are updated together. This prepares
mainfor the coordinated v3.31.0 release; the release workflow will replace the candidate pins with the stable tag.Multipart implementations now populate generated request bodies before Goa validates and constructs service payloads. Interceptors accept the generated read-only information interfaces. Commands use the new execution helpers, and protobuf and HTTP code use the selected views, field-presence rules, and final generated names. The HTTP-status example selects tagged responses explicitly while keeping one default response.
The examples retain their useful custom behavior: the error example demonstrates a custom validation response while preserving the designed divide-by-zero body; CBOR uses the documented transport codec; and streaming loops stop when their input closes. The tus example reads Content-Type from its typed payload and removes resumable state when an upload is terminated, including completed uploads.
The stable branch's dependency updates are included. The README links to the Goa upgrade guide and states the existing Go 1.26 requirement. Applications copying these examples must use matching Goa versions and regenerate the complete generated tree. Update handwritten multipart, interceptor, and command code rather than mixing old and new generated files. Coordinate client/server deployment for the changed exchanges listed in the upgrade guide. Rollback restores the old dependency, generated tree, and matching handwritten callers; no repository data migration is required.
Validation: every module was built and tested against Goa commit
f03a5d261cc4f010b02595febcb7eb4c33fbbeb3. Generation, lint, and tests pass for all examples with Makefiles; the HTTP-status example was regenerated and tested, and the tracing command module was tested against its referenced example packages. The tus termination test covers both active and completed uploads. CI must pass before merge.Review the multipart and interceptor implementations, HTTP-status design, tus design/implementation/test, and command changes alongside their generated signatures. Generated files were regenerated with Goa, not edited by hand.