Skip to content

Commit 03ac35e

Browse files
authored
Merge pull request #44 from rekby/codex/analyze-code-and-suggest-interface-improvements
Gracefully handle nil returns in generic CacheResult
2 parents f66bbf7 + 0645939 commit 03ac35e

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

env_generic_sugar.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ func CacheResult[TRes any](env Env, f GenericFixtureFunction[TRes], options ...C
3232
return oldStyleRes, err
3333
}
3434
res := env.CacheResult(oldStyleFunc, cacheOptions)
35+
if res == nil {
36+
var zero TRes
37+
return zero
38+
}
3539
return res.(TRes)
3640
}
3741

env_generic_sugar_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,20 @@ func TestCacheResultGeneric(t *testing.T) {
5353
requireEquals(t, 1, f1())
5454
requireEquals(t, 2, f2())
5555
})
56+
t.Run("NilResultReturnsZeroValue", func(t *testing.T) {
57+
tMock := &internal.TestMock{TestName: t.Name(), SkipGoexit: true}
58+
env := New(tMock)
59+
calls := 0
60+
fixture := func() (*GenericResult[*int], error) {
61+
calls++
62+
return nil, nil
63+
}
64+
res1 := CacheResult(env, fixture)
65+
res2 := CacheResult(env, fixture)
66+
requireNil(t, res1)
67+
requireNil(t, res2)
68+
requireEquals(t, 1, calls)
69+
})
5670
}
5771

5872
func TestCacheResultPanic(t *testing.T) {

0 commit comments

Comments
 (0)