mirror of https://github.com/go-gitea/gitea.git
Browse Source
Backport #35198 by @lunny Fix #31113 After #22385 introduced LFS GC, it never worked due to a bug in the INI library: fields in structs embedded more than one level deep are not populated from the INI file. This PR fixes the issue by replacing the multi-level embedded struct with a single-level struct for parsing the cron.gc_lfs configuration. Added a new test for retrieving cron settings to demonstrate the bug in the INI package. Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>pull/35261/head
3 changed files with 126 additions and 21 deletions
@ -0,0 +1,51 @@
@@ -0,0 +1,51 @@
|
||||
// Copyright 2025 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package cron |
||||
|
||||
import ( |
||||
"testing" |
||||
"time" |
||||
|
||||
"code.gitea.io/gitea/modules/setting" |
||||
"code.gitea.io/gitea/modules/test" |
||||
|
||||
"github.com/stretchr/testify/assert" |
||||
) |
||||
|
||||
func Test_GCLFSConfig(t *testing.T) { |
||||
cfg, err := setting.NewConfigProviderFromData(` |
||||
[cron.gc_lfs] |
||||
ENABLED = true |
||||
RUN_AT_START = true |
||||
SCHEDULE = "@every 2h" |
||||
OLDER_THAN = "1h" |
||||
LAST_UPDATED_MORE_THAN_AGO = "7h" |
||||
NUMBER_TO_CHECK_PER_REPO = 10 |
||||
PROPORTION_TO_CHECK_PER_REPO = 0.1 |
||||
`) |
||||
assert.NoError(t, err) |
||||
defer test.MockVariableValue(&setting.CfgProvider, cfg)() |
||||
|
||||
config := &GCLFSConfig{ |
||||
BaseConfig: BaseConfig{ |
||||
Enabled: false, |
||||
RunAtStart: false, |
||||
Schedule: "@every 24h", |
||||
}, |
||||
OlderThan: 24 * time.Hour * 7, |
||||
LastUpdatedMoreThanAgo: 24 * time.Hour * 3, |
||||
NumberToCheckPerRepo: 100, |
||||
ProportionToCheckPerRepo: 0.6, |
||||
} |
||||
|
||||
_, err = setting.GetCronSettings("gc_lfs", config) |
||||
assert.NoError(t, err) |
||||
assert.True(t, config.Enabled) |
||||
assert.True(t, config.RunAtStart) |
||||
assert.Equal(t, "@every 2h", config.Schedule) |
||||
assert.Equal(t, 1*time.Hour, config.OlderThan) |
||||
assert.Equal(t, 7*time.Hour, config.LastUpdatedMoreThanAgo) |
||||
assert.Equal(t, int64(10), config.NumberToCheckPerRepo) |
||||
assert.InDelta(t, 0.1, config.ProportionToCheckPerRepo, 0.001) |
||||
} |
||||
Loading…
Reference in new issue