From e68b9d00a6e05b3a941f63ffb696f91e554ac5ec Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 18 Oct 2024 20:33:49 +0200 Subject: Adding upstream version 9.0.3. Signed-off-by: Daniel Baumann --- modules/cache/context_test.go | 79 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 modules/cache/context_test.go (limited to 'modules/cache/context_test.go') diff --git a/modules/cache/context_test.go b/modules/cache/context_test.go new file mode 100644 index 0000000..072c394 --- /dev/null +++ b/modules/cache/context_test.go @@ -0,0 +1,79 @@ +// Copyright 2022 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package cache + +import ( + "context" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestWithCacheContext(t *testing.T) { + ctx := WithCacheContext(context.Background()) + + v := GetContextData(ctx, "empty_field", "my_config1") + assert.Nil(t, v) + + const field = "system_setting" + v = GetContextData(ctx, field, "my_config1") + assert.Nil(t, v) + SetContextData(ctx, field, "my_config1", 1) + v = GetContextData(ctx, field, "my_config1") + assert.NotNil(t, v) + assert.EqualValues(t, 1, v.(int)) + + RemoveContextData(ctx, field, "my_config1") + RemoveContextData(ctx, field, "my_config2") // remove a non-exist key + + v = GetContextData(ctx, field, "my_config1") + assert.Nil(t, v) + + vInt, err := GetWithContextCache(ctx, field, "my_config1", func() (int, error) { + return 1, nil + }) + require.NoError(t, err) + assert.EqualValues(t, 1, vInt) + + v = GetContextData(ctx, field, "my_config1") + assert.EqualValues(t, 1, v) + + now := timeNow + defer func() { + timeNow = now + }() + timeNow = func() time.Time { + return now().Add(5 * time.Minute) + } + v = GetContextData(ctx, field, "my_config1") + assert.Nil(t, v) +} + +func TestWithNoCacheContext(t *testing.T) { + ctx := context.Background() + + const field = "system_setting" + + v := GetContextData(ctx, field, "my_config1") + assert.Nil(t, v) + SetContextData(ctx, field, "my_config1", 1) + v = GetContextData(ctx, field, "my_config1") + assert.Nil(t, v) // still no cache + + ctx = WithCacheContext(ctx) + v = GetContextData(ctx, field, "my_config1") + assert.Nil(t, v) + SetContextData(ctx, field, "my_config1", 1) + v = GetContextData(ctx, field, "my_config1") + assert.NotNil(t, v) + + ctx = WithNoCacheContext(ctx) + v = GetContextData(ctx, field, "my_config1") + assert.Nil(t, v) + SetContextData(ctx, field, "my_config1", 1) + v = GetContextData(ctx, field, "my_config1") + assert.Nil(t, v) // still no cache +} -- cgit v1.2.3