Check committed Go formatting
This commit is contained in:
17
docs/cli.md
17
docs/cli.md
@@ -27,6 +27,7 @@ captured local commit and version. It checks the committed release note and
|
||||
local Git state, runs the standard offline Go test suite (with `-race` when
|
||||
`validation.go.race` is true), and runs a separate `go vet -mod=readonly ./...`
|
||||
pass after successful tests when `validation.go.full_vet` is true. It then runs
|
||||
selected package compilation and committed Go formatting, followed by
|
||||
configured additional checks in profile order. It does not inspect remote
|
||||
availability or publish a tag.
|
||||
|
||||
@@ -34,7 +35,11 @@ When `validation.go.compile_targets` is selected, `check` compiles all packages
|
||||
for each configured `GOOS/GOARCH` pair after tests and full vet, using static
|
||||
mode with cgo disabled. This check produces no artifacts and does not execute
|
||||
target binaries. Compilation failures use the `package-compile` identity and
|
||||
show the selected target. Any artifact build selected by the separate `build`
|
||||
show the selected target. When `validation.go_format` is true, `check` examines
|
||||
regular committed Go files with the Go formatter after tests, vet, and package
|
||||
compilation. It includes vendor and nested-module source, ignores the worktree
|
||||
and symlink blobs, and reports unformatted paths as `go-format` without
|
||||
modifying files. Any artifact build selected by the separate `build`
|
||||
setting runs after shared validation and configured checks.
|
||||
|
||||
`check` writes errors and diagnostics to standard error. It returns status 0
|
||||
@@ -55,8 +60,9 @@ settings as `check`. It checks the authoritative remote and validates the
|
||||
candidate: the single standard offline Go test suite runs first, with `-race`
|
||||
when `validation.go.race` is true. When `validation.go.full_vet` is true,
|
||||
test-time vet is disabled and `go vet -mod=readonly ./...` runs after successful
|
||||
tests. Configured checks then run in profile order. It then creates an annotated
|
||||
local tag and pushes only its exact tag object. It prints the confirmed version,
|
||||
tests. Selected package compilation and committed Go formatting follow, then
|
||||
configured checks run in profile order. It then creates an annotated local tag
|
||||
and pushes only its exact tag object. It prints the confirmed version,
|
||||
candidate commit, and tag object
|
||||
on success. Validation
|
||||
progress and failed publication state, including the captured publication
|
||||
@@ -69,7 +75,10 @@ Shared validation failures use the same check and finding presentation as
|
||||
When `validation.go.compile_targets` is selected, package compilation runs
|
||||
after tests and full vet and before configured checks. Each failure is reported
|
||||
as `package-compile` with its selected target; this does not create build
|
||||
artifacts or execute target binaries.
|
||||
artifacts or execute target binaries. When `validation.go_format` is true,
|
||||
committed Go formatting runs after package compilation and before configured
|
||||
checks. A failure is reported as `go-format` with affected repository paths;
|
||||
parser and source-inspection causes are retained.
|
||||
|
||||
The optional profile field `expected_push_url` applies only to `publish`. A
|
||||
nonempty value must exactly match the effective push URL resolved by Git;
|
||||
|
||||
@@ -39,16 +39,25 @@ This source compatibility check does not name or produce binaries, run a target
|
||||
executable, or create an artifact manifest. Omitted or empty `compile_targets`
|
||||
selects no package-compilation pass. When `full_vet` is omitted or false, the
|
||||
test command keeps its existing vet behavior. These settings are independent.
|
||||
`validation.go_format` checks regular committed Go blobs with the Go formatter
|
||||
used to build ReleaseKit. It includes vendor and nested-module source, ignores
|
||||
symlink blobs and the worktree, and reports every selected path whose bytes
|
||||
change under formatting. It never writes formatted bytes back. Omitted or false
|
||||
disables the check. It runs after tests, selected full vet, and selected package
|
||||
compilation, before configured product checks.
|
||||
For example:
|
||||
|
||||
```json
|
||||
{
|
||||
"product": "Example",
|
||||
"validation": {"go": {
|
||||
"race": true,
|
||||
"full_vet": true,
|
||||
"compile_targets": ["linux/amd64", "linux/arm64"]
|
||||
}}
|
||||
"validation": {
|
||||
"go": {
|
||||
"race": true,
|
||||
"full_vet": true,
|
||||
"compile_targets": ["linux/amd64", "linux/arm64"]
|
||||
},
|
||||
"go_format": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -73,7 +82,9 @@ access disabled, adding `-race` when `validation.go.race` is true. When
|
||||
run native `go vet -mod=readonly ./...` after successful tests. They then run
|
||||
`go build -mod=readonly -o <os.DevNull> ./...` in static mode for each
|
||||
`validation.go.compile_targets` entry, in profile order. Compile failures use
|
||||
the `package-compile` identity and include the selected target. Configured
|
||||
the `package-compile` identity and include the selected target. When selected,
|
||||
`validation.go_format` checks regular committed Go source with go/format after
|
||||
package compilation; unformatted paths use the `go-format` identity. Configured
|
||||
`checks` commands run afterward, once each in order, as additional product
|
||||
checks. Artifact builds selected by the separate `build` setting run after
|
||||
shared validation and product checks.
|
||||
|
||||
@@ -36,6 +36,11 @@ complete target pair after tests and vet. Package compilation uses
|
||||
`CGO_ENABLED=0`, writes no artifact, and does not execute a target binary; its
|
||||
failures use the `package-compile` identity and include the target. The zero
|
||||
values retain the ordinary native test behavior and select no compilation.
|
||||
Set `Validation.GoFormat` to check committed regular Go files using the Go
|
||||
formatter built into ReleaseKit. It includes vendor and nested-module source,
|
||||
ignores symlink blobs and worktree changes, and reports unformatted paths as
|
||||
`go-format` without rewriting files. Its zero value disables the check; it runs
|
||||
after tests, selected vet, and package compilation, before `AdditionalChecks`.
|
||||
ReleaseKit calls `AdditionalChecks` once after shared validation when supplied.
|
||||
It does not download a different toolchain automatically. If race prerequisites
|
||||
are unavailable, the `go-test` check fails rather than being skipped; a selected
|
||||
|
||||
@@ -48,6 +48,13 @@ pair after tests and vet. This uses `CGO_ENABLED=0`, produces no artifact, and
|
||||
does not execute target binaries. A failure is reported as `package-compile`
|
||||
with the selected target and prevents tag creation.
|
||||
|
||||
Set `Validation.GoFormat` to check committed regular Go source using the Go
|
||||
formatter built into ReleaseKit. It includes vendor and nested modules, ignores
|
||||
worktree changes and symlink blobs, and reports unformatted paths as
|
||||
`go-format` without changing files. The default is disabled. The check follows
|
||||
tests, selected vet, and package compilation, and a failure stops publication
|
||||
before product checks or tag creation.
|
||||
|
||||
If `Build` selects targets, ReleaseKit verifies them after the standard suite
|
||||
and additional checks, before creating the tag. The operation then rechecks the
|
||||
candidate and remote guards, creates an annotated tag for the captured commit,
|
||||
|
||||
@@ -18,9 +18,13 @@ executing a target binary. Test, vet, and package-compilation failures retain
|
||||
their `go-test`, `go-vet`, and `package-compile` identities, selected target
|
||||
where applicable, and underlying causes. Its
|
||||
request carries the captured repository directory and commit, output writer,
|
||||
and internal settings. `Request.ReadCandidateTree` lets a
|
||||
selected file check request candidate contents; the Go-only path does not
|
||||
enumerate the tree.
|
||||
and internal settings. When selected, the Go-format check loads the candidate
|
||||
tree once, reads regular Go blobs from the captured commit, and compares them
|
||||
with go/format output. It includes vendor and nested-module files, skips
|
||||
symlink blobs, reports all unformatted paths, and stops with a contextual cause
|
||||
on parse or inspection errors. It runs before product checks and build callbacks.
|
||||
`Request.ReadCandidateTree` lets selected file checks request candidate
|
||||
contents; the Go-only path does not enumerate the tree.
|
||||
`CandidateTree` gets metadata and bytes from Git objects, reads blob bytes
|
||||
lazily, and resolves destinations without consulting the worktree or
|
||||
neighboring files.
|
||||
|
||||
@@ -318,6 +318,11 @@ Existing endpoint-change and uncertain-push tests keep their ownership.
|
||||
|
||||
## Stage 5: Check committed Go formatting
|
||||
|
||||
**Completion:** Complete. `ValidationSpec.GoFormat` and profile
|
||||
`validation.go_format` run `go/format` on regular Go blobs from the captured
|
||||
commit. Findings identify unformatted paths; parser and inspection failures
|
||||
retain their causes, and the check leaves repository contents unchanged.
|
||||
|
||||
**Outcome:** A declaration replaces tracked-file formatting loops.
|
||||
|
||||
1. Add `GoFormat` and `validation.go_format` with working executor integration.
|
||||
|
||||
Reference in New Issue
Block a user