github.com/anchore/syft@v1.38.2/internal/cache/error_resolver_test.go (about) 1 package cache 2 3 import ( 4 "fmt" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/require" 9 ) 10 11 func Test_errorResolver(t *testing.T) { 12 original := GetManager() 13 defer SetManager(original) 14 SetManager(NewInMemory(time.Hour)) 15 16 resolver := GetResolverCachingErrors[string]("theCache", "theVersion") 17 18 resolveCount := 0 19 resolveFunc := func() (string, error) { 20 resolveCount++ 21 return "theValue", nil 22 } 23 24 val, err := resolver.Resolve("theKey", resolveFunc) 25 require.NoError(t, err) 26 require.Equal(t, 1, resolveCount) 27 require.Equal(t, "theValue", val) 28 29 val, err = resolver.Resolve("theKey", resolveFunc) 30 require.NoError(t, err) 31 require.Equal(t, 1, resolveCount) 32 require.Equal(t, "theValue", val) 33 34 errorCount := 0 35 errorFunc := func() (string, error) { 36 errorCount++ 37 return "", fmt.Errorf("an error") 38 } 39 40 _, err = resolver.Resolve("errorValue", errorFunc) 41 require.ErrorContains(t, err, "an error") 42 require.Equal(t, 1, errorCount) 43 44 _, err = resolver.Resolve("errorValue", errorFunc) 45 require.ErrorContains(t, err, "an error") 46 require.Equal(t, 1, errorCount) 47 }