omni/internal/pkg/cache/cache_test.go
Edward Sammut Alessi d3ae77c0cc
chore: bump copyright to 2026
Bump copyright for conformance to 2026

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-01-21 15:30:49 +01:00

43 lines
970 B
Go

// Copyright (c) 2026 Sidero Labs, Inc.
//
// Use of this software is governed by the Business Source License
// included in the LICENSE file.
package cache_test
import (
"errors"
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/siderolabs/omni/internal/pkg/cache"
)
func TestResultCacher_GetOrUpdate(t *testing.T) {
cacher := cache.Value[int]{Duration: time.Second}
result, err := cacher.GetOrUpdate(func() (int, error) { return 42, errors.New("test") })
require.EqualError(t, err, "test")
require.Zero(t, result)
result, err = cacher.GetOrUpdate(func() (int, error) { return 42, nil })
require.NoError(t, err)
require.Equal(t, 42, result)
result, err = cacher.GetOrUpdate(func() (int, error) { return 43, nil })
require.NoError(t, err)
require.Equal(t, 42, result)
time.Sleep(time.Second)
result, err = cacher.GetOrUpdate(func() (int, error) { return 43, nil })
require.NoError(t, err)
require.Equal(t, 43, result)
}