fix: identify submitted server version in publish diagnostics (#1621)

Publishing a manifest with a stale version currently produces a
duplicate-version error without identifying the version that was
submitted. This made a request containing `0.4.5` look like a rejected
publication of `0.4.6` in #1615.

Include the submitted `name@version` in the CLI output before sending
the request and in the API duplicate-version error. HTTP 400, the
response structure, and duplicate-rejection behavior remain unchanged.
The service wraps the existing error sentinel so `errors.Is` continues
to work.

Adds a CLI regression test for a failed publication and updates the API
duplicate-error assertion.

Validation:
- Publish command tests passed (`go test ./cmd/publisher/commands -run
TestPublishCommand -count=1`).
- `git diff --check` passed.
- API endpoint tests were attempted but could not run because PostgreSQL
was unavailable on localhost:5432; Docker was also unavailable locally.

Related to #1615.
This commit is contained in:
Radoslav Dimitrov 2026-09-06 00:18:27 +03:00 • committed by GitHub
commit 068a97a2f8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -168,7 +168,7 @@ func TestPublishEndpoint(t *testing.T) {
expectedError: "You do not have permission to publish this server",
},
{
name: "registry service error",
name: "duplicate version includes submitted server identity",
requestBody: apiv0.ServerJSON{
Schema: model.CurrentSchemaURL,
Name: "example/test-server",
@ -202,7 +202,7 @@ func TestPublishEndpoint(t *testing.T) {
_, _ = registry.CreateServer(context.Background(), &existingServer)
},
expectedStatus: http.StatusBadRequest,
expectedError: "invalid version: cannot publish duplicate version",
expectedError: "invalid version: cannot publish duplicate version: example/test-server@1.0.0 already exists",
},
{
name: "package validation success - MCPB package",