diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-06 16:40:24 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-06 16:40:24 +0200 |
| commit | a1b48634add8c5cdd3d362b592bb6f6eb5bf69ee (patch) | |
| tree | 1b5f62b62cfd94a9b259b3fd3332d2ece88d7cff | |
| parent | 1d72e80ed340564c6c2d37366e20896aa00341e2 (diff) | |
fix: return fallback for unknown trace ids (task 383)
| -rw-r--r-- | internal/generate/typesgo.go | 4 | ||||
| -rw-r--r-- | internal/generate/typesgo_test.go | 2 | ||||
| -rw-r--r-- | internal/types/generated_types.go | 4 | ||||
| -rw-r--r-- | internal/types/types_test.go | 9 |
4 files changed, 14 insertions, 5 deletions
diff --git a/internal/generate/typesgo.go b/internal/generate/typesgo.go index ee24845..06ed49a 100644 --- a/internal/generate/typesgo.go +++ b/internal/generate/typesgo.go @@ -186,7 +186,7 @@ func writeTraceIdStringMethod(b *strings.Builder) { b.WriteString(`func (s TraceId) String() string { str, ok := traceId2String[s] if !ok { - panic(fmt.Sprintf("no string representation for trace ID %d found", s)) + return fmt.Sprintf("unknown_trace_id_%d", s) } return str } @@ -198,7 +198,7 @@ func writeTraceIdNameMethod(b *strings.Builder) { b.WriteString(`func (s TraceId) Name() string { str, ok := traceId2Name[s] if !ok { - panic(fmt.Sprintf("no name for trace ID %d found", s)) + return fmt.Sprintf("unknown_trace_id_%d", s) } return str } diff --git a/internal/generate/typesgo_test.go b/internal/generate/typesgo_test.go index 89dafa8..f600582 100644 --- a/internal/generate/typesgo_test.go +++ b/internal/generate/typesgo_test.go @@ -240,7 +240,7 @@ func TestGenerateTypesGoTraceIdMethods(t *testing.T) { requireContains(t, output, "func (s TraceId) String() string") requireContains(t, output, "func (s TraceId) Name() string") - requireContains(t, output, `panic(fmt.Sprintf("no string representation for trace ID %d found", s))`) + requireContains(t, output, `return fmt.Sprintf("unknown_trace_id_%d", s)`) } func TestGenerateTypesGoPackageDecl(t *testing.T) { diff --git a/internal/types/generated_types.go b/internal/types/generated_types.go index 9cdcc5b..1f4b9d8 100644 --- a/internal/types/generated_types.go +++ b/internal/types/generated_types.go @@ -22,7 +22,7 @@ var traceId2Name = map[TraceId]string{ func (s TraceId) String() string { str, ok := traceId2String[s] if !ok { - panic(fmt.Sprintf("no string representation for trace ID %d found", s)) + return fmt.Sprintf("unknown_trace_id_%d", s) } return str } @@ -30,7 +30,7 @@ func (s TraceId) String() string { func (s TraceId) Name() string { str, ok := traceId2Name[s] if !ok { - panic(fmt.Sprintf("no name for trace ID %d found", s)) + return fmt.Sprintf("unknown_trace_id_%d", s) } return str } diff --git a/internal/types/types_test.go b/internal/types/types_test.go index 6abebdb..8ba7367 100644 --- a/internal/types/types_test.go +++ b/internal/types/types_test.go @@ -1,6 +1,7 @@ package types import ( + "fmt" "syscall" "testing" ) @@ -156,6 +157,14 @@ func TestEqualsDifferentValues(t *testing.T) { t.Log("Equals returns false for same type but different values") } +func TestTraceIdUnknownFallback(t *testing.T) { + unknown := TraceId(0xFFFFFFFF) + want := fmt.Sprintf("unknown_trace_id_%d", unknown) + + assertEquals(t, want, unknown.String()) + assertEquals(t, want, unknown.Name()) +} + func assertEquals[T comparable](t *testing.T, a, b T) { if a != b { t.Errorf("Expected %v, got %v", a, b) |
