fix(labels): allow setting 'uncloud.' prefixed labels on services using a client but not CLI or Compose

This commit is contained in:
Pasha Sviderski
2026-11-04 13:51:53 +10:00
parent 78facdfcc6
commit 76b04dd56c
6 changed files with 93 additions and 9 deletions
+36
View File
@@ -950,6 +950,42 @@ services:
}
}
func TestServiceSpecFromCompose_InvalidServiceLabels(t *testing.T) {
t.Parallel()
tests := []struct {
name string
label string
wantErr string
}{
{name: "reserved prefix", label: api.LabelManaged, wantErr: "reserved prefix"},
{name: "reserved daemon prefix", label: "uncloudd.foo", wantErr: "reserved prefix"},
{name: "managed service", label: api.LabelReservedPrefix + "service.managed", wantErr: "reserved prefix"},
{name: "whitespace in key", label: "my label", wantErr: "must not contain whitespace"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
composeYAML := `
services:
web:
image: nginx
deploy:
labels:
- ` + tt.label + `=value
`
project, err := LoadProjectFromContent(context.Background(), composeYAML)
require.NoError(t, err)
_, err = ServiceSpecFromCompose(project, "web")
require.ErrorContains(t, err, "invalid deploy.labels")
require.ErrorContains(t, err, tt.wantErr)
})
}
}
func TestServiceSpecFromCompose_UpdateConfig(t *testing.T) {
t.Parallel()