From cc93bdac3b8a5a1337584891aa682c92c082bc50 Mon Sep 17 00:00:00 2001 From: Stephen Cahill Date: Fri, 24 Apr 2026 16:23:44 -0400 Subject: [PATCH] fix(function-provider): sanitize colon in container name for tag+digest package refs When a function package ref has both a tag and a digest (e.g., func:v0.6.1-0@sha256:751a...), the SHA256 branch of generateContainerName split on @sha256: but left the colon from the tag in the function name, producing an invalid Docker container name. Signed-off-by: Stephen Cahill --- cmd/diff/diffprocessor/function_provider.go | 4 ++-- cmd/diff/diffprocessor/function_provider_test.go | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cmd/diff/diffprocessor/function_provider.go b/cmd/diff/diffprocessor/function_provider.go index 488850f2..9b8a5809 100644 --- a/cmd/diff/diffprocessor/function_provider.go +++ b/cmd/diff/diffprocessor/function_provider.go @@ -275,8 +275,8 @@ func generateContainerName(pkg, instanceID string) string { // Handle SHA256 digest references: name@sha256:digest // Extract just the function name and a truncated digest if before, after, ok := strings.Cut(nameAndVersion, "@sha256:"); ok { - funcName := before - digest := after // Skip "@sha256:" + funcName := strings.ReplaceAll(before, ":", "-") + digest := after // Use first 12 chars of digest (like Docker short image IDs) if len(digest) > 12 { diff --git a/cmd/diff/diffprocessor/function_provider_test.go b/cmd/diff/diffprocessor/function_provider_test.go index 7b17bb99..6df98267 100644 --- a/cmd/diff/diffprocessor/function_provider_test.go +++ b/cmd/diff/diffprocessor/function_provider_test.go @@ -545,6 +545,10 @@ func TestGenerateContainerName(t *testing.T) { pkg: "xpkg.io/test/function@sha256:abc123", want: "function-abc123-comp-test1234", }, + "TagAndDigest": { + pkg: "registry.io/path/function-auto-ready:v0.6.1-0@sha256:751a4afb65f1abcdef1234567890abcdef1234567890abcdef1234567890abcd", + want: "function-auto-ready-v0.6.1-0-751a4afb65f1-comp-test1234", + }, } for name, tt := range tests {