[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/log/RFC.md fully. Find ONE feature ... #16

Merged
Virgil merged 1 commit from agent/read---spec-code-core-go-log-rfc-md-full into dev 2026-04-01 04:56:03 +00:00
2 changed files with 21 additions and 6 deletions

View file

@ -137,9 +137,6 @@ func WrapWithRecovery(err error, op, msg string, retryable bool, retryAfter *tim
//
// return log.WrapCode(err, "VALIDATION_ERROR", "user.Validate", "invalid email")
func WrapCode(err error, code, op, msg string) error {
if code == "" {
code = ErrCode(err)
}
if err == nil && code == "" {
return nil
}
@ -152,9 +149,6 @@ func WrapCode(err error, code, op, msg string) error {
//
// return log.WrapCodeWithRecovery(err, "TEMPORARY_UNAVAILABLE", "api.Call", "temporary failure", true, &retryAfter, "retry with backoff")
func WrapCodeWithRecovery(err error, code, op, msg string, retryable bool, retryAfter *time.Duration, nextAction string) error {
if code == "" {
code = ErrCode(err)
}
if err == nil && code == "" {
return nil
}

View file

@ -165,6 +165,16 @@ func TestWrapCode_Good(t *testing.T) {
assert.Contains(t, err.Error(), "[INVALID_INPUT]")
}
func TestWrapCode_Good_EmptyCodeDoesNotInherit(t *testing.T) {
inner := WrapCode(errors.New("base"), "INNER_CODE", "inner.Op", "inner failed")
outer := WrapCode(inner, "", "outer.Op", "outer failed")
var logErr *Err
assert.True(t, As(outer, &logErr))
assert.Equal(t, "", logErr.Code)
}
func TestWrapCodeWithRecovery_Good(t *testing.T) {
retryAfter := time.Minute
err := WrapCodeWithRecovery(errors.New("validation failed"), "INVALID_INPUT", "api.Validate", "bad request", true, &retryAfter, "retry with backoff")
@ -179,6 +189,17 @@ func TestWrapCodeWithRecovery_Good(t *testing.T) {
assert.Equal(t, "INVALID_INPUT", logErr.Code)
}
func TestWrapCodeWithRecovery_Good_EmptyCodeDoesNotInherit(t *testing.T) {
retryAfter := time.Minute
inner := WrapCodeWithRecovery(errors.New("validation failed"), "INNER_CODE", "inner.Op", "inner failed", true, &retryAfter, "retry later")
outer := WrapCodeWithRecovery(inner, "", "outer.Op", "outer failed", true, &retryAfter, "retry later")
var logErr *Err
assert.True(t, As(outer, &logErr))
assert.Equal(t, "", logErr.Code)
}
func TestWrapCode_Good_NilError(t *testing.T) {
// WrapCode with nil error but with code still creates an error
err := WrapCode(nil, "CODE", "op", "msg")